簡體   English   中英

win32client分發在python中失敗,而win32 :: ole new在perl中成功為com dll運行

[英]win32client dispatch fails in python while win32::ole new runs successfully in perl for a com dll

我有一個用C#實現的com dll,並且通過regasm注冊。 當我嘗試通過python獲取此dll的句柄時

handle = win32com.client.Dispatch('{EC456B4B-5AC4-46E8-99E8-54C193C316BC}')

要么

handle = win32com.client.Dispatch('MyCOMdll')

它失敗並顯示錯誤:(-2147221164,“類未注冊”,無,無)

雖然這在我使用的perl腳本中有效

my $handle = Win32::OLE->new('MyCOMdll');

要么

my $handle = Win32::OLE->new('{EC456B4B-5AC4-46E8-99E8-54C193C316BC}');

同時,win32com.client.Dispatch對於COM exe對象運行良好。

我將win32.comclient用於COM dll的方式正確嗎?


[更新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;

僅適用於COM exe而不適用於COM dll的Python代碼

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版本后,此問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM