2011-08-17 86 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