OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

ShellExecuteが起動したプロセスのID

  • 困ってます
  • 質問No.233058
  • 閲覧数1395
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 77% (530/685)

CreateProcessは起動したプロセスのIDをくれますが、ShellExecuteでは分からないものでしょうか。
ShellExecuteExならプロセスのハンドルを受け取ることはできますが、IDは分かりません。

ハンドルから元のIDを割り出す関数でもないですかね。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 59% (729/1235)

GetWindowThreadProcessId ...続きを読む
お礼コメント
haporun

お礼率 77% (530/685)

ウィンドウのないアプリケーションを想定していないし、そもそも、ウィンドウハンドルを得る手段もありません。
投稿日時 - 2002-03-14 18:54:08


  • 回答No.2
レベル13

ベストアンサー率 59% (729/1235)

なるほど、容易ではないですね。 CreateToolhelp32Snapshotで現在実行中のプロセスのプロセスIDと実行ファイルのフルパス名を 列挙できます。 つまり、EXE名からプロセスIDが分かります。 しかし、同じEXEを複数起動した場合はプロセスIDが複数あるので区別できない。 ShellExecuteを実行する前後のCreateToolhelp32Snapshotを比較する... ...続きを読む
なるほど、容易ではないですね。
CreateToolhelp32Snapshotで現在実行中のプロセスのプロセスIDと実行ファイルのフルパス名を
列挙できます。
つまり、EXE名からプロセスIDが分かります。
しかし、同じEXEを複数起動した場合はプロセスIDが複数あるので区別できない。
ShellExecuteを実行する前後のCreateToolhelp32Snapshotを比較する...
うーんイマイチな案でした。
お礼コメント
haporun

お礼率 77% (530/685)

じつはやりたいことは、プロセスとスレッドの優先度を指定した、実行プログラムなのです。

そこで、プロセスの優先度は、CreateProcessでもShellExecuteExでもハンドルが得られればいいのですが、スレッドはCreateToolhelp32Snapshot+Thread32First/Nextで得られた結果のうち、ParentProcessIdが親のものと一致したスレッドだけ取り出して優先度を指定しているのです。
このスレッド列挙関数はあるプロセスの所有するスレッドだけを挙げてくれるのではないところが問題です。

なかなかの案ですが、確実性に欠けますね。
どうもありがとうございました。
また、何か浮かんだらよろしくおねがいします。
投稿日時 - 2002-03-14 23:19:21
  • 回答No.3
レベル12

ベストアンサー率 45% (210/459)

こんにちは。itohhといいます。 一発でプロセスハンドルからプロセスIDを取得することはムリだと思います。 代案ですが。 1.プロセスの列挙するAPIを使用してプロセスIDを取得する。   WinNT系ならEnumProcess関数、Win9x系ならProcess32First関数   以下のページを参考にしてください。   URL:http://www.microsoft.com/ ...続きを読む
こんにちは。itohhといいます。

一発でプロセスハンドルからプロセスIDを取得することはムリだと思います。

代案ですが。
1.プロセスの列挙するAPIを使用してプロセスIDを取得する。
  WinNT系ならEnumProcess関数、Win9x系ならProcess32First関数
  以下のページを参考にしてください。
  URL:http://www.microsoft.com/japan/support/kb/articles/JP175/0/30.asp
2.取得したプロセスIDからプロセスハンドルを取得する。
  OpenProcess関数
3.対象のプロセスハンドルと取得したプロセスハンドルを比較する。
4.同一のプロセスハンドルが見つかるまで2と3を繰り返す。

こんな案では如何ですか?
お礼コメント
haporun

お礼率 77% (530/685)

あれ?
ハンドルって同じプロセスに対していくらでも開けるから、新にOpenProcessしたら一生見つからないような・・・。
投稿日時 - 2002-03-15 02:12:20
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ