Ich implementierte einen Python-com-Server und generieren eine ausführbare Datei und DLL mit py2exe-Tool. Dann habe ich Regsvr32.exe verwendet, um die DLL zu registrieren. Ich habe eine Nachricht erhalten, dass die Registrierung erfolgreich war. Dann habe ich versucht, einen Verweis auf diese DLL in .NET hinzuzufügen. Ich habe den Speicherort der DLL durchsucht und es ausgewählt, aber ich habe ein Fehlermeldungsfeld mit der Meldung: Ein Verweis auf die DLL konnte nicht hinzugefügt werden, stellen Sie sicher, dass die Datei zugänglich ist und dass es eine gültige Assembly oder COM-Komponente ist Code des Servers und Setup-Skript wird unten hinzugefügt. Ich möchte erwähnen, dass ich den Server als ein Python-Skript ausführen und es von .net mit späte Bindung verwenden kann. Gibt es etwas, das ich vermisse oder falsch mache? Ich würde jede Hilfe schätzen.mit registrierten com-Objekt dll von .NET
Dank, Sarah
hello.py
import pythoncom
import sys
class HelloWorld:
#pythoncom.frozen = 1
if hasattr(sys, 'importers'):
_reg_class_spec_ = "__main__.HelloWorld"
_reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
_reg_clsid_ = pythoncom.CreateGuid()
_reg_desc_ = "Python Test COM Server"
_reg_progid_ = "Python.TestServer"
_public_methods_ = ['Hello']
_public_attrs_ = ['softspace', 'noCalls']
_readonly_attrs_ = ['noCalls']
def __init__(self):
self.softspace = 1
self.noCalls = 0
def Hello(self, who):
self.noCalls = self.noCalls + 1
# insert "softspace" number of spaces
print "Hello" + " " * self.softspace + str(who)
return "Hello" + " " * self.softspace + str(who)
if __name__=='__main__':
import sys
if hasattr(sys, 'importers'):
# running as packed executable.
if '--register' in sys.argv[1:] or '--unregister' in sys.argv[1:]:
# --register and --unregister work as usual
import win32com.server.register
win32com.server.register.UseCommandLine(HelloWorld)
else:
# start the server.
from win32com.server import localserver
localserver.main()
else:
import win32com.server.register
win32com.server.register.UseCommandLine(HelloWorld)
setup.py
from distutils.core import setup
import py2exe
setup(com_server = ["hello"])
Dank für die Beantwortung, ich habe das auf dem ersten, aber nicht meinen Server in der Registerkarte COM finden, also dachte ich, ich würde navigieren zu ihm. – Sarah