Electronでドロップアイコンを作る。(Win版)

Electron

jsとhtmlとcssでアプリが作れるElectronによるドロップアイコンを作る、のwindows版です。アイコンにファイルをドロップしてアプリケーションにファイルの情報を渡すシステムを使用した具体的な完成されたアプリケーションはこちらの記事をご参照ください。

macの場合はwill-finish-launchingイベントとopen-fileイベントでアイコンにファイルがドラッグされるのを待ってドラッグされたらコールバックでドラッグされたファイルを受け取りました。しかしこれらのイベント、ドキュメントを見るとわかるのですがopen-fileイベントはmac OSのみでwindowsではprocess.argvから受け取れます。今回レンダラープロセスに受け取ったファイル情報を渡したいのでレンダラープロセスの準備ができてからファイルを渡したいです。(レンダラープロセスとメインプロセスの通信は今回詳しく触れませんがドロップ機能実装自体に直接関係ないです。)

process.argvからファイル情報を受け取ってレンダラープロセスに送っています。それでこれで完成かと言うとそうではなくmac同様このままだと既にウインドウが立ち上がっている場合も二つ目のウインドウが新しく立ち上がってしまいます。二重にウインドウが開いく事を防止するためにはapp.requestSingleInstanceLockメソッドを使用します。

second-instanceイベントで二つ目のウインドウが立ち上がろうとした時のイベントも実装します。この時app.requestSingleInstanceLockメソッドでウインドウが立ち上がる事自体を防ぎきます。このイベントもコールバックでドロップされたファイル情報を受け取ることが可能です。こちらでもファイル情報をレンダラーに送信しています。ウインドウがまだ立ち上がっていない時、既に立ち上がっている時の二つの状態を想定したイベントを実装しておきました。最後にmacとwinの両環境で動くコードを載せておきます。

Beer 寄付してサイトを応援する。