我的雇主已经从Conveter Technology购买了第三方工具OfficeConverter,它可以自动将Office2003格式的文件转换/修复为Office2007格式。此工具还可以高度自动化Office 2003和2007格式之间的宏/ VBA代码要求的转换/更改。
我的问题是,在此转换过程中,该工具会打开目标Office产品,例如Excel,然后再打开目标用户文件(例如,Report.xls),然后检查任何VBA /宏代码是否有更改要求。问题是,如果Excel文件代码依赖于某个外部工具(如.OCX文件),并且该工具不存在于我正在执行此操作的PC上,则Excel将弹出一条消息,告知尚未找到该对象,停止整个转换过程(连续数千个文件),直到有人出现并手动单击适当的按钮来关闭对话框。
我想用VB6创建一个小的观看应用程序(嘿,我年纪大了,我的技术也很好)可以坐在同一台电脑上观察这些对话框,然后根据具体的消息,通过SendMessage API调用点击适当的按钮。
问题是我不能让SendMessage为我实际按下按钮,我试着给它发送回车键(vbKeyReturn),甚至是空格键(vbKeySpace),但是这个动作从来没有像它应该的那样导致对话框关闭。我可以让焦点切换到对话框上启用的任何按钮之间,但仅此而已。
我尝试过使用SendKeys,但它的可靠性要差得多,在我遇到的当前文档中强烈建议您这样做。
有什么建议吗?:)
发布于 2009-06-11 02:05:07
如果您有按钮的hWnd,并且机器是无人值守的,则可以很容易地使用MouseEvent将光标移动到按钮上并单击它。此示例包含一个drop-in ready模块,它将在给定窗口句柄的情况下为您完成繁琐的工作:
http://vb.mvps.org/samples/MouseEvent
否则,最直接的方法可能就是按顺序发送WM_LBUTTONDOWN和WM_LBUTTONUP。
编辑:如果你“只想完成它”,请采纳Jim的建议,并尝试Gary Chanson的Window Demon工具。
发布于 2009-06-11 02:32:38
看一看加里·钱森的this utility“窗口恶魔”
卡尔:我们多快就忘记了我们的朋友!
发布于 2009-06-11 23:17:11
我建议你看看AutoIt。
它非常适合这个任务,寻找一个上面有特定文本的窗口,然后单击一个按钮。在系统托盘中作为独立应用程序运行。
https://stackoverflow.com/questions/978557
复制相似问题