我有一个用C实现的com dll,并通过regasm注册。 当我试图通过
handle = win32com.client.Dispatch('{EC456B4B-5AC4-46E8-99E8-54C193C316BC}')
或者
^{pr2}$它失败,并出现错误:(-2147221164,“类未注册”,无,无)
而这在我使用的perl脚本中起作用
my $handle = Win32::OLE->new('MyCOMdll');
或者
my $handle = Win32::OLE->new('{EC456B4B-5AC4-46E8-99E8-54C193C316BC}');
同时win32com.client.Dispatch公司对COM exe对象有效。在
我对COM DLL使用win32.COM客户端的方式正确吗?在
[更新01]
正在工作的perl代码
use Win32::OLE;
my $handle = Win32::OLE->new('MyCOMdll');
# my $handle = Win32::OLE->new('{EC456B4B-5AC4-46E8-99E8-54C193C316BC}');
my $result = Win32::OLE->LastError();
if ($result != 0)
{
print("OLE Error: ",$result,"/n");
die "";
}
else
{
print("OLE Success!!/n");
}
exit 0;
Python代码,它只适用于COM exe而不适用于COM dll
import win32com.client
try:
handle = win32com.client.Dispatch('MyCOMdll')
# handle = win32com.client.Dispatch('{EC456B4B-5AC4-46E8-99E8-54C193C316BC}')
except Exception as ex:
handle = None
print(ex)
这是一个32位/64位的问题。在使用了32位python版本之后,这个问题得到了解决。在
相关问题 更多 >
编程相关推荐