Отправка сообщения BM_CLICK в приложение Windows 10 не работает

У меня есть диалог установки (сделанный с помощью 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? Это известная проблема?

1

Решение

Лучше отправить WM_COMMAND с идентификатором кнопки, но способ, которым вы работаете, работает также, если Lang всегда на английском языке. но проблема в вашем случае заключается в том, что кнопки в диалоге обычно имеют&»для обозначения сочетания клавиш, и обычно скрыты системой, если вы не нажмете клавишу Alt. (как меню).

итак: текст кнопки скорее всего будет&отменить»

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]