Я думаю, у меня есть ответ.
Это не должно вызываться в процессе визуализации.
Вместо этого мы должны использовать mainWindow в главном процессе для такой операции и метод 'close' жизненного цикла, который будет вызываться непосредственно перед закрытием.
this.mainWindow.on('close', (e) => {
const choice = this.dialog.showMessageBox(
this.mainWindow,
{
type: 'question',
buttons: ['Yes', 'No, hang on', 'third option'],
title: 'Confirm your actions',
message: 'Do you really want to close the application?'
}
);
console.log('CHOICE: ', choice);
if (choice > 0) e.preventDefault();
});
choice const вернет ответ из массива кнопок, поэтому в качестве подтверждения будет «Да», а для других параметров мы можем предотвратить действия.
ПРИМЕЧАНИЕ: я вставил this.
из моего кода, но, очевидно, mainWindow
- это ваш BrowserWindow
экземпляр, а this.dialog
- это electron.dialog
, импортированный из import electron from 'electron';