Deno.run()でコマンドラインなどの機能を利用できますが、Deno.runから呼び出されたアプリケーションはバックグラウンドでしか動作できないっぽいです。
Deno.runからエクスプローラやExcelなどを起動したい場合のサンプルが以下。
Deno.runからエクスプローラやExcelなどを起動したい場合のサンプルが以下。
例えば「Deno.run({cmd:["notepad"]})」とした場合、新しいメモ帳が画面上に表示されることはありません。
タスクマネージャでnotepadのプロセスが起動していないか確認してみましたが、起動していませんでした。
「WScript.Sleep(1000 * 60)」とするだけの「test.js」を作成し、「Deno.run({cmd:["cscript", "test.js"]})」を実行したところ、1分間はcscriptのプロセスが起動している事がタスクマネージャから確認できましたが、ウィンドウは表示されませんでした。
エクスプローラなども同様。
しかしcscriptを経由すれば表示できる事を動作確認しました。
外部アプリケーションを起動したいだけの場合は「stdout : 'piped'」や「await p.output()」は不要ですが、これが無いと外部アプリケーションが起動する前にdenoが終了してしまうせいか外部アプリケーションも起動しなくなってしまうので、標準出力を読み込むまでdenoに待機させる目的で入れてあります。
それ以外の方法でdenoの処理が継続するプログラムの場合は省略してもOK、な筈。
実行結果
タスクマネージャでnotepadのプロセスが起動していないか確認してみましたが、起動していませんでした。
「WScript.Sleep(1000 * 60)」とするだけの「test.js」を作成し、「Deno.run({cmd:["cscript", "test.js"]})」を実行したところ、1分間はcscriptのプロセスが起動している事がタスクマネージャから確認できましたが、ウィンドウは表示されませんでした。
エクスプローラなども同様。
しかしcscriptを経由すれば表示できる事を動作確認しました。
外部アプリケーションを起動したいだけの場合は「stdout : 'piped'」や「await p.output()」は不要ですが、これが無いと外部アプリケーションが起動する前にdenoが終了してしまうせいか外部アプリケーションも起動しなくなってしまうので、標準出力を読み込むまでdenoに待機させる目的で入れてあります。
それ以外の方法でdenoの処理が継続するプログラムの場合は省略してもOK、な筈。
実行結果
0 件のコメント:
コメントを投稿