Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么';找不到我所有的纽扣?_C++_Installation_Hwnd_Findwindowex - Fatal编程技术网

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

我应该写一个自动安装程序。只需启动一个程序,它就应该自己通过安装向导,用户不必触摸任何东西

我现在正在做的节目叫Cygwin。我想做的就是反复点击“下一步”按钮,直到安装完成。我知道我可以使用VBS,我知道我可以使用C#,这会让我的生活更轻松。但我有一个例子,说明它可以为另一个程序工作,我正在尝试将它改编成CygWin C++。
    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!