 dialog.showMessageBoxSync(getCurrentWindow(), {
        type: "question",
        title: "test title",
        message: "test message",
        buttons: ["OK", "Cancel"],
        defaultId: 0,
        cancelId: 1,
        noLink: true
    })
shell/browser/ui/message_box_win.cc
electron::UnresponsiveSuppressor suppressor;
  DialogResult result = ShowTaskDialogUTF8(settings);
  return result.first;
}
void ShowMessageBox(const MessageBoxSettings& settings,
                    MessageBoxCallback callback) {
  auto thread =
      std::make_unique<base::Thread>(ELECTRON_PRODUCT_NAME "MessageBoxThread");
  thread->init_com_with_mta(false);
  if (!thread->Start()) {
    std::move(callback).Run(settings.cancel_id, settings.checkbox_checked);
    return;
  }
  base::Thread* unretained = thread.release();
  unretained->task_runner()->PostTask(
      FROM_HERE,
      base::BindOnce(&RunMessageBoxInNewThread, base::Unretained(unretained),
                     settings, std::move(callback)));
}
void ShowErrorBox(const base::string16& title, const base::string16& content) {
  electron::UnresponsiveSuppressor suppressor;
  ShowTaskDialogUTF16(nullptr, MessageBoxType::kError, {}, -1, 0, 0, L"Error",
                      title, content, L"", false, gfx::ImageSkia());
}
}