C++ 为什么';找不到我所有的纽扣?
我应该写一个自动安装程序。只需启动一个程序,它就应该自己通过安装向导,用户不必触摸任何东西 我现在正在做的节目叫Cygwin。我想做的就是反复点击“下一步”按钮,直到安装完成。我知道我可以使用VBS,我知道我可以使用C#,这会让我的生活更轻松。但我有一个例子,说明它可以为另一个程序工作,我正在尝试将它改编成CygWin C++。C++ 为什么';找不到我所有的纽扣?,c++,installation,hwnd,findwindowex,C++,Installation,Hwnd,Findwindowex,我应该写一个自动安装程序。只需启动一个程序,它就应该自己通过安装向导,用户不必触摸任何东西 我现在正在做的节目叫Cygwin。我想做的就是反复点击“下一步”按钮,直到安装完成。我知道我可以使用VBS,我知道我可以使用C#,这会让我的生活更轻松。但我有一个例子,说明它可以为另一个程序工作,我正在尝试将它改编成CygWin C++。 HWND WINAPI FindWindowEx( _In_opt_ HWND hwndParent, _In_opt_ HWND
HWND WINAPI FindWindowEx(
_In_opt_ HWND hwndParent,
_In_opt_ HWND hwndChildAfter,
_In_opt_ LPCTSTR lpszClass,
_In_opt_ LPCTSTR lpszWindow
);
这是我用来查找按钮的函数,下一步应该单击它。
我在hwndParent中有一个节目窗口,效果很好。hwndChildAfter和lpszClass为“NULL”,lpszWindow是按钮的名称。这适用于按钮“Abbrechen”(德语表示取消)。但当我把这个名字改成“Weiter”(德语中的Next)时,它就不起作用了。他就是找不到。
我认为这与“韦特”的写作方式有关。这不仅仅是一个词。整个表达式是“Weiter>”
当然,我把整个表达式放在lpszWindow中,周围有“”,就像我用“Abbrechen”做的一样。
但就像我说的,他没找到。我尝试过各种各样的写作方法,但都不管用
是否有人知道“>”或“”(空格)是否有问题,并且因此无法阅读。如果是这样的话,有什么办法吗?
或者,是否可以获取按钮的ID或类似的信息,用于告诉程序在何处设置鼠标单击
我知道,正如我所说的,C++不是这个任务的最佳语言,我想我会换个别的。但我真的很想知道为什么它适用于“Abbrechen”,为什么它不适用于“Weiter>”
所以如果有人有解决办法,我会非常感激。谢谢 我怀疑按钮的实际文本不仅仅是“Weiter>”
,还包括一个&
,用于加速键。尝试按Alt
,查看是否有一个字母显示在其下方。如果是,则该字母的前缀为&
这个“解决方案”实际上相当脆弱,很容易被打破。例如,如果用户在其系统上配置了另一种语言,该怎么办
可以获取按钮的ID,该ID不太可能更改。但您必须首先找到安装程序窗口,然后枚举其子窗口。要查找按钮的ID,请按照Joseph在评论中的建议使用Spy++。尝试使用Spy++获取正确的文本,然后使用该文本查找handleHello,非常感谢您的回答。“Weiter>”前面确实有一个-(&Weiter>),所以现在一切都很好。谢谢你的时间Nik Bogalis和Joseph!