2011-08-17 60 views
1

我正在使用RightFax COM API。我想要做的只是發送附件的傳真。簡單的權利?這個問題已經回答了幾次。但是,當我在應用程序中使用某些代碼時,我遇到了一些麻煩。使用RFCOMAPIlib(RightFax COM API):無法投射COM對象

應用:RightFax的9.4
語言:C#(ASP.NET應用程序)
IDE:微軟的Visual Web開發。快速
目標框架:.NET 3.5
操作系統:Windows 7

using ... 
public static void SendFax(<arguments>) 
{ 
    RFCOMPAPILib.FaxServerClass fs = new RFCOMAPILib.FaxServerClass(); 
    fs.Name = "faxSvrName"; 
    // BOOM, exception 
} 

我也不讓過去的服務器的名稱。

異常詳細信息:
無法轉換類型的COM對象 'RFCOMAPILib.FaxServerClass' 到接口類型 'RFCOMAPILib.Form'。此操作失敗,因爲IID爲「{9F386618-764B-48F8-A5BF-3682B03DE840}」的接口的COM組件上的QueryInterface調用由於以下錯誤而失敗:沒有此類接口支持(異常來自HRESULT:0x80004002(E_NOINTERFACE)) 。

所以。有什麼建議麼?

回答

1

這個COM接口被過度設計了一下,但是這種模式並不罕見。 COM coclass可以實現多個接口,其中之一是默認接口。該機制在.NET中不存在,它不支持多重繼承或默認接口的概念。 Tlbimp用名稱mumbleClass合成一個假包裝類來包裝一個名爲mumble的coclass。這是所有接口實現的所有方法的一大袋。異常信息告訴你的是,FaxServer coclass的默認界面被命名爲「Form」。並且該RFCOMAPILib.Form不能轉換爲RFCOMAPILib.FaxServerClass。沒有什麼驚喜。

你需要重寫代碼類似的東西這樣的:

RFCOMPAPILib.FaxServer fs = new RFCOMAPILib.FaxServerClass(); 
fs.Name = "faxSvrName"; 

我完全在接口名稱猜測,一些賠率「IFaxServer」。使用對象瀏覽器查找實際名稱。

+0

正確猜測接口名稱。我會對它進行測試,並在明天結果復出。謝謝。 – Erik

+0

工作。它仍然不會發送:P 現在我只需要確定這個故障,可能是更多的事情與服務器比現在的程序。感謝您的幫助! – Erik