我有一个安装对话框(用nsis制作),有两个按钮(安装和取消)。我正在尝试使用低级别的win32 api为安装过程编写自动化测试。要单击按钮,我使用以下代码:
char windowName[] = "Desktop Application Setup";
char cancelButtonText[] = "Cancel";
HWND hWndMainWindow = NULL;
HWND hButton = NULL;
hWndMainWindow = FindWindow(NULL, windowName);
if (hWndMainWindow)
{
hButton = FindWindowEx(hWndMainWindow, NULL, NULL, cancelButtonText);
if (hButton)
{
SendMessage(hButton, BM_CLICK, 0, 0);
}
}
在Windows 7上,这非常有效。在Windows 10上,它什么都不做。它找到按钮,它会发送消息,但点击不会发生。
这是Windows 10中引入的一些安全问题吗?这是一个众所周知的问题吗?
答案 0 :(得分:0)
最好使用按钮的ID发送WM_COMMAND,但如果Lang总是使用英语,那么你的工作方式也有效。但你的情况的问题是对话框上的按钮通常有一个“&”表示键盘快捷键,通常由系统隐藏,除非你按下alt键。 (比如菜单)。
所以:按钮的文字最有可能是“& cancel”