为什么 FindWindowEx 找不到我所有的按钮?
Why doesn't FindWindowEx find all my buttons?
我应该编写一个自动安装程序。你只需要启动一个程序,它就可以自己完成安装向导,而用户不会触碰任何东西。
我现在正在做的节目叫做Cygwin。我想做的就是反复点击"下一步"按钮,直到安装完成。我知道我可以使用VBS,我知道我也可以使用C#,这会让我的生活变得更轻松。但我有一个例子,说明它如何适用于另一个程序,我正在努力将其改编为C++中的Cygwin。
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,请按照JosephH在评论中的建议使用Spy++。
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- SDL 操纵杆按钮按下/C++
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- Qt中来自不同功能的按钮引用
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- ImGui 在单击按钮后冻结
- WinAPI 无法创建按钮
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 按钮按下打开 OLED ESP32
- 为什么 FindWindowEx 找不到我所有的按钮?