2011-08-16 12 views
5

W python, wyliczam okna najwyższego poziomu przez EnumWindows, a także I wyliczać procesy przez EnumProcesses.Jak mogę uzyskać uchwyt okna głównego w Pythonie?

Następnie w skrypcie Pythona, umieściłem wszystkie klamki okien, które należą do tego samego pid w jedną listę (zrobiłem to przez GetWindowThreadProcessId).

Później dowiedziałem się czegoś: są tam 3 klamki okienne, które należą do notepad.exe, ale otwieram tylko jeden plik tekstowy.

Dlaczego?

Poza tym próbowałem ustawić okno tekstowe jako okno pierwszego planu przez SetForegroundWindow, Przekazałem trzy uchwyty okna do tej funkcji i dwie prace.

Jak to możliwe?

Odpowiedz

5

Procesy czasami tworzą niewidoczne okna do własnych celów. Powinieneś je zignorować (użyj funkcji IsWindowVisible).

+0

masz. dziękuję – Alcott

4

Aby zbadać ten rodzaj rzeczy, najlepszym przyjacielem jest Spy ++, który jest dostarczany z kilkoma wersjami Visual Studio, jeśli możesz go uzyskać.

Zgodnie z nią, notepad.exe tworzy trzy okna najwyższego poziomu:

  1. Widoczna z głównego okna programu, nazwa klasy „Notatnika”, pokrywały.
  2. Ukryte, wyłączone, wyskakujące okno, nazwa klasy "MSCTFIME UI", podpis "M".
  3. Kolejne ukryte, wyłączone, pop-up window, nazwa klasy "IME", podpis "Domyślny IME".

Dwa ukryte okna są używane wewnętrznie za pomocą notatnika, aby zaimplementować edytor IME (Input Method Editor), GUI do pisania skomplikowanych skryptów.

Wiele programów tworzy ukryte okna najwyższego poziomu dla wielu rzeczy. Jeśli chcesz, możesz zignorować je wszystkie i używać tylko tych widocznych.

+0

twoja odpowiedź jest całkiem jasna, dziękuję., – Alcott

Powiązane problemy