Seite 1 von 1

Zugriff auf Visual Basic Objekte

Verfasst: Dienstag 8. Juni 2004, 07:32
von thomas_m
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...

Verfasst: Dienstag 8. Juni 2004, 20:24
von gerold
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)

Code: Alles auswählen

Public Function HalloWelt(byval sVorname as string) as string
    HalloWelt = "Servus aus Tirol, " & sVorname & "."
End Function
dann kannst du in Python mit diesem Code auf die VB-Funktion zugreifen:

Code: Alles auswählen

import win32com.client as wc

objTestklasse = wc.Dispatch("MeineVbDLL.MeineTestklasse")
print objTestklasse.HalloWelt("Mein_Vorname")
mfg
Gerold
:-)

Verfasst: Donnerstag 10. Juni 2004, 10:09
von thomas_m
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 :lol:
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

Verfasst: Donnerstag 10. Juni 2004, 10:30
von gerold
thomas_m hat geschrieben:Beim Importieren des Moduls schreibst du:
import win32com.client as wc
Hallo Thomas!

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
wird

Code: Alles auswählen

wc.Dispatch
Eine detaillierte Erklärung findest du hier:
http://www.python.org/doc/current/ref/import.html


mfg
Gerold
:-)

Verfasst: Donnerstag 10. Juni 2004, 10:35
von gerold
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. :mrgreen:

mfg
Gerold
:-)

Verfasst: Donnerstag 10. Juni 2004, 10:52
von thomas_m
Alles klar,
danke noch mal alles

Gruß
Thomas