0

我的雇主从 Conveter Technology 购买了第三方工具 OfficeConverter,它可以自动将 Office 2003 格式的文件转换/修复为 Office 2007 格式。该工具还可以高度自动化 Office 2003 和 2007 格式之间的宏/VBA 代码要求的翻译/更改。

我的问题是,在此转换过程中,该工具正在打开目标 Office 产品,例如 Excel,然后打开目标用户文件(即 Report.xls),然后检查任何 VBA / 宏代码的更改要求。问题是如果 Excel 文件代码依赖于某些外部工具,如 .OCX 文件,并且如果我正在执行此操作的 PC 上不存在该工具,Excel 将弹出一条消息,指出该对象具有未找到,停止整个转换过程(连续数千个文件),直到有人出现并手动单击相应的按钮以关闭对话框。

我认为在 VB6 中创建一个小型监视应用程序(嘿,我老了,我的技能也一样)可以坐在同一台 PC 上并监视这些对话框,并根据具体消息,通过 SendMessage 单击适当的按钮API 调用。

问题是我无法让 SendMessage 真正为我按下按钮,我尝试向它发送返回键值 (vbKeyReturn) 甚至空格键 (vbKeySpace) 但该操作从未导致对话盒子应有的关闭。我可以将焦点放在对话框上启用的任何按钮之间的选项卡上,但仅此而已。

我曾尝试使用 SendKeys,但在我遇到的当前文档中,它的可靠性要低得多,并且强烈建议不要这样做。

有什么建议么?:)

4

3 回答 3

4

如果您有按钮的 hWnd,并且机器无人看管,您可以轻松地使用 MouseEvent 将光标移动到按钮上并单击它。此示例包含一个插入式就绪模块,只需窗口句柄即可为您完成繁琐的工作:

http://vb.mvps.org/samples/MouseEvent

否则,最直接的方法可能是只发送WM_LBUTTONDOWNWM_LBUTTONUP顺序。

编辑:如果您“只是想完成它”,请采纳 Jim 的建议并尝试 Gary Chanson 的Window Demon工具。

于 2009-06-11T02:05:06.887 回答
2

看看Gary Chanson 的这个实用程序“Window Demon”

卡尔:我们忘记我们的朋友有多快!

于 2009-06-11T02:32:37.563 回答
1

我建议看看AutoIt

它非常适合这项任务,寻找一个带有特定文本的窗口,然后单击一个按钮。作为独立应用程序在系统托盘中运行。

于 2009-06-11T23:17:10.713 回答