gpt4 book ai didi

c++ - 为什么 FindWindowEx 找不到我所有的按钮?

转载 作者:行者123 更新时间:2023-11-30 02:57:10 24 4
gpt4 key购买 nike

我应该编写一个自动安装程序。只是您启动的一个程序,它应该自行完成安装向导,无需用户进行任何操作。

我目前正在开发的程序叫做 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”的编写方式有关。它不仅是唯一的词。整个表达式是“Weiter >”当然,我将整个表达式放在 lpszWindow 中,并在其周围加上“”,就像我对“Abbrechen”所做的那样。但就像我说的,他没有找到它。我已经尝试了编写它的所有变体,但它不起作用。

有谁知道“>”或“”(空格)是否有问题,因此他无法阅读。如果是这样,有什么办法吗?或者是否有可能获得按钮的 ID 或类似的东西,可以用来告诉程序在哪里设置鼠标点击。

我知道,正如我所说,C++ 并不是完成这项任务的最佳语言,最后我想我会改用其他语言。但我真的很想知道为什么它适用于“Abbrechen”以及为什么它不适用于“Weiter >”。

因此,如果有人有解决方案,我将不胜感激。谢谢!

最佳答案

我怀疑按钮的实际文本不仅仅是"Weiter >",而且还包括一个&,因为加速键。尝试按 Alt 并查看是否出现了一个字母,该字母下方带有下划线。如果是,则该字母以 & 为前缀。

这个“解决方案”实际上非常脆弱,很容易崩溃。例如,如果用户在他们的系统上配置了另一种语言怎么办?

可以获取按钮的 ID,该 ID 不太可能更改。但是您首先必须找到安装程序窗口,然后枚举它的子窗口。要查找按钮的 ID,请按照 JosephH 在其评论中的建议使用 Spy++。

关于c++ - 为什么 FindWindowEx 找不到我所有的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com