win10触摸键盘TabTip软件特性

本文探讨了在Windows 10中尝试通过API隐藏或控制触摸键盘遇到的问题,包括IsWindowVisible、GetWindowPlacement和GetWindowLong等方法在检查键盘状态时的失效情况。同时,介绍了尝试通过ShellExecute、QProcess和CreateProcess后台运行触摸键盘进程无效的案例。此外,还讨论了禁用登录窗口输入法以及通过修改注册表设置防止触摸键盘自动唤醒但需重启生效的状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • win10触摸键盘通过::SendMessage隐藏方式没有效果
    HWND hWnd = ::FindWindow(L"OSKMainClass", NULL);
    if ( hWnd )
    {
        ::SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    }
  • win10触摸键盘无法找到状态窗口状态,isWidowsVisible,GetWindowPlacement,GetWindowLong,状态没有变化

// IsWindowVisible不管是显示还是隐藏返回值一直是false
    HWND hWnd = ::FindWindow(L"IPTip_Main_Window", NULL);
    bool visible= ::IsWindowVisible(hWnd);
// GetWindowPlacement,不管是显示还是隐藏showCmd状态一直true
    HWND hWnd = ::FindWindow(L"IPTip_Main_Window", NULL);
    WINDOWPLACEMENT wp = {};
    wp.length = sizeof(WINDOWPLACEMENT);
    bool placement = ::GetWindowPlacement(hWnd , &wp);
    bool visible = wp.showCmd;
//  GetWindowLong不管是显示还是隐藏返回值是0x84000000,WS_POPUP&WS_CLIPSIBLINGS,visible一直是false
    HWND hWnd = ::FindWindow(L"IPTip_Main_Window", NULL);
    unsigned int style = ::GetWindowLong(hWnd, GWL_STYLE);
    bool visible = (style & WS_VISIBLE);

  • win10触摸键盘无法后台运行进程界面不显示,shellExecute,QProcess,CreateProcess方式

// 无法后台运行隐藏隐藏界面
ShellExecute(NULL, L"open", L"C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe", NULL, NULL, SW_HIDE);

  • win10触摸键盘不弹出,登录窗口用禁用输入法,代码如下,但是如果有继承关系的父控件无法获取鼠标相关事件;

    // 屏蔽系统键盘
    HWND hWnd = (HWND)this->winId();
    HIMC _IMC = ImmGetContext(hWnd);
    if (hWnd && IsWindow(hWnd))
    {
        ImmAssociateContext(hWnd, NULL);
        ImmSetOpenStatus(_IMC, FALSE);
        if (!ImmReleaseContext(hWnd, _IMC))
        {
            // 禁用失败
        }
    }

    // 启用
    // ImmAssociateContext(hWnd, _IMC );

  • win10触摸键盘自动唤醒设置关闭后,win10触摸键盘不回唤起,利用注册表设置win10触摸键盘自动唤醒设置,但是需要重启系统才能生效,修改注册表无法实时生效;
    QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\TabletTip\\1.7",         
    QSettings::NativeFormat);
    if(reg.contains("EnableDesktopModeAutoInvoke"))
    {
        // 关闭系统键盘自动唤醒
        QVariant value = reg.value("EnableDesktopModeAutoInvoke");//写注册表
        if(value.toInt() == 1)
        {
            // 当前唤醒系统键盘设置为1
            return true;
        }
        else
        {
            // 当前唤醒系统键盘设置为0
            return false;
        }
    }
    else
    {
        // 没有自动唤醒系统键盘注册表设置
        return false;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值