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...プロセスの識別状態