在python中win32client分派失败,而win32::ole new在perl中为com d成功运行

2024-09-25 08:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用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)

Tags: comclientnewmyresultperlwin32comdll