2011-08-16 106 views
5

Pythonでは、トップレベルのウィンドウをEnumWindowsで列挙し、さらにEnumProcessesでプロセスを列挙します。メインウィンドウのハンドルをPythonでどのように取得できますか?

そして、pythonスクリプトでは、同じPIDに属するすべてのウィンドウハンドルを1つのリストに入れました(これはGetWindowThreadProcessIdで行いました)。

後で私は何かを見つけました:notepad.exeに属する3つのウィンドウハンドルがありますが、テキストファイルは1つしか開きません。

なぜですか?

さらに、テキストウィンドウを前景ウィンドウとしてSetForegroundWindowに設定しようとしましたが、3つのウィンドウハンドルをこの関数に渡しました。

どうすればいいですか?

答えて

5

プロセスによっては、独自の目的で非表示のウィンドウが作成されることがあります。それらを無視する必要があります(IsWindowVisible関数を使用してください)。

+0

です。ありがとうございます – Alcott

4

あなたの親友はです。Spy ++には、Visual Studioのいくつかのバージョンが付属しています。それによると、メモ帳は、3つのトップレベルウィンドウを作成

  1. 可視メインウィンドウクラス名「メモ帳」が、重複しました。
  2. 隠された無効化されたポップアップウィンドウ、クラス名 "MSCTFIME UI"、キャプション "M"。
  3. もう1つの非表示の無効化されたポップアップウィンドウ、クラス名「IME」、キャプション「デフォルトIME」。

2つの非表示ウィンドウは、IME(インプットメソッドエディタ)を実装するためにメモ帳によって内部的に使用され、複雑なスクリプトを入力するためのGUIです。

多くのプログラムは、多くのことに対して最上位の隠れウィンドウを作成します。あなたが意図しているものについては、それらをすべて無視し、目に見えるものだけを使用することができます。

+0

あなたの答えはかなり明確です、ありがとうございます。 – Alcott

関連する問題