1

我可以使用 FAXCOMLib 成功地传真消息。现在我尝试使用 FAXCOMEXLib,但我遇到了问题:/

这是代码(来自 MSDN VB 示例):

    try
    {
        FaxServer objFaxServer = new FaxServer();
        FaxDocument objFaxDocument = new FaxDocument();
        object JobID;

        objFaxServer.Connect(Environment.MachineName);
        objFaxDocument.Body = "test.bmp";
        objFaxDocument.DocumentName = "Test name";
        objFaxDocument.Recipients.Add("xxxxxxx", "Name");

        objFaxDocument.AttachFaxToReceipt = true;

        objFaxDocument.CoverPageType = FAXCOMEXLib.FAX_COVERPAGE_TYPE_ENUM.fcptSERVER;
        objFaxDocument.CoverPage = "generic";
        objFaxDocument.Note = "Here is the info you requested";
        objFaxDocument.ReceiptAddress = "someone@example.com";
        objFaxDocument.ReceiptType = FAXCOMEXLib.FAX_RECEIPT_TYPE_ENUM.frtMAIL;
        objFaxDocument.ScheduleType = FAXCOMEXLib.FAX_SCHEDULE_TYPE_ENUM.fstNOW;
        objFaxDocument.Subject = "Today's fax";

        objFaxDocument.Sender.Title = "Mr.";
        objFaxDocument.Sender.Name = "Bob";
        objFaxDocument.Sender.City = "Cleveland Heights";
        objFaxDocument.Sender.State = "Ohio";
        objFaxDocument.Sender.Company = "Microsoft";
        objFaxDocument.Sender.Country = "USA";
        objFaxDocument.Sender.Email = "someone@microsoft.com";
        objFaxDocument.Sender.FaxNumber = "12165555554";
        objFaxDocument.Sender.HomePhone = "12165555555";
        objFaxDocument.Sender.OfficeLocation = "Downtown";
        objFaxDocument.Sender.OfficePhone = "12165555553";
        objFaxDocument.Sender.StreetAddress = "123 Main Street";
        objFaxDocument.Sender.TSID = "Office fax machine";
        objFaxDocument.Sender.ZipCode = "44118";
        objFaxDocument.Sender.BillingCode = "23A54";
        objFaxDocument.Sender.Department = "Accts Payable";

        JobID = objFaxDocument.ConnectedSubmit(objFaxServer);

        MessageBox.Show(("The Job ID is :" + JobID.ToString()),"Finished");

        objFaxServer.Disconnect();

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString() + ". " + ex.ToString(), "Exception");
    }

该行引发异常: FaxServer objFaxServer = new FaxServer();

无法将类型为“System.__ComObject”的 COM 对象转换为接口类型“FAXCOMEXLib.FaxServer”。

当我这样做时:FaxServer objFaxServer = new FaxServerClass(); 我什至无法编译该行。它显示:Interop type 'FAXCOMEXLib.FaxServerClass' cannot be embedded. Use the applicable interface instead.

所以,我在那条线上被拦住了:/

顺便提一句。基本上,我想实现一个发送传真并查看已发送消息状态的类。如果有人发送一个完整的即用类,我会非常高兴。

请帮我,

4

2 回答 2

3

当我这样做时: FaxServer objFaxServer = new FaxServerClass(); 我什至无法编译那行

COM 对象的奇怪之处在于接口有时表现得好像它们有构造函数:

FaxServer objFaxServer = new FaxServer();

那是正确的路线。我有它,它可以工作。互操作可能有问题。

于 2012-08-21T13:16:15.577 回答
1

执行以下步骤来解决此问题:

  1. 从解决方案资源管理器的参考中选择 FAXCOMEXLib。
  2. 打开属性
  3. 将“启用互操作类型”设置为 False。
于 2014-07-05T10:08:45.977 回答