• FAXCOM和FXSCOMEX 传真编程


    需要引用的dl,如下信息,早起使用的是FXSCOM.DLL,现在微软提供了相应的扩展,其程序集为,FXSCOMEX.dll

    FXSCOMEX.dll 提供跟加健全的方法,可以说所有关于传真的操作都在这个dll中。

    以下是传真中使用的主要方法:

    1. 首先定义一个封装传真人相关信息的Bean
     1  //定义传真需要封装的传真人相关的信息
     2   public  class FaxPeopleBean
     3     {
     4       public string Name;
     5       public string FaxNumber;
     6       public string Company;
     7 
     8       public DateTime ScheduleTime;
     9 
    10       public FaxPeopleBean()
    11       {
    12           ScheduleTime = QLOAParams.DtSqlDbMinValue;
    13       }
    14     }
    View Code

      2. 发送传真的方法

     1         public object sendFaxBatchDoc(FaxPeopleBean recipient, FaxPeopleBean sender, List<string> docList)
     2         {
     3             bool isConnected=false;
     4             FaxServer objFaxServer=null;
     5             try
     6             {
     7                 objFaxServer = new FaxServer();
     8                 FaxDocument objFaxDocument = new FaxDocument();
     9                 Object jobIds;//每次发送后,都会返回一个传真作业id,用于监控此传真的发送情况
    10                 //Connect to the fax server
    11                 objFaxServer.Connect(""); //""代表连接到本地机器服务,也可以使用其它网络传真服务器
    12                 isConnected = true;
    13                 SetOutgoingQueue(objFaxServer);
    14                 objFaxDocument.Sender.Name = sender.Name;
    15                 objFaxDocument.Sender.Company = sender.Company;
    16                 objFaxDocument.Sender.FaxNumber = sender.FaxNumber;
    17                 if (sender.ScheduleTime != QLOAParams.DtSqlDbMinValue)
    18                 {
    19                     // Specify that the fax is to be sent at a particular time
    20                     objFaxDocument.ScheduleType = FAXCOMEXLib.FAX_SCHEDULE_TYPE_ENUM.fstSPECIFIC_TIME;
    21                     //CDate converts the time to the Date data type
    22                     objFaxDocument.ScheduleTime = sender.ScheduleTime;
    23                 }
    24 
    25                 //Set the fax priority
    26                 objFaxDocument.Priority = FAXCOMEXLib.FAX_PRIORITY_TYPE_ENUM.fptHIGH;
    27                 // 'Add the recipient
    28                 objFaxDocument.Recipients.Add(recipient.FaxNumber, recipient.Name);
    29                 string[] files = docList.ToArray();
    30                 object bodys = files;
    31                 objFaxDocument.Bodies = bodys;
    32                 int result = objFaxDocument.ConnectedSubmit2(objFaxServer, out jobIds);
    33                 return jobIds;
    34             }
    35             finally
    36             {
    37                 if (isConnected && objFaxServer!=null)
    38                 {
    39                     objFaxServer.Disconnect();
    40                 }                  
    41             }
    42         }

      3. 用于设置传真的一些属性,必须连接过后才可以设置

           public void SetOutgoingQueue(FaxServer objFaxServer)
            {
                FaxOutgoingQueue objFaxOutgoingQueue;
                //'Get the outgoing queue object
                objFaxOutgoingQueue = objFaxServer.Folders.OutgoingQueue;
    
                //'Refresh the queue object
                objFaxOutgoingQueue.Refresh();
                objFaxOutgoingQueue.Retries = 10; //重试10次后不再发生
                objFaxOutgoingQueue.RetryDelay = 1;
    
    
                //The Branding property is a Boolean value that indicates whether the fax service generates a brand (banner)
                //at the top of outgoing fax transmissions. A brand contains transmission-related information, such as the transmitting
                //station identifier, date, time, and page count.
                objFaxOutgoingQueue.Branding = true;
            }

      4. 取消某个传真的发送

            public void CancelOutgoingQueue(string faxJobid)
            {
                FaxServer objFaxServer = new FaxServer();
                FaxOutgoingQueue objFaxOutgoingQueue;
                FaxOutgoingJob objFaxOutgoingJob;
                //'Connect to the fax server
                objFaxServer.Connect("");
    
                //'Get the outgoing queue object
                objFaxOutgoingQueue = objFaxServer.Folders.OutgoingQueue;
                //'Refresh the queue object
                objFaxOutgoingQueue.Refresh();
    
                try
                {
                    objFaxOutgoingJob = (FaxOutgoingJob)objFaxOutgoingQueue.GetJob(faxJobid);               //找不到时会发生异常
                    objFaxOutgoingJob.Cancel();
                }
                catch { }
                objFaxServer.Disconnect();
            }

      5.  需要对传真发送情况进行监控

    FAXCOMEXLib.FaxServer _faxServer= new FaxServer();
                _faxServer.Connect("");
                _faxServer.OnOutgoingJobChanged +=FaxServer_OnOutgoingJobChanged;
     _faxServer.ListenToServerEvents( FAXCOMEXLib.FAX_SERVER_EVENTS_TYPE_ENUM.fsetFXSSVC_ENDED | FAXCOMEXLib.FAX_SERVER_EVENTS_TYPE_ENUM.fsetOUT_QUEUE;

      6. 监控的方法在这里

         public void FaxServer_OnOutgoingJobChanged(FAXCOMEXLib.IFaxServer pFaxServer, string bstrJobId, FAXCOMEXLib.IFaxJobStatus pJobStatus)
            {
    
            //根据pJobStatus 枚举可以实时的获取,传真的发生情况,具体的操作代码可以写作这里
         }
  • 相关阅读:
    linux下编译sphinx拓展
    Java为什么使用连接池
    内部类之.this&&.new
    何为代理
    Qt install Phonon
    Gcc简介与常用命令
    Vim的设置和使用——编程者
    QT程序启动界面的使用
    slide from one widget to another
    Hide the common top menu in Ubuntu 12.04
  • 原文地址:https://www.cnblogs.com/gscvery/p/4248997.html
Copyright © 2020-2023  润新知