我正在尝试用c ++代码关闭Windows屏幕键盘(osk.exe),但没有任何成功。
HWND kbIsOpen = FindWindow(TEXT("OSKMainClass"),NULL);
CloseWindow(kbIsOpen);
CloseWindow
或SendMessage
没有做任何事情。
请注意,问题不在kbIsOpen
中,getLastError
也会返回5 (ERROR_ACCESS_DENIED)
。
我可以做些什么来解决这个问题?
答案 0 :(得分:2)
假设FindWindow
返回有效的窗口句柄,SendMessage(kbIsOpen, WM_DESTROY, NULL, NULL);
应该关闭它。 (虽然这是一种危险的方法。请先尝试发送WM_CLOSE
和WM_QUIT
。)
然而,键盘窗口可能会抛弃破坏消息,并且无论你向它投掷什么,它都会继续前进。我正在运行Windows 7,所以我不能告诉你自己。
<不重要的意见> bkIsOpen
听起来像一个布尔变量的名称,告诉你窗口是否打开,而不是窗口的句柄(如果存在)。 < /不重要的意见>