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

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

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

  1. 首先定义一个封装传真人相关信息的Bean
  //定义传真需要封装的传真人相关的信息
public class FaxPeopleBean
{
public string Name;
public string FaxNumber;
public string Company; public DateTime ScheduleTime; public FaxPeopleBean()
{
ScheduleTime = QLOAParams.DtSqlDbMinValue;
}
}

  2. 发送传真的方法

         public object sendFaxBatchDoc(FaxPeopleBean recipient, FaxPeopleBean sender, List<string> docList)
{
bool isConnected=false;
FaxServer objFaxServer=null;
try
{
objFaxServer = new FaxServer();
FaxDocument objFaxDocument = new FaxDocument();
Object jobIds;//每次发送后,都会返回一个传真作业id,用于监控此传真的发送情况
//Connect to the fax server
objFaxServer.Connect(""); //""代表连接到本地机器服务,也可以使用其它网络传真服务器
isConnected = true;
SetOutgoingQueue(objFaxServer);
objFaxDocument.Sender.Name = sender.Name;
objFaxDocument.Sender.Company = sender.Company;
objFaxDocument.Sender.FaxNumber = sender.FaxNumber;
if (sender.ScheduleTime != QLOAParams.DtSqlDbMinValue)
{
// Specify that the fax is to be sent at a particular time
objFaxDocument.ScheduleType = FAXCOMEXLib.FAX_SCHEDULE_TYPE_ENUM.fstSPECIFIC_TIME;
//CDate converts the time to the Date data type
objFaxDocument.ScheduleTime = sender.ScheduleTime;
} //Set the fax priority
objFaxDocument.Priority = FAXCOMEXLib.FAX_PRIORITY_TYPE_ENUM.fptHIGH;
// 'Add the recipient
objFaxDocument.Recipients.Add(recipient.FaxNumber, recipient.Name);
string[] files = docList.ToArray();
object bodys = files;
objFaxDocument.Bodies = bodys;
int result = objFaxDocument.ConnectedSubmit2(objFaxServer, out jobIds);
return jobIds;
}
finally
{
if (isConnected && objFaxServer!=null)
{
objFaxServer.Disconnect();
}
}
}

  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次后不再发生
objFaxOutgoingQueue.RetryDelay = ; //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 枚举可以实时的获取,传真的发生情况,具体的操作代码可以写作这里
     }

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

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

    C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅.签名和盖章,由于公司业务开展,跨地域.跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄.传真等方式来解决,但是耗费时 ...

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

    C#编程之委托与事件(二)       我在上一篇文章(C#编程之委托与事件(一) )中通过示例结合的方法介绍了委托,在本文中,我同样以代码示例的方式来介绍C#里的事件机制. 二.事件   1.了解概 ...

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

    面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么 ...

  4. (转)C++ 编程规范

    转载地址:http://www.cnblogs.com/len3d/archive/2008/02/01/1061902.html C/C++编码规范 今天人们越来越明白软件设计更多地是一种工程,而不 ...

  5. 使用非java代码编程

    使用非JAVA代码     JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件 ...

  6. 小白的CTF学习之路8——节约内存的编程方式

    今天第二更,废话不说上干货 上一章我们学习了内存和cpu间的互动方式,了解到内存的空间非常有限,所以这样就需要我们在编程的时候尽可能的节省内存空间,用最少的空间发挥最大的效果,以下是几种节约内存的方法 ...

  7. JAVA的面向对象编程

    JAVA的面向对象编程 面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 全部的事物都有两个方面: 有什么(属性):用来描写叙 ...

  8. Android 网络编程 记录

    简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...

  9. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

随机推荐

  1. J - A strange lift

    计院有一个bug电梯,可能是hyk造的,很多bug,电梯只有两个按钮,“上”和“下”,电梯每层都可以停,每层都有一个数字Ki(0<=Ki<=n),当你在一层楼,你按“上”键会到1+K1层, ...

  2. code-breaking picklecode中对signed_cookies引擎分析

    最近做了 ph 牛的 code-breaking,在做 picklecode 这一题时,没有搞懂那个 django 的 signed_cookies 引擎对 session 的操作,就 debug 了 ...

  3. vue结合百度地图Api实现周边配置查询及根据筛选结果显示对应坐标详情

    在我们平常写房地产相关项目的时候经常会用到百度地图,因为这一块客户会考虑到房源周围的配套或者地铁线路所以在这类项目中就不可以避免的会用到百度地图,当然这只是其中一种,其他地图工具也可以,因为我这个项目 ...

  4. 挑战全网最幽默的Vuex系列教程:第五讲 Vuex的小帮手

    先说两句 前面已经讲完了 Vuex 下的 State.Getter.Mutation 及 Action 这四驾马车,不知道大家是否已经理解.当然,要想真正熟练掌握的话,还是需要不断的练习和动手实践才行 ...

  5. Apache Rewrite实现URL的跳转和域名跳转

    Apache Rewrite实现URL的跳转和域名跳转   Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.h ...

  6. The new SFCB broker fails to start with a SSL-related error: Failure setting ECDH curve name (secp22

    # openssl ecparam -list_curves secp384r1 : NIST/SECG curve over a 384 bit prime field secp521r1 : NI ...

  7. fseek 在以字符串模式打开的文件中工作不正常 [MSDN]

    For streams opened in text mode, fseek and _fseeki64 have limited use, because carriage return-linef ...

  8. 【java基础】01 计算机基础知识

    一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...

  9. 【三剑客】awk运算符

    1. 算术运算符:+,-,*,/,% [root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a+b)=",(a+b)}' (a+b)= ...

  10. MySQL简介和安装

    一.关系型数据库初识 1.1 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我 ...