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