python til at fange output fra et andet vindue - GUI program

Indlæg af Hanne Mølgaard Plasc

Problem



Situationen er som denne:
Jeg vil fange pop-ups af IPmsg.exe i mit pythonprogram.


Der er en nem måde at gøre det på, som læser fra logfilen. Men jeg vil gerne vide, om dette kan gøres uden at bringe logfiler i diskussion.
For mere om IPmsg.exe: http://ipmsg.org/index.html.en[1]


Det var bestemt.
Nu, hvad ville være en generisk tilgang til at fange output fra et Windows-baseret GUI-program?

Bedste reference


Der er generelt to måder at tale med GUI-programmer på Windows, hvis du hader logfilerne:



  1. Brug deres kommandolinjegrænseflade! Jeg tvivler på, at dette har en, der outputs til stdout som meddelelser kommer ind

  2. Brug win32 api eller en indpakning til at søge efter bestemte vinduer (afstemning efter behov eller installering af kroge for at finde ud af, hvornår de vises) og derefter tage tekst fra dem ved hjælp af flere api-opkald. Se dette spørgsmål: Få tekst fra pop op-vinduet



+1 for at bruge logfilerne forresten, langt lettere.

Andre referencer 1


Du kan kun optage output fra applikationer via Python, som du starter direkte fra Python f.eks. ved hjælp af delprocessemodulet:


http://docs.python.org/library/subprocess.html[3]


Ellers har du stort set ingen chance for at læse direkte udgang fra andre applikationer.