65.9K
CodeProject 正在变化。 阅读更多。
Home

用于发送传真的 ISAPI 扩展

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.23/5 (13投票s)

2002年3月27日

CPOL

3分钟阅读

viewsIcon

246824

downloadIcon

3184

一篇关于通过网页发送传真的文章

引言

Windows 2000/XP 提供了两种通过编程发送传真的方法,一种是通过 COM 对象 (faxcom.dll),另一种是通过 API (winfax.dll)。COM 对象也可以在 JScript 等脚本语言中使用,但它不如 API 灵活。另一方面,通过 API,您可以在发送过程中控制发送过程。为了能够通过网页发送传真,我使用 Fax-API 编写了一个 ISAPI 扩展。

要使用传真 API,您必须使用 Microsoft Platform SDK 中相应的头文件和库。您可以在 http://msdn.microsoft.com/download 免费下载 Platform SDK。

安装和配置

要能够使用 ISAPI 扩展,当然必须安装并正常运行 IIS 和 Microsoft 传真服务。在使用 ISAPI 扩展之前,您必须通过发送文档(例如,通过 Wordpad)到传真打印机来测试传真。

之后,创建一个新的 Web 文件夹,并使用 IIS 管理器从中创建一个应用程序。“应用程序的执行权限”必须设置为“脚本和可执行文件”,应用程序保护设置为“低(IIS 进程)

通过“身份验证方法”,必须阻止匿名访问

之后,将 ISAPI 扩展 (FaxISAPI.DLL) 和必要的 ASP 文件 (default.asp, progress.aspready.asp) 复制到 web 文件夹中。现在启动浏览器并输入 web 文件夹的地址(例如,“https:///fax”)并通过网页发送传真。

实现

FaxISAPI.DLL 的代码由三个 .cpp 文件组成。文件 extension.cpp 包含 ISAPI 扩展的函数,upload.cpp 包含用于上传的 C++ 类,fax.cpp 包含用于初始化传真服务器和发送传真的 C++ 类。

为了通知客户端有关上传和传真过程的状态信息,ISAPI-DLL 写入一个状态文件(此状态文件将在“c:\ winnt\temp”中创建,并且其名称对应于 Session ID + ".log")。
ASP 文件 progress.asp 由浏览器每秒刷新一次,并且 progress.asp 从状态文件读取服务器上的状态。

default.asp 包含从用户获取传真号码的 HTML 表单。然后,传真号码被传递给 choosefile.asp。文件 choosefile.asp 包含用于选择传真文件的 HTML 表单,并在“提交”时调用 FaxISAPI.DLL,并同时通过 JavaScript 用 progress.asp 打开一个新浏览器窗口。

上传要传真的文件

CUpload 类包含将一个文件上传到 Web 服务器的方法。该类将写入状态文件的字节数以及文件长度。此状态信息由 progress.asp 用于显示进度条。上传的文件中间存储在文件夹“c:\winnt\temp”中。

传真上传的文件

CFax 包含用于初始化/反初始化 (Init, DeInit) 传真服务的方法,以及用于发送传真文档的方法 (send)。当第一次加载 DLL 时,将调用 ISAPI.DLL 的方法 Init,当卸载 DLL 时,调用 DeInit。传真文档的实际发送过程在 CFax::Send 中实现。在传真发送后,ISAPI-DLL 完成其工作并将重定向发送到 ready.asp 到浏览器。然后,Ready.asp 向用户提供有关传真是否已成功发送的信息。

结论

通过传真 API,您可以访问传真服务的所有基本事件。

© . All rights reserved.