Hvordan kan jeg få hovedvinduets håndtag i Python?

Indlæg af Hanne Mølgaard Plasc

Problem



I python opregner jeg topniveau vinduer gennem EnumWindows, og jeg opregner processerne gennem EnumProcesses.


Så i python scriptet sætter jeg alle vindueshåndtagene, der tilhører samme pid, i en liste (jeg gjorde dette gennem GetWindowThreadProcessId).


Senere fandt jeg ud af noget: Der er 3 vindueshåndtag, der tilhører notepad.exe, men jeg åbner kun en tekstfil.


Hvorfor?


Desuden forsøgte jeg at indstille tekstvinduet som forgrundsvinduet gennem SetForegroundWindow, jeg passerede de tre vindueshåndtag til denne funktion og to arbejde.


Hvordan kunne det være?

Bedste reference


Processer skaber undertiden usynlige vinduer til deres eget formål. Du bør ignorere dem (brug IsWindowVisible funktion).

Andre referencer 1


For at undersøge denne slags ting er din bedste ven Spy ++ , der følger med flere versioner af Visual Studio, hvis du kan få det.


Ifølge det skaber notepad.exe tre vinduer på topniveau:



  1. Det synlige hovedvindue, klassenavnet 'Notepad', overlappes.

  2. Et skjult, deaktiveret, pop op vindue, klassenavn 'MSCTFIME UI', billedtekst 'M'.

  3. Et andet skjult, deaktiveret popup-vindue, klassenavn 'IME', billedtekst 'Standard IME'.



De to skjulte vinduer bruges internt ved notesblok til at implementere IME (Input Method Editor), GUI til at skrive komplekse scripts.


Mange programmer skaber øverste skjulte vinduer til mange ting. For hvad du har til hensigt kan du ignorere dem alle og kun bruge de synlige.