用于发送传真的 ISAPI 扩展






3.23/5 (13投票s)
一篇关于通过网页发送传真的文章
引言
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.asp 和 ready.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,您可以访问传真服务的所有基本事件。