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

FXSCOMEX.dll 提供跟加健全的方法,可以说所有关于传真的操作都在这个dll中。
以下是传真中使用的主要方法:
- 首先定义一个封装传真人相关信息的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 传真编程的更多相关文章
- C#编程总结(八)数字签名
C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅.签名和盖章,由于公司业务开展,跨地域.跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄.传真等方式来解决,但是耗费时 ...
- C#编程之委托与事件四(二)【转】
C#编程之委托与事件(二) 我在上一篇文章(C#编程之委托与事件(一) )中通过示例结合的方法介绍了委托,在本文中,我同样以代码示例的方式来介绍C#里的事件机制. 二.事件 1.了解概 ...
- JAVA的面向对象编程--------课堂笔记
面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么 ...
- (转)C++ 编程规范
转载地址:http://www.cnblogs.com/len3d/archive/2008/02/01/1061902.html C/C++编码规范 今天人们越来越明白软件设计更多地是一种工程,而不 ...
- 使用非java代码编程
使用非JAVA代码 JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件 ...
- 小白的CTF学习之路8——节约内存的编程方式
今天第二更,废话不说上干货 上一章我们学习了内存和cpu间的互动方式,了解到内存的空间非常有限,所以这样就需要我们在编程的时候尽可能的节省内存空间,用最少的空间发挥最大的效果,以下是几种节约内存的方法 ...
- JAVA的面向对象编程
JAVA的面向对象编程 面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 全部的事物都有两个方面: 有什么(属性):用来描写叙 ...
- Android 网络编程 记录
简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
随机推荐
- MySQL 归纳总结
1.MySQL存储引擎 主要使用的就是两个存储引擎,分别是InnoDB和MyISAM. InnoDB InnoDB是MySQL的默认存储引擎.InnoDB采用MVCC来支持高并发,并且实现了四个标准的 ...
- D. Ehab the Xorcist
题意: 略: 感觉被演了一波,这是CFdiv2吗? 算是这个构造题吧. 1 首先我们可以将u进行二进制拆分来考虑.加入u>v那么小与v的那些数在怎么拼接也无法使异或值为u. 比如二进制U=1 0 ...
- 关于对vue-router的优化(详尽版)
这两天总结了关于vue-router优化的几点技法,做个笔记 在基于vue的移动端app中,通过vue-router可以便捷的进入某一路由或回退到上一路由,但是若不对vue-router做相关优化处理 ...
- C# 序列化之二进制
序列化:又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制.其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方. 一般有三种方式:1.是使用BinaryF ...
- python 携程asyncio实现高并发示例1
import asyncio #携程(携程不是函数) async def print_hello(): while True: print("hello world") await ...
- Bat 脚本 删除某一行
findstr /v /i /c:"kiwi" /c:"oranges" myfile.txt >newfile.txt
- Springboot以Tomcat为容器实现http重定向到https的两种方式
1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...
- Fedora 21下lingo14配置
Install lingo14 during Fedora 21 The first step:Download lingo14Download address:http://www.lindo.co ...
- libcurl库返回状态码解释与速查
libcurl库返回状态码解释与速查 CURLE_OK(0) 支持返回 CURLE_UNSUPPORTED_PROTOCOL(1) 你的URL传递给libcurl的使用协议,这libcurl的 ...
- C6 C7的开机启动流程
C6开机启动流程 1.内核引导,加电自检(通电后检查内核):检查bios的配置,检测硬件 装好系统之后才会进行以下内容 MBR 引导 (3.2.1...) GRUB菜单 (选择不同的系统)(按e,进入 ...