まずは下のC++のソースをご覧ください。
------------------------------------------------
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo = { 0 };
printf ("Start of Proc\n");
CreateProcess ( NULL, "c:\proc01.exe", NULL, NULL, FALSE,
0, NULL, NULL, &StartupInfo, &ProcessInfo)
printf ("End of Proc\n");
------------------------------------------------
この処理でCreateProcessで指定された"c:\proc01.exe"が起動されて
終了した時に、下のprintf()関数が実行されるのようにしたいのですが、
そのような処理をするAPI関数、またはC++関数をご存知ないでしょうか?
No.1
- 回答日時:
終了されたか調べるのではなくて終了するまで待つんじゃないでしょうか?
VBで出来るんでCでも大丈夫だと思いますけど。
CreateProcessの引数で待ちみたいなのって無いのでしょうか?
No.2ベストアンサー
- 回答日時:
WaitForSingleObject(...)を使ってみてください。
CreateProcess()の最後の引数であるProcessInfo構造体のhProcessを
WaitForSingleObject()に渡してやります。
例:
以下は、StartupInfoおよびProcessInfoが正常に確保・初期化されていることが
前提です。確保・初期化されていなければ希望の動作はしません。
...
printf ("Start of Proc\n");
CreateProcess ( NULL, "c:\proc01.exe", NULL, NULL, FALSE,
0, NULL, NULL, &StartupInfo, &ProcessInfo);
// proc01.exe起動待ち
// proc01.exeがシグナル状態になるのを待ちます
// 状況によっては省略化
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
// proc01.exe終了待ち
// 上の逆で、proc01.exeが非シグナル状態になるのを待ちます
while(1)
{
if(WaitForSingleObject(ProcessInfo.hProcess, 1)!=WAIT_OBJECT_0)
break;
}
printf ("End of Proc\n");
...
各関数の詳細は、VC++オンラインヘルプ(MSDN)で確認してください。
PS
FindWindow(...)を使う手もあります。
No.3
- 回答日時:
ありますよ。
僕の極秘ノート(笑)によれば、
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
です。たぶんあっていますが今確認が取れません。
ついでに言えばウインドウの再描画もされませんよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
exe間での引き値の受け取り方法
-
Visual basic6.0からショートカ...
-
batファイルで立ち上げたaplを...
-
DOS窓の非表示について
-
VBAからキャッシュを削除する方...
-
プログラムを実行すると、なぜ...
-
コマンドプロンプトを起動した...
-
バッチファイル実行時に起動す...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
ショートカットの作成とコピー
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
バッチでテキストファイルから...
-
バッチ処理でファイルの中身を...
-
バッチ終了時にDOS窓を閉じるコ...
-
これってパソコンの最適化が完...
-
jarファイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
stable diffusionのインストー...
-
VB.NETでコマンドプロンプトの操作
-
batファイルで立ち上げたaplを...
-
VB.NETでDOSコマンドの複数実行
-
64bitのwindowsサーバーで32bit...
-
gccがコマンドプロンプト上で使...
-
バッチファイルからftpを実行時...
-
VBAからキャッシュを削除する方...
-
UWSCについて
-
ショートカットの作成とコピー
-
exe間での引き値の受け取り方法
-
バッチファイルで実行ファイル...
-
BASP21 で 外部プログラムが実...
-
createprocessで起動させる別.e...
-
VBAでwindowsメールを起動させたい
-
Shiftキーを押しながら起動
-
バッチファイル、順番を指定し...
おすすめ情報