Я пытаюсь закрыть экранную клавиатуру Windows (osk.exe) в коде C ++, но безуспешно.
HWND kbIsOpen = FindWindow(TEXT("OSKMainClass"),NULL);
CloseWindow(kbIsOpen);
CloseWindow
или же SendMessage
ничего не делал.
Обратите внимание, что проблема не в kbIsOpen
, а также getLastError
возвращается 5 (ERROR_ACCESS_DENIED)
,
Что я могу сделать, чтобы справиться с этой проблемой?
Если предположить, FindWindow
возвращает действительный дескриптор окна, SendMessage(kbIsOpen, WM_DESTROY, NULL, NULL);
должен закрыть это. (Хотя это довольно опасный способ сделать это. Попробуйте отправить WM_CLOSE
а также WM_QUIT
первый.)
Однако, возможно, что окно клавиатуры выбрасывает сообщения уничтожения, и просто продолжает работать, независимо от того, что вы к нему добавляете. Я использую Windows 7, поэтому я не могу сказать вам сам.
< неважное мнение> bkIsOpen
звучит как имя логической переменной, сообщающей, открыто ли окно, а не дескриптор окна, если оно существует. < / неважное мнение>
Других решений пока нет …