Chapter 10

すでにアプリが起動しているときに関連付けファイルが開かれた場合 (app 'open-file' event)

Kei Touge
Kei Touge
2022.05.28に更新
このチャプターの目次

https://www.electronjs.org/ja/docs/latest/api/app#イベント

Windows の場合

Windows では、新しいインスタンスが生成され、そのウィンドウが開かれる。

すでに起動しているウィンドウを再利用させたい場合は、requestSingleInstanceLock() メソッドを利用する。

macOS の場合

macOS では、open-file イベントが発火し、すでに存在している BrowerWindow インスタンスが再利用される。

app.js
const createWindow = () => {
  const mainWindow = new BrowserWindow();

  app.on('open-file', (e, filepath) => {
    // 必須!
    e.preventDefault();

    // ウィンドウが最小化されていたらレストアしてフォーカスを当てる
    if (mainWindow.isMinimized()) mainWindow.restore();
    mainWindow.focus();

    // イベントの第2引数へファイルパスが与えられている
    console.log(`open-file event: ${filepath}`);
  });

  mainWindow.loadFile('index.html');
};