js-ctypes 学習:外部プログラムの実行

2017-03-18 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-03-17)の記事「js-ctypes 学習:画像ファイルの入力」に続いて、
SpiderMonkey /js-ctypes の学習継続。

今回は、
外部プログラムの実行について。

Luaでは、
昨年3月(2016-03-01)の記事「GSL Shell 学習:外部プログラムの実行」で書いた、
  os.execute

Pythonでは、
3年前(2014-03-10)の記事「Python 学習:system関数?」で書いた、
  subprocess モジュール

Perlでは、
4年前(2013-08-03)の記事「PerlからRを使ってグラフ出力」で書いた、
  system( ) 関数


「Win32API open exe」で検索してみた。
例の“Stack Overflow”の、
winapi - win32 API for running other exe」が真っ先に見つかる。

回答の[2] に、
  The windows CreateProcess API call is what you're looking for: ~~~


「CreateProcess 使い方」で検索したら、
外部プロセスの起動」が見つかる。

  ・・・・・
  ・・・・・
  2.CreateProcess関数
  外部プロセス起動Windows APIとしては WinExec関数がある。

UINT WinExec(
LPCSTR lpCmdLine, // コマンドラインへのポインタ
UINT uCmdShow // ウィンドウの表示状態
);
  第二引数を SW_SHOW とすればコマンドプロンプト画面が表示され、
  SW_HIDE とすれば表示されない。
  しかし、この関数は Windows の以前のバージョンとの互換性のために
  残されているものであり、Win32 アプリケーションでは、
  CreateProcess 関数を使うことが推奨されている。
  下に使用例を示す。CreateProcess関数はWinExec関数より高い機能を持つ
  代わりに、使い方が少々面倒である。
  ・・・・・
  ・・・・・

まあ、
もし使っていいものなら、これで十分ダ。

MSDN:WinExec

内容は、上記参照記事と一緒。

気になるのは、“SW_SHOW”“SW_HIDE”の値。
でも、“SW_SHOW”ダケ知りたい。(“SW_HIDE”は要らない)
これについては、
1月(2017-01-30)の記事「Win32 APIの定数:定義は?」で書いた、
ダウンロードした const.lzh 書庫ファイル にある。
  $00000005
とありました。
つまり、
  0x00000005 == 5
ですネ。

なお、“WinExec”がどの DLL に含まれるのかは、
1月(2017-01-23)の記事「クライアント/サーバ:プロセス間通信」を
書いたときに参照(学習)したサイトの内の
 ・PInvoke.net

これで調べる(検索する)と、“kernel32”とあった。


と云うことで、

1本作った:
// ---------- test_WinExec.js -----
var lib = ctypes.open( 'kernel32' );

var WinExec = lib.declare( 'WinExec', ctypes.winapi_abi, ctypes.uint32_t,
ctypes.char.ptr, ctypes.uint32_t );
var ret = WinExec( 'notepad a.txt', 5 );
print( ret ); // 確認の為

lib.close();
var str = readline();
これで、“メモ帳”が立ち上がって、'a.txt' を開いている。


本日はここまで。


SpiderMonkey ( JavaScript/js-ctypes ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170215
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク