Hallo,
wie funktioniert der Zugriff von Python aus auf VB Objekte?
Man hat in VB zum Beispiel einen Button der eine Messagebox ausgibt. Name des Buttons z.B.: cmdTest
Wie kann ich jetzt von Python aus auf diesen einen Button zugreifen?
Probiere das Ganze schon länger, sitze aber irgendwie auf der Leitung.
Bin über jede Info dankbar.
Danke...
Zugriff auf Visual Basic Objekte
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo thomas_m!
Um auf VB-Objekte zugreifen zu können, musst du im Visual Basic eine DLL oder eine ActiveX-EXE erstellen. Auf die Funktionen, Eigenschaften (Properties) und Methoden von öffentlichen Klassen kannst du dann mit jeder Programmiersprache, die mit ActiveX-Objekten umgehen kann, zugreifen.
Damit du von Python aus auf ActiveX-Objekte zugreifen kannst, musst du die Win32 Extensions for Python installieren. Die findest du unter http://starship.python.net/crew/mhammon ... loads.html.
Nehmen wir mal an, du hast im Visual Basic folgenden Code in die Klasse MeineTestklasse geschrieben und die DLL (also dein VB-Programm) MeineVbDLL genannt:
(Hinweis: Nach dem kompillieren muss es eine Datei mit dem Namen MeineVbDLL.dll geben)
dann kannst du in Python mit diesem Code auf die VB-Funktion zugreifen:
mfg
Gerold

Um auf VB-Objekte zugreifen zu können, musst du im Visual Basic eine DLL oder eine ActiveX-EXE erstellen. Auf die Funktionen, Eigenschaften (Properties) und Methoden von öffentlichen Klassen kannst du dann mit jeder Programmiersprache, die mit ActiveX-Objekten umgehen kann, zugreifen.
Damit du von Python aus auf ActiveX-Objekte zugreifen kannst, musst du die Win32 Extensions for Python installieren. Die findest du unter http://starship.python.net/crew/mhammon ... loads.html.
Nehmen wir mal an, du hast im Visual Basic folgenden Code in die Klasse MeineTestklasse geschrieben und die DLL (also dein VB-Programm) MeineVbDLL genannt:
(Hinweis: Nach dem kompillieren muss es eine Datei mit dem Namen MeineVbDLL.dll geben)
Code: Alles auswählen
Public Function HalloWelt(byval sVorname as string) as string
HalloWelt = "Servus aus Tirol, " & sVorname & "."
End Function
Code: Alles auswählen
import win32com.client as wc
objTestklasse = wc.Dispatch("MeineVbDLL.MeineTestklasse")
print objTestklasse.HalloWelt("Mein_Vorname")
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Servus gerold,
danke erstmal für deine Hilfe.
Habs gerade probiert, funktioniert ohne Probleme der Zugriff von Python aus.
Eine Frage habe ich aber trotzdem noch
Beim Importieren des Moduls schreibst du:
import win32com.client as wc
Was bedeutet das <<as wc>>? Habe in der Python WIN32 Doku nachgesehen, aber nichts gefunden.
Kennst du Bücher oder Tutorials, welche du empfehlen kannst?
Ich kenne bisher nur das von O'Reilly "Python WIN32 Programming", habs aber noch nicht.
Trotzdem vielen Dank für alles,
Gruß
Thomas
danke erstmal für deine Hilfe.
Habs gerade probiert, funktioniert ohne Probleme der Zugriff von Python aus.
Eine Frage habe ich aber trotzdem noch

Beim Importieren des Moduls schreibst du:
import win32com.client as wc
Was bedeutet das <<as wc>>? Habe in der Python WIN32 Doku nachgesehen, aber nichts gefunden.
Kennst du Bücher oder Tutorials, welche du empfehlen kannst?
Ich kenne bisher nur das von O'Reilly "Python WIN32 Programming", habs aber noch nicht.
Trotzdem vielen Dank für alles,
Gruß
Thomas
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Thomas!thomas_m hat geschrieben:Beim Importieren des Moduls schreibst du:
import win32com.client as wc
wc ist mit dieser Definition ein Alias, den ich nach dem Import statt win32com.client verwenden kann.
Aus
Code: Alles auswählen
win32com.client.Dispatch
Code: Alles auswählen
wc.Dispatch
http://www.python.org/doc/current/ref/import.html
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Zum Thema ActiveX und Python habe ich noch einen interessanten Link gefunden
http://www.python.org/windows/win32com/ ... pframe.htm
Besonders interessant ist, dass man mit Python COM-Clients sowie COM-Server programmieren kann.
mfg
Gerold

Zum Thema ActiveX und Python habe ich noch einen interessanten Link gefunden

http://www.python.org/windows/win32com/ ... pframe.htm
Besonders interessant ist, dass man mit Python COM-Clients sowie COM-Server programmieren kann.

mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.