2017-01-20 8 views
1

FindWindowを使用できますが、ウィンドウを開くたびにウィンドウの名前が変わります。だから私の質問は、どのように私はどちらかができている:Xを含むウィンドウのPIDを見つける方法

A))の「x」

Bを含むウィンドウのPIDを探すPIDにexeファイルの名前を持つウィンドウを探しますか?

ご迷惑をおかけしますが、ご迷惑をおかけして申し訳ございません。前もって感謝します!

答えて

3
  1. すべてのウィンドウを取得するにはEnumWindowsを使用するようにしてくださいは、窓の
  2. チェック状態を扱うIsWindowVisibleで取り扱います。 Because some invisible windows can hang the call to GetWindowText
  3. 各ウィンドウのタイトルをGetWindowTextで取得します。次に、タイトルに「X」が含まれていることを確認します。
  4. あなたはそのウィンドウハンドルを経由してGetWindowModuleFileNameによって実行可能ファイル名を取得することができ、Bの/についてGetWindowThreadProcessId

ことによってそれのPIDを取得します。

+0

ステップ2( 'IsWindow()')は、列挙コールバック内では必要ありません。たぶんあなたは 'IsWindowVisible()'を考えているでしょうか? –

+2

あなたのアップデートは、それを裏付ける根拠はなく[他人のコメントを引用しています](http://stackoverflow.com/questions/797967/how-to-stop-enumwindows-running-infinitely-win32/798003#comment14193164_798003)。ウィンドウの可視性は 'GetWindowText()'には影響しません。実際、ウィンドウが別のプロセスに属している場合、['GetWindowText()' ** cant ** hang](https://blogs.msdn.microsoft.com/oldnewthing/20030821-00/?p=42833)、意図的に。ハングアップできる唯一の方法は、ウィンドウが自分のプロセスに属し、ウィンドウのメッセージキューが処理されていない場合です。それはあなた自身のコードのバグでしょう。 –

関連する問題