tabimoba.net

とあるエンジニアの雑記帳

Electronでコマンドライン引数を取得してRenderProcess受け渡す簡単な方法

はじめに

ElectronにおけるBrowserWindowオブジェクトのloadURLには、index.htmlのように通常ファイル名を代入しますが、必ずしもファイル名である必要は無く、index.html#hoge01(アンカー)や、index.html?hoge=01(GET引数)を代入することも可能です。

したがって、単にコマンドラインから受け取った引数をRenderProcessに受け渡すだけであれば、プロセス間通信を行う必要はありません。

以下のサンプルコードは、「electron . --arg=01」のように--argというコマンドライン引数に01が代入されていた場合に、index.html#arg01というURLをloadURLに代入しています。

サンプルコード

'use strict';

var app = require('app');
var BrowserWindow = require('browser-window');

var mainWindow = null;
var url = null;
var ref = null;

app.on('window-all-closed', function() {
  if (process.platform != 'darwin') {
    app.quit();
  }
});

app.on('ready', function() {

  url = 'file://' + __dirname + '/index.html';
  ref = '';
  for (var i = 0; i < 20; i++) {
      if (process.argv[i] !== undefined) {
          if (process.argv[i].indexOf("--arg=") != -1) {
              ref = process.argv[i].replace("--arg=","");
              url = url + '#arg' + ref;
          }
      }
  }
  
  mainWindow = new BrowserWindow({width: 800, height: 600});
  mainWindow.loadURL(url);
  mainWindow.on('closed', function() {
    mainWindow = null;
  });
});