Python und COM

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hmpfgnrrr
User
Beiträge: 2
Registriert: Donnerstag 3. Januar 2008, 12:09

Donnerstag 3. Januar 2008, 13:01

Hallo!

Ich versuche derzeit, eine Datei "ltq_qtp.exe" als COM-Objekt anzusprechen (was definitiv gehen muesste). Dazu habe ich sie mit makepy.py registriert.

Wenn ich sie aber in meinem Programm dispatche, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "tests2.py", line 3, in <module>
    o=win32com.client.Dispatch("LTQ_QTPLib.QTP")
  File "C:\Python25\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 98, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 78, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)
Googlen ergab, dass 'Invalid class string' darauf hindeutet, dass ich sie mit dem falschen Namen anspreche. Den hat mir aber der Entwickler hoechstpersoenlich genannt, trotzdem funktioniert es nicht. Leider versteht er nichts von Python, kann mir also auch nicht weiterhelfen.

Kann ich die Datei noch irgendwie anders ansprechen? Vielleicht mit Pfad + Dateinamen? Oder ueber die CLSID? Bin fuer jede Hilfe dankbar.

Thomas.

P.S.
Von makepy.py generierter Code:
[ausgelagert]

Edit (Leonidas): Code ausgelagert.
hmpfgnrrr
User
Beiträge: 2
Registriert: Donnerstag 3. Januar 2008, 12:09

Montag 7. Januar 2008, 15:06

Bin dann letztlich doch selbst darauf gekommen, woran es lag. Die entsprechende EXE-Datei war naemlich nur unzureichend in der Registry registriert. Da stand zwar der Pfad usw. drin, nicht aber die ProgID und andere Dinge, die fuer win32com von Interesse sind. Nachdem ich die Eintraege nachgetragen hatte, laeuft jetzt alles zufriedenstellend.
Antworten