Seite 1 von 1

Andere Programme steuern

Verfasst: Dienstag 27. März 2007, 10:40
von grany
Hallo miteinander,

ich versuche ein anderes Programm (Google Earth) mittels Python zu manipulieren, dafür gibt's ja auch eine COM API mit ein paar vordefinierten Funktionen.
Leider krieg ich nicht raus, wie man generelle Einstellungen, die es in jedem Programm gibt, mittels Python beeinflussen kann, nämlich:

1. Grösse des Fensters (Google Earth) festlegen.
2. Eine Tastenkombination (Shortcut) an das Programm übergeben, damit gewisse Menüleisten aus-/eingeblendet werden.
3. Ein gewisses Fenster immer im Vordergrund halten.

Ist dies überhaupt machbar mit Python?

Freue mich über eine Antwort, vielen Dank!

Verfasst: Dienstag 27. März 2007, 10:52
von Masaru
Solltest Du unter Windows mit dieser Bibliothek hinbekommen: PyWin32

Ob wirklich alles damit genau möglich ist müsste man wohl letztendlich doch am lebenden Programm ausprobieren.

Verfasst: Dienstag 27. März 2007, 22:28
von grany
Dankeschön.
Ich bin auf die Funktion Sendkeys() gestossen, die mir ziemlich interessant erscheint:

Code: Alles auswählen

import win32com.client
import sendkeys
googleEarth =  win32com.client.Dispatch("GoogleEarth.ApplicationGE")
googleEarth.SendKeys("{ENTER}")
Fehlermeldung:

Code: Alles auswählen

line 496, in __getattr__
    raise AttributeError, "%s.%s" % (self._username_, attr)
AttributeError: GoogleEarth.ApplicationGE.SendKeys
Dies führt jedoch zu diesers Fehlermeldung. Kann es sein, dass diese Funktion aufgrund der GoogleEarth API nicht zugelassen ist, also nicht bei jedem Programm funktioniert?

Bei anderen Programmen klappt es nämlich mit analogem Code perfekt.

Edit (Leonidas): BBCodes aktiviert.

Verfasst: Mittwoch 28. März 2007, 11:24
von Leonidas
grany hat geschrieben:Dies führt jedoch zu diesers Fehlermeldung. Kann es sein, dass diese Funktion aufgrund der GoogleEarth API nicht zugelassen ist, also nicht bei jedem Programm funktioniert?
Ich tippe eher darauf, dass Google Earth ein anderes Toolkit nutzt und daher nicht auf die Win32-Events reagiert. Was für ein Toolkit nutzt GE denn? Ich bin grade nicht an meinem Rechner und kann das im Moment leider nicht nachschauen.

Man kann das in der Regel recht einfach feststellen: man schaut in den Google Earth-Ordner und überlegt ob dort DLLs liegen, die auf z.B. Qt schließen lassen.

Verfasst: Mittwoch 28. März 2007, 20:32
von lunar
Leonidas hat geschrieben:Man kann das in der Regel recht einfach feststellen: man schaut in den Google Earth-Ordner und überlegt ob dort DLLs liegen, die auf z.B. Qt schließen lassen.
Das sollte doch eigentlich ziemlich egal sein. Die QT Programmierer sind ja auch nicht komplett unabhängig von System, sondern verlassen sich auf darunter liegende Graphik-Subsystem. Unter X kann man deswegen mit QT auch alle möglichen internen X11-Eigenschaften eines Fensters abfragen, ebenso wie man unter Windows über QT Zugriff auf das Handle des Fensters hat. Deswegen reagiert auch eine QT Anwendung auf sendkeys.

Für mich siehst das eher wie ein Programmierfehler aus: Mir ist nicht in Erinnerung, dass SendKeys eine COM-Funktion ist. Iirc ist das eine einfache Windows-API Funktion, die mit COM nichts am Hut hat.
Deswegen wundere ich mich, dass sie über das COM Objekt aufgerufen wird. Ich denke, der Fehler liegt eher darin, dass sendkeys über das falsche Objekt aufgerufen wird.