Chapter 10無料公開

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

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

https://www.electronjs.org/docs/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');
};