Problem mit Dispatch (pywin32)
Verfasst: Freitag 24. Februar 2012, 23:31
Hallo zusammen,
ich versuche gerade mir Grundkenntnisse zu Python anzueigenen und bin gleich auf ein Problem gestossen.
Bin ziemlicher Anfänger in Python (und OOB) also habt etwas Nachsicht wenn ich mit den Begriffen teilweise daneben liege.
Aufgabestellung: Den DVBViewer (TV Software) über dessen COM-Interface steuern.
Soweit so gut. Das klappt auch schon mit diesem Skript:
Nun zu den Fragen:
1.
import win32com.client
from win32com.client import Dispatch
Wieso muss ich mir die Dispatch Funktion eigentlich noch explizit herzitieren obwohl das Modul win32com.client schon eingebunden ist?
edit\ Frage 1 hat sich erledigt.
Das explizit herzitieren ist nur nötig wenn man "Dispatch" direkt verwenden will?
Also alternativ: win32com.client.Dispatch
2.
Läuft der DVBViewer nicht bei der Skriptausführung wird er durch Dispatch("DVBViewerServer.DVBViewer") gestartet.
Das mag der DVBViewer gar nicht (crasht dann
).
Laut Doku zum DVBViewer COM-Interface:
3.
Es gelingt mir nicht in den Pfad mit der Errorabfrage zu gelangen.
z.B.:
Das kann nicht funktionieren, da Sendcommand einen Integer erwartet.
Nur wie kann ich darauf reagieren?
So das wars erstmal.
Gruß & Danke schonmal
Nuts
P.S. Um es deutlicher zu machen mal noch ein autoit Skript mit der gewünschten Funktionalität (bis auf Frage3).
ich versuche gerade mir Grundkenntnisse zu Python anzueigenen und bin gleich auf ein Problem gestossen.
Bin ziemlicher Anfänger in Python (und OOB) also habt etwas Nachsicht wenn ich mit den Begriffen teilweise daneben liege.
Aufgabestellung: Den DVBViewer (TV Software) über dessen COM-Interface steuern.
Soweit so gut. Das klappt auch schon mit diesem Skript:
Code: Alles auswählen
import pythoncom
import win32com.client
from win32com.client import Dispatch
import win32com.client
# Die Verbindung zum COM-Interface aufbauen
odvbviewer=Dispatch("DVBViewerServer.DVBViewer")
try:
# "Sendcommand" gehört DVBViewer Objekts - das stimmt soweit
odvbviewer.SendCommand(111)
except pythoncom.com_error:
print "error"
1.
import win32com.client
from win32com.client import Dispatch
Wieso muss ich mir die Dispatch Funktion eigentlich noch explizit herzitieren obwohl das Modul win32com.client schon eingebunden ist?
edit\ Frage 1 hat sich erledigt.
Das explizit herzitieren ist nur nötig wenn man "Dispatch" direkt verwenden will?
Also alternativ: win32com.client.Dispatch
2.
Läuft der DVBViewer nicht bei der Skriptausführung wird er durch Dispatch("DVBViewerServer.DVBViewer") gestartet.
Das mag der DVBViewer gar nicht (crasht dann
Laut Doku zum DVBViewer COM-Interface:
Ich bräuchte also eine entsprechende Getobject Funktion in Python?The DVBViewer registers itself in the ROT when running. You normaly do a getactiveobject to connect to it.
3.
Es gelingt mir nicht in den Pfad mit der Errorabfrage zu gelangen.
z.B.:
Code: Alles auswählen
import pythoncom
import win32com.client
from win32com.client import Dispatch
odvbviewer=Dispatch("DVBViewerServer.DVBViewer")
try:
odvbviewer.SendCommand("Hallo")
except pythoncom.com_error:
print "error"
Nur wie kann ich darauf reagieren?
So das wars erstmal.
Gruß & Danke schonmal
Nuts
P.S. Um es deutlicher zu machen mal noch ein autoit Skript mit der gewünschten Funktionalität (bis auf Frage3).
$odvbviewer=ObjGet("", "DVBViewerServer.DVBViewer")
If @error Then
; z.B. wenn der DVBViewer nicht läuft
ConsoleWrite("error" & @crlf)
else
$odvbviewer.Sendcommand(111)
; die Funktion Sendcommand aufrufen
endif