[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/02/19(Sat) 16:41
投稿者名:
Eメール:
URL :
タイトル:
プロセスIDからウィンドウハンドルを取得するには
2つ以上起動しているプロセスのウィンドウハンドルを全部取得したいのですが
FindWindowを使うと後に起動したハンドルのみを取得してしまいます。(取得→終了はしない)

なので全プロセスを列挙することにし、プロセスIDの取得はできたのですが、
そこからウィンドウハンドルの取得の仕方が分かりません。

プロセスID→ウィンドウハンドルの取得の仕方と、
2つ以上起動したプロセスのウィンドウハンドルを全部取得する時、普通はどのようにするのか教え
て頂けると幸いです。

環境はwindows2000 SP4?(アップデートは全部当ててます)・VB6.0です。

投稿時間:2005/02/19(Sat) 18:29
投稿者名:Say
Eメール:
URL :
タイトル:
Re: プロセスIDからウィンドウハンドルを取得するには
一般に、プロセスID(=タスクID)からウィンドウハンドルを取得するには、

プロセスID→プロセスハンドル→スレッドハンドル→ウィンドウハンドル
の順で取得しますが、必ず取得できるわけではありません。

投稿時間:2005/02/19(Sat) 19:54
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: プロセスIDからウィンドウハンドルを取得するには
> 2つ以上起動しているプロセスのウィンドウハンドルを全部取得したいのですが
> FindWindowを使うと後に起動したハンドルのみを取得してしまいます。(取得→終了はしない)
>
> なので全プロセスを列挙することにし、プロセスIDの取得はできたのですが、
> そこからウィンドウハンドルの取得の仕方が分かりません。

EnumWindows(全ウィンドウ)または、FindWindowEx(特定のクラス名、キャプション)
でウィンドウを列挙して、GetWindowThreadProcessIdでプロセスIDが一致するかを
チェックする。

投稿時間:2005/02/20(Sun) 02:08
投稿者名:
Eメール:
URL :
タイトル:
Re^2: プロセスIDからウィンドウハンドルを取得するには
無事取得することができました。
Sayさん、Starfishさん回答ありがとうございました。