2012-05-03 8 views
1


私はあなたがウィンドウ "HWND"にハンドルを変換できるかどうか疑問に思っていました。私は "FindWindow"メソッドを使用して "PostMessage"関数を呼び出す必要があります。C++ハンドルとしてHWND?

私は現在のプロセスが複数のウィンドウを作成することができます

+5

いいえ、プロセスハンドルとウィンドウハンドルの2つの異なるデータ型( 'HANDLE'と' HWND')があるのは理由があります。言うまでもなく、プロセスは複数のウィンドウを持つことができるので、1対1の対応は間違いありません。実際に何をしようとしていますか? –

+0

私は、「World of Warcraft」ボットの作成に「使いやすい」APIを作成しようとしています。見つけようとしているウィンドウHWNDは、メインウィンドウのHWNDです。私はそれを見つけることができるかどうかわからない:Sしかし、それは大きな問題ではありません。私はC++で自分自身を教育しています。 – dotTutorials

答えて

2

mainProcessハンドルを使用してProcessIDを取得するGetProcessId()を呼び出します。

コールEnumWindows()

各ウィンドウについて、ウィンドウに関連付けられているプロセスのPROCESSIDを取得するGetWindowThreadProcessId()を呼び出します。

ProcessIDが一致する場合は、必要なHWNDが見つかったかどうかを比較します。

これはやや高価な作業なので、hwndを見つけるには、先行して保存するだけです。

+1

警告:前述したように、プロセスには複数のウィンドウがあることがありますので、必要なものがあるかどうかを判断するためにウィンドウ(クラス名、キャプションなど)を追加で確認する必要があります。 – MessyHack

+0

あなたのおかげで、私はこの問題を克服するためのアイデアを得ました:]。 – dotTutorials

4

番号を調達する必要があります。 1対1のマッピングが存在しないので、そのような関数は意味をなさないでしょう。

一方、プロセスによって作成されたウィンドウのリストを返す関数を持つことは確かです。

関連する問題