我想用win32com擴展實現python com服務器。 然後從.NET內部使用服務器。 我用下面的例子來實現COM服務器,它運行沒有問題,但是當我嘗試使用使用C#是我FileNotFoundException異常以下消息「檢索COM類工廠CLSID 676E38A6-7FA7-4BFF-組件{ 9179-AE959734DEBB}由於以下錯誤而失敗:8007007e。「 。我也發佈了C#代碼。我想知道如果我錯過了什麼,我會很感激任何幫助。.NET中使用Python COM服務器
感謝, 薩拉
#PythonCOMServer.py
import pythoncom
class PythonUtilities:
_public_methods_ = [ 'SplitString' ]
_reg_progid_ = "PythonDemos.Utilities"
# NEVER copy the following ID
# Use"print pythoncom.CreateGuid()" to make a new one.
_reg_clsid_ = pythoncom.CreateGuid()
print _reg_clsid_
def SplitString(self, val, item=None):
import string
if item != None: item = str(item)
return string.split(str(val), item)
# Add code so that when this script is run by
# Python.exe,.it self-registers.
if __name__=='__main__':
print 'Registering Com Server'
import win32com.server.register
win32com.server.register.UseCommandLine(PythonUtilities)
// the C# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Type pythonServer;
object pythonObject;
pythonServer = Type.GetTypeFromProgID("PythonDemos.Utilities");
pythonObject = Activator.CreateInstance(pythonServer);
}
}
}
注意python代碼中的警告,不要在每次調用時使用新的GUID。只創建一次GUID。 – gimel 2009-06-28 12:53:11
您發佈的代碼用於註冊COM服務器;你是否也實現(並運行)了實際的服務器? – 2009-06-28 13:26:16