CreateProcess の使い方

CreateProcess APIは他のアプリを起動するAPIです。
設定する引数のひとつ StartupInfoの設定個所が多いのが難点です。

■ CreateProcess の例
var
   infProcess :    TProcessInformation;
   infStartup :    TStartupInfo;
begin
   with  infStartup   do
   begin
     cb              :=  SizeOf(infStartup);  //STARTUPINFO構造体のサイズ
     lpReserved      :=  nil;                 //予約領域
     lpDesktop       :=  nil;                 //プロセスを開始したデスクトップ(??)
     lpTitle         :=  nil;                 //タイトル ※nilでないといけない
     dwX             :=  ClientOrigin.X;      //新しいウィンドウの位置
     dwY             :=  ClientOrigin.Y;      //新しいウィンドウの位置
     dwXSize         :=  ClientWidth;         //新しいウィンドウの幅
     dwYSize         :=  ClientHeight;        //新しいウィンドウの高さ
     dwXCountChars   :=  0;                   //スクリーンバッファの幅(GUIでは無視)
     dwYCountChars   :=  0;                   //スクリーンバッファの高さ(GUIでは無視)
     dwFillAttribute :=  0;                   //背景色(GUIでは無視)
     dwFlags         :=  STARTF_USESIZE or STARTF_USEPOSITION; //ウィンドウ作成指示
     wShowWindow     :=  SW_SHOWDEFAULT;      //ウィンドウ表示
     cbReserved2     :=  0;                   //予約領域
     lpReserved2     :=  nil;                 //予約領域
     hStdInput       :=  0;                   //STARTF_USESTDHANDLESの設定
     hStdOutput      :=  0;                   //STARTF_USESTDHANDLESの設定
     hStdError       :=  0;                   //STARTF_USESTDHANDLESの設定
   end;
   CreateProcess (PChar('c:\Borland\Delphi3.exe'), '', nil, nil, False, 0, nil, PChar('c:\Borland\'), infStartup, infProcess);
end;



CreateProcessの各引数

1....起動するプログラムパス
2....コマンドライン引数
3....プロセスのセキュリティ属性
4....スレッドのセキュリティ属性
5....プロセスのハンドル継承の有無
6....優先順位とプロセス制御
7....環境ブロックのポインタ
8....カレントフォルダ
9....表示状態
10...プロセスの識別状態