2009-05-13 10 views
3

Ich verwende IronPython 2.0 in einem SharpDevelop 3.1-Konsolenfenster. Ich versuche, die Redemption-CDO-Ersatzbibliothek zu referenzieren und zu verwenden.IronPython und Instanziierung von COM-Objekten

Die Standardverwendung für die Bibliothek besteht darin, ein RDOSession-Objekt zu instanziieren und anschließend die Methoden für dieses Objekt zu verwenden, um durch das RDO-Objektmodell zu navigieren.

Ich habe die Redemption-COM-DLL registriert und auf ein Projekt verwiesen, das eine Interop-Assembly dafür erstellt hat. Im Konsolenfenster Ironpython, das tue ich dann folgendes: Import clr clr.AddReferenceToFileAndPath (r'd: \ SharpDevelop Projects \ TestPython \ TestPython \ obj \ Debug \ Interop.Redemption.dll ') Import Rücknahme

Das funktioniert soweit. Der nächste Schritt wäre, ein RDOSession-Objekt zu erhalten und es zu instanziieren. Wenn es funktioniert, wäre dies, wie ich denke, würde das zu tun:

session = Redemption.RDOSession()

Dies ist jedoch ein Fehler gibt: Typeerror: Kann keine Instanzen von RDOSession erstellen

So Meine Frage ist (oder war): Wie instanziere ich ein Objekt wie RDOSession?

Allerdings beantwortete ich gerade meine eigene Frage in meinem Versuch, es zu erklären. Ich werde mit der Antwort fortfahren, trotz der Tatsache, dass es fast albern scheint, dies zu tun, vielleicht wird es für jemand anderen nützlich sein.

Als ich ging, um die Zeile "session = Redemption.RDOSession()" einzugeben, die Calltip kam mit "RDOSession" sowie "RDOSessionClass" direkt darunter. Ich weiß nicht, wie das letztere erzeugt wurde, aber es klang wie ein instanziierbares Objekt (wenn es ein Wort ist).

>>> session = Redemption.RDOSessionClass()

>>>

Und siehe da. Der Aufruf der Logon-Methode funktionierte wie ein Champ für das neue Sitzungsobjekt.

Danke stackoverflow!

+0

ehrfürchtig. Funktioniert großartig und ermöglicht mir, einige wirklich coole Dinge zu tun. –

Antwort

0

Sie müssen verwenden:

session = Redemption.RDOSessionClass() 
+0

Ha har! Es funktionierte! :-) Ich schulde dir einen. –