Включите один экземпляр приложения для электроники в Windows, но сделайте так, чтобы программа запуска открыла новое окно - PullRequest
0 голосов
/ 25 марта 2020

Я хочу использовать единый экземпляр для моего электронного приложения. Когда пользователь щелкает значок ярлыка приложения на Windows, я хочу включить один экземпляр, но при этом все равно открывается новое окно на главном экземпляре.

Все остальные текущие решения, похоже, просто выходят из нового экземпляра и перефокусируют текущий экземпляр.

  const singleInstanceLock = app.requestSingleInstanceLock();
  if (!singleInstanceLock) {

    app.exit();
  } else {
    app.focus();
  }

  app.on('second-instance', (_event: Electron.Event, argv: string[]) => {

     app.focus();
  
     // code to open up second window lives here. As far as I can tell, it doesnt get called
  });

1 Ответ

0 голосов
/ 28 марта 2020

app.exit(); Более сложный способ выхода из приложения, которое закрывает все экземпляры Electron, а не только текущий.

Попробуйте использовать app.quit().

Также отдельно я бы перестроил ваш код так, чтобы он был таким:

const singleInstanceLock = app.requestSingleInstanceLock();
if (!singleInstanceLock) {

  app.quit();
} else {
  app.on('second-instance', (_event: Electron.Event, argv: string[]) => {

     app.focus();

     // Code to open up second window goes here.
  });
}

Замена вашего первого app.focus() на app.on('second-instance'.

Это потому, что вы работаете app.requestSingleInstanceLock() при первом запуске приложения (как и должно быть), но выполнение app.focus() ничего бы не сделало, поскольку приложение только что открылось, и не было бы windows для фокусировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...