需要引用的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. 如何使用python在短时间内寻找完数

    完数:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该数 ...

  2. work of 1/5/2016

    part 组员                今日工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 UI页面切换,词本显示下滑条     6 继续下滑条等增删补 ...

  3. E - Farthest Nodes in a Tree

    Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. Th ...

  4. C. Standard Free2play --div

    https://codeforces.com/contest/1238/problem/C 题意:下台阶的时候只有一种方式,拉动当前台阶x的 level,然后当前的台阶关闭,调到下边的台阶x-1,如果 ...

  5. ORA-0245

    经常有客户报错ORA-0245 1.11.2 rac环境, rman存在snap控制文件路径,默认是文件系统[非共享,导致备份控制文件报错] 解决方法:将snap路径配置到ASM磁盘组共享路径[nfs ...

  6. SVM家族(一)

    SVM家族简史 故事要从20世纪50年代说起,1957年,一个叫做感知器的模型被提出, 1963年, Vapnikand Chervonenkis, 提出了最大间隔分类器,SVM诞生了. 1992年, ...

  7. js获取数组中最大值

    1.es6拓展运算符... Math.max(...arr) 2.es5 apply(与方法1原理相同) Math.max.apply(null,arr) 3.for循环 let max = arr[ ...

  8. 以内存级速度实现存储?XPoint正是我们的计划

    随着计算能力虚拟化技术的普及,存储机制在速度上远逊于内存这一劣势开始变得愈发凸显. 这一巨大的访问速度鸿沟一直是各项存储技术想要解决的核心难题:纸带.磁带.磁盘驱动器乃至闪存记忆体等等,而如今最新一代 ...

  9. 自定义Bootstrap样式弹出框

    最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...

  10. nginx日志、nginx日志切割、静态文件不记录日志和过期时间

    2019独角兽企业重金招聘Python工程师标准>>> 12.10 Nginx访问日志 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索l ...