3

アプリケーションで使用する外部プロセスを取得する必要がありPROCESS_INFORMATIONます。プロセス ハンドルとプロセス ID はありますが、それを取得する方法がわかりませんPROCESS_INFORMATION

Windowsで実行されているC++(11)、Visual Studio 2012を使用しています。どんな助けでも大歓迎です。

4

3 に答える 3

6

PROCESS_INFORMATIONによって満たされCreateProcess()ます。その船は出航しました。プロセスはすでに開始されています。

あなたが本当にやりたいことに集中しましょう。プロセスが終了したかどうかを確認するには、まず を使用OpenProcess()してプロセスへのハンドルを取得します。すでに持っている PID が必要です。その後WaitForSingleObject()、それが終了したかどうかを教えてくれます。INFINITEプロセスが終了するまでブロックする 2 番目の引数を渡します。0ポーリングする場合はパスします。最後に、CloseHandle()クリーンアップに使用します。

于 2013-01-04T20:59:37.993 に答える
1

PROCESS_INFORMMATION4つの情報を提供します。

HANDLE hProcess
HANDLE hThread
DWORD dwProcessID
DWORD dwThreadID

プロセスハンドルとプロセスIDの2つの値がすでにあると言います。つまり、スレッドハンドルとスレッドIDだけが残ります。これらは、プロセス用に作成された最初のスレッドに属します。CreateToolhelp32Snapshot()、、を使用して、指定されたプロセスIDに属するスレッドIDを検索する実行中のスレッドを列挙し、を使用Thread32First()して、指定されたスレッドIDのスレッドハンドルを取得できます。トリッキーな部分は、どのスレッドIDが最初のスレッドであるかを識別することです。その情報は、の外部ではすぐには利用できません。Thread32Next()OpenThread()CreateProcess()

于 2013-01-04T21:51:32.260 に答える
0

CreateToolhelp32Snapshot 関数はプロセス ID と親プロセス ID の両方を返すため、必要な情報を取得できます。その使用例はここにあります。

于 2013-01-04T21:27:47.810 に答える