Seite 1 von 1

Verwendung von pywinauto mit laufendem Prozess

Verfasst: Dienstag 13. Mai 2008, 16:00
von Seoman
Hallo.

Ich werde leider nicht schlau aus pywinauto. Das Modul soll die Möglichkeit bieten, Befehle an ein laufendes Programm zu schicken.

Dazu muss ich erst eine Instanz des Programmes mit pywinauto starten, mit der ich dann arbeiten kann. Leider hapert es aber bereits genau daran. Was ist falsch am folgenden Code (am Beispiel von Thunderbird)?

Code: Alles auswählen

from pywinauto.application import Application

app = Application.connect_(path = 'C:\Programme\Mozilla Thunderbird\thunderbird.exe')

app.Posteingang.MenuSelect('Hilfe-->Versionshinweise')
Ich erhalte dabei die folgende Fehlermeldung:
app = Application.connect_(path = 'C:\Programme\Mozilla Thunderbird\thunderbird.exe')
TypeError: unbound method connect_() must be called with Application instance as first argument (got nothing instead)
Was funktioniert, ist die Variante mit 'Application.start'. Da das Programm aber schon läuft, kann ich damit nichts anfangen, sondern muss 'connect' wählen.
Ich habe dafür die Pfadangabe gewählt, mit der auch das entsprechende Programm gestartet wird.
Toll wäre übrigens eine Alternative, bei der man den Titel des Windows-Fensters statt des Pfades verwenden könnte. Kennt sich da jemand aus?


Gruß
Seoman

Verfasst: Mittwoch 14. Mai 2008, 08:02
von HWK
Mit pywinauto kenne ich mich nicht aus. Schau Dir stattdessen aber mal watsup an: http://www.tizmoi.net/watsup/intro.html. Beispiel 3 kommt doch Deinen Wünschen schon recht nahe, oder?
MfG
HWK

Re: Verwendung von pywinauto mit laufendem Prozess

Verfasst: Mittwoch 14. Mai 2008, 11:43
von gerold
Seoman hat geschrieben:

Code: Alles auswählen

from pywinauto.application import Application
app = Application.connect_(path = 'C:\Programme\Mozilla Thunderbird\thunderbird.exe')
app.Posteingang.MenuSelect('Hilfe-->Versionshinweise')
Hallo Seoman!

Wie man hier http://pywinauto.openqa.org/howto.html sehen kann, musst du zuerst die Applikation erstellen und kannst dann ``connect`` ausführen.

Code: Alles auswählen

app = Application()
app.connect_(path = r"c:\windows\system32\notepad.exe")
mfg
Gerold
:-)

Verfasst: Donnerstag 15. Mai 2008, 09:22
von Seoman
Danke, Gerold, das war es.

Allerdings kann ich auf Thunderbird immer noch nicht zugreifen. Er findet "Thunderbird" weder im Fenstertitel 'Posteingang von abc@def.de - Thunderbird' noch über den genannten Pfad, auch nicht mit Raw-String).

Aber mit dem Programm, das ich eigtl. aufrufen möchte, funktioniert's.

Verfasst: Donnerstag 15. Mai 2008, 10:36
von gerold
Seoman hat geschrieben:Er findet "Thunderbird" weder im Fenstertitel 'Posteingang von abc@def.de - Thunderbird' noch über den genannten Pfad
Hallo Seoman!

Ja, Thunderbird ist (glaube ich) so ein Sonderfall, da es nicht direkt mit Windows-Widgets arbeitet, sondern sein eigenes GUI-System mitbringt. Das kann zu Problemen führen. Solche Sonderfälle gibt es immer. Da kann man nichts machen.

mfg
Gerold
:-)