Fragen zu C++ COM Objekten via win32com in Python

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
T.T.H.

Hi

Ich bin dabei in C++ ein COM Objekt zu schreiben und jenes in Python anzusprechen. Dazu hätte ich ein paar Detailfragen und bräuchte Hilfe, da ich mich in der Dokumention zu Python und win32com noch nicht wirklich zurechtfinde...

1.
Wie kann ich feststellen, ob...

Code: Alles auswählen

import win32com.client
erfolgreich war oder nicht?

2.
In meinem COM Objekt habe ich in C++ die folgende Funktion:

Code: Alles auswählen

STDMETHODIMP CMyTestObjekt::Connect()
{
	if (m_boolReadyToConnect == false) {
		return E_FAIL;
	}
	return S_OK;
}
Wie kann ich in Python jetzt abfragen, ob ein S_OK oder ein E_FAIL zurückgeliefert wird? Oder ist der Ansatz falsch und ich sollte Rückgabewerte lieber über einen extra Rückgabewert wie z.b.

Code: Alles auswählen

Funktion(......., [out, retval] BOOL *pVal)
machen?

3.
Wenn ich folgendes ausführe...

Code: Alles auswählen

MyObject = win32com.client.Dispatch("MyCOM.MySuperCOMObject")
...was ist da der Rückgabewert, an dem ich feststellen kann, ob es geklappt hat? Bzw. was kann denn nachher in "MyObject" drinstehen?

4.
Wenn ich eine Funktion in Python habe, in der ich auf das (globale) COM Objekt zugreife, was für ein "if" muss ich da davorsetzen, um abzufragen, ob das COM Objekt mit "win32.com.Dispatch" angelegt wurde? Ich habe es wie folgt versucht, aber das hat nicht so recht funktioniert:

Code: Alles auswählen

def foo():
    if MyObject == None:
        print "COM not there yet"
    else:
        print MyObject.Message
Ich wäre für Hilfe echt dankbar. Oder auch ein Hinweis, wo ich eine Dokumentation dafür finde. Zur Info: ich habe ActiveState ActivePython 2.2 installiert, da ist win32com bereits dabei.

Bye,
Matthias "T.T.H." Grobe
Antworten