我应该写一个自动安装程序。只是你启动的一个程序,它应该单独完成安装向导,而无需用户触摸任何东西。
我正在研究的程序名为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>”。
所以如果有人有解决方案,我会非常感激。谢谢!
答案 0 :(得分:3)
我怀疑该按钮的实际文本不仅仅是"Weiter >"
,还包含&
,用于加速键。尝试按Alt
,看看下面是否出现带有非核心字母的字母。如果是,那么该字母的前缀为&
。
这个“解决方案”实际上非常脆弱,很容易破解。例如,如果用户在其系统上配置了另一种语言,该怎么办?
可以获取按钮的ID,这不太可能改变。但您首先必须找到安装程序窗口,然后枚举其子窗口。要查找按钮的ID,请在他的评论中使用Spy ++作为JosephH建议。