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     }

  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 枚举可以实时的获取,传真的发生情况,具体的操作代码可以写作这里
     }
时间: 2024-12-19 11:22:27

FAXCOM和FXSCOMEX 传真编程的相关文章

.NET Compact Framework的软件编程开发工具包

LEADTOOLS Mobile Imaging控件是一款针对微软.NET Compact Framework的软件编程开发工具包:采用它,开发者能在个人数字助理(PDA)及移动电话等设备应用设计中使用LEADTOOLS的图象处理功能. 产品特征: 文件格式支持- 支持常见的各种标准图像格式读.写和转换,包括JPEG.JPEG2000.LEAD CMP,.LEAD CMW.TIFF(可以是未压缩的.采用RLE压缩.采用LZW压缩.采用传真(CCITT/G3/G4)压缩).及GIF.PNG.BMP

C#编程总结(八)数字签名

C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅.签名和盖章,由于公司业务开展,跨地域.跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄.传真等方式来解决,但是耗费时间.人力.物力.在网络化日益深入的今天,需要领导审批.签字盖章的东西越来越多,时间也越来越紧迫,数字签名的出现,很好了解决了这一问题.推动了互联网及跨国集团的发展. 数字签名 1.概念 数字签名基于哈希算法和公钥加密算法,对明文报文先用哈希算法计算摘要,然后用私钥对摘要进行加密,得到的值就是原文的数

JAVA的面向对象编程--------课堂笔记

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象.   为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律. 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节. 方法的定义非常重要.方法有参

Android 网络编程 记录

简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面向数据的协议   TCP协议 传输控制协议,传输层通信协议.   UDP协议 用户数据报协议.传输层协议.   SMTP协议 简单邮件传输协议   SOCKET 套接字 应用层与TCP/IP协议族通信的中间软件抽象层. 类型有两种:TCP套接字和UDP套接字. TCP套接字   在保证可靠性上,採用

JAVA的面向对象编程

面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象. 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律. 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节. 方法的定义非常重要.方法有参数,也可能有返回值. 注意区分:对象(本身).对象的实现者.

C#编程之委托与事件四(二)【转】

C#编程之委托与事件(二) 我在上一篇文章(C#编程之委托与事件(一) )中通过示例结合的方法介绍了委托,在本文中,我同样以代码示例的方式来介绍C#里的事件机制. 二.事件   1.了解概念      事件就是当对象或类状态发生改变时,对象或类发出的信息或通知.发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.

编程比喻之protocol和delegate之间的关系

编程比喻之protocol和delegate之间的关系 开篇: 当你还在忍受传统老套的讲解,被专业术语搞的晕头转向时,编程比喻横空出世,且打个酱油再回. 卖萌结束, 主角 protocol/delegate之间的爱恨情仇. 小故事 寿寿最近心血来潮,注册了一家公司iceAna,打算搞ios开发,心想:反正现在的公司没业务,一台电脑一个人足以.就这样,代码寿寿写,设计寿寿搞,连拖地烧饭都得自己干! 重要寿寿开发的一款软件得到了上市公司的赏识,立马给了500万投资.寿寿心想,公司要做到看来靠一个人的

高级Bash脚本编程指南

http://tldp.org/LDP/abs/html/ 高级Bash脚本编程指南对脚本语言艺术的深入探索 本教程不承担以前的脚本或编程知识,但进展迅速走向一个中级/高级水平的指令...一直偷偷在细小的UNIX®智慧和学识.它作为一本教科书,一本手册,自学,并作为一个参考和知识的来源,壳牌的脚本技术.练习和大量的评论实例请读者参与,在这样的前提下,真正学习脚本的唯一途径是编写脚本.这本书是适合课堂使用的一般介绍编程的概念.本文件被授予公共领域.没有版权! 奉献对于安妮塔,所有魔术的来源内容表第

异常笔记--java编程思想

开一个新的系列,主要记一些琐碎的重要的知识点,把书读薄才是目的...特点: 代码少,概念多... 1. 基本概念 异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出异常.抛出异常后发生的几件事: 1.在堆上创建异常对象. 2.当前的执行路径中止                                          3. 当前环境抛出异常对象的引用.                                         4. 异常处理机制接