0

我正在尝试用 C++ 代码关闭 Windows 屏幕键盘(osk.exe),但没有任何成功。

HWND kbIsOpen = FindWindow(TEXT("OSKMainClass"),NULL);
CloseWindow(kbIsOpen);  

CloseWindow或者SendMessage什么都没做。请注意,问题不在kbIsOpen,而且还getLastError返回5 (ERROR_ACCESS_DENIED)

我能做些什么来解决这个问题?

4

1 回答 1

2

假设FindWindow返回一个有效的窗口句柄,SendMessage(kbIsOpen, WM_DESTROY, NULL, NULL);应该关闭它。(虽然这是一种危险的方式。尝试先发送WM_CLOSEWM_QUIT

但是,键盘窗口可能会丢弃销毁消息,并且无论您向它扔什么都会继续运行。我正在运行 Windows 7,所以我不能自己告诉你。

<不重要的意见>bkIsOpen听起来像是一个布尔变量的名称,告诉您窗口是否打开,而不是窗口的句柄(如果存在)。< /不重要的意见>

于 2014-03-10T19:58:16.790 回答