这是我正在尝试做的事情:
我的应用程序具有允许将生成的文档传真的功能。此功能将文档打印到在系统中设置为传真打印机的打印机。它是兄弟,打印机名称是 Brother PC-FAX。目前,当启动打印作业时,打印驱动程序会打开一个对话框,用于输入传真号码、封面选项等。存储与文档相关联的传真号码。我正在尝试设置我的应用程序为用户注入传真号码,然后单击“开始”按钮。该对话框有快捷方式,它最初聚焦一个按钮,用户可以按 Shift+TAB 进入数字输入控件,然后接受 Ctrl+V 进行粘贴。然后用户可以按 Alt+O 来激活“开始”按钮。我以前的应用程序版本只是将传真号码复制到剪贴板,并将粘贴和单击操作留给用户,但我正在尝试进一步自动化。我目前的做法是
- 劫持 WndProc 以回答 WM_ACTIVATE 消息
- 如果窗口标题是“Brother PC-FAX”,那么
- 使用 SendKeys.Send() 发送“+{TAB}”、“^V”和“%O”
这将起作用,除非实际传真对话框似乎没有注册为实际窗口,例如,它可能只是打印驱动程序的对话框子窗体。我想出的唯一窗口标题是“打印”框,这是在任何打印机上每次打印时都会弹出的小窗口。这不允许 SendKeys 函数通过。
关于我应该如何处理这个问题的任何想法?如果驱动程序具有允许自定义命令调用的 SDK,那就太好了,但事实并非如此。