【问题标题】:How to close windows on screen keyboard with c++如何使用 C++ 关闭屏幕键盘上的窗口
【发布时间】:2014-03-10 19:48:03
【问题描述】:

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

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

CloseWindowSendMessage 什么都没做。 注意问题不在kbIsOpen,而且getLastError返回5 (ERROR_ACCESS_DENIED)

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

【问题讨论】:

  • 你也可以杀掉这个进程,我猜这样会更合适。
  • CloseWindow 功能:最小化(但不破坏)指定窗口。
  • Windows API 调用只会向应用程序发送关闭窗口事件,但应用程序可以拒绝此
  • 另外,请参阅激活用户访问控制后,您可能需要提升应用程序的权限才能执行此操作。
  • 如果您可以通过隐藏窗口而不是完全杀死应用程序来解决问题,请尝试ShowWindow

标签: c++ windows on-screen-keyboard


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2013-08-28
    相关资源
    最近更新 更多