none
如何将存在任务管理器中隐藏的tabtip键盘显示出来?? RRS feed

  • 问题

  • 您好:

    请问如何将(surface系统下)隐藏的TabTip键盘显示出来。我点击输入框,弹出tabtip键盘,点击右上角的关闭按钮后,系统键盘就不显示出来了,但是任务管理器中还有其TabTip.exe。试问如何将其隐藏的TabTip键盘显示出来。


    2019年8月5日 3:31

全部回复

  • 现象是这样的:

    我通过C++写了个调用TabTip程序,发现在windows 下可以打开TabTip,但是当我打包然后在surface上运行程序时,TabTip键盘没有弹出,我查看任务管理器中发现TabTip.exe已启动。试问这是为啥,我还需要怎么处理吗??

    先在这里提前谢谢啦。

    2019年8月2日 4:52
  • 现象是这样的:

    我通过C++写了个调用TabTip程序,发现在windows 下可以打开TabTip,但是当我打包然后在surface上运行程序时,TabTip键盘没有弹出,我查看任务管理器中发现TabTip.exe已启动。试问这是TabTip为啥没有弹窗,但是任务管理器中却有TabTip.exe 进程启动呢?我还需要怎么处理吗??

    先在这里提前谢谢啦。


    2019年8月2日 5:40
  • 你好,

    >>我通过C++写了个调用TabTip程序,发现在windows 下可以打开TabTip,但是当我打包然后在surface上运行程序时,TabTip键盘没有弹出,我查看任务管理器中发现TabTip.exe已启动。试问这是为啥,我还需要怎么处理吗??

    请问你是否链接了外接键盘或者笔之类的外接设备?如果有外接键盘,又想要触发屏幕键盘的话,是不可行的。

    关于您的设备问题,建议您可以尝试以下操作:
    1,右击任务栏,勾选显示触摸键盘按钮,如果无法自动弹出,可以手动点击屏幕键盘图标
    2,找到所有设置,设备,输入,确认不处于平板电脑模式且未连接键盘时显示触摸键盘有打开
    3,卸载屏幕键盘驱动:长按左下角微软图标(或者单击右键),选择设备管理器,点开“键盘”前面的小三角,找到“HID keyboard Device”, 单击右键卸载,卸载的时候不要勾选“删除此设备的驱动软件”,卸载完之后,回到桌面,选择电源,重启设备
    4,下载surface对应版本的驱动包来安装。若要了解操作方法,请参阅以下链接: https://support.microsoft.com/zh-cn/help/4023482/surface-download-drivers-and-firmware-for-surface?os=windows-10&=undefined。
    5,运行检测修复工具,具体的请您点击:https://answers.microsoft.com/zh-hans/surface/forum/surfbook-surfupdate/sdt%E4%B8%8B%E8%BD%BD%E8%BF%90%E8%A1%8C%E6%AD%A5/d284145f-1e8a-47db-8b85-e3fba642cf08 。

    Best Regards,

    Jeanine Zhang

    2019年8月2日 7:03
    版主
  • 您好:

    再次抱歉打扰到您,请问关于TabTip键盘,我能通过

    HWND TabTip = FindWindow(L"IPTip_Main_Window",0);

    找到TabTip窗口句柄,然后发现通过

    SendMessage(TabTip, WM_SYSCOMMAND, SC_Hide, 0);

    SendMessage(TabTip, WM_SYSCOMMAND, SC_SHOW, 0);

    为啥没有将其调用起来显示或者隐藏,是否与驱动有关,如果是,我还需要做相关啥处理。


    2019年8月2日 7:40
  • 您好:

    对于这个问题,我有些困惑,具体有两个方面问题?

    1. tabtip与osk键盘区别?

    2.我想知道如何能控制TabTip键盘的显隐与关闭?

    为啥我采用关闭osk系统键盘的方式去关闭tabtip却没有效果。

    首先获取TabTip窗口句柄,然后

     SendMessage(TabTip,WM_SYSCOMMAND, WM_CLOSE, 0);

    通过这种方式 也没能隐藏或者显示出来。

    请问这是为啥呢??



    希望您能帮我回答一下,谢谢您。

    2019年8月4日 3:26
  • 你好,

    TabTip设计是针对的是平板模式的Win10系统,你可以打开平板模式去使用它。平板模式的入口如下图所示。

    在常规Win10系统中使用它的时候,是存在你所说的那种情况。我认为这是它的特性所致的,当你打开它的时候,它处于运行状态,只响应平板模式的命令,例如下图中的这个键盘符号。由于处于运行状态,所以你再去点击打开Tabtip.exe,并不会弹出辅助键盘。因此推荐你在平板模式下使用Tabtip。

    Best Regards,

    Suarez Zhou


    2019年8月5日 7:26
  • 您好:

    是这样的 ,我就是想通过程序控制键盘使用,但是我有两点困惑,就是说。

    我在windows 时 能关闭tabtip键盘,但是在surface下时,如果tabtip处于运行状态,那无法关闭键盘,同时想通过sendMessage命令也没法让他弹出。我想知道如何可以通过程序去控制tabtip显示与隐藏?

    2019年8月5日 7:32
  • 你好,

    Surface也是搭载的Win10系统,不清楚你是不是指的你在桌面模式下无法关闭键盘呢?因为我们测试发现在桌面模式下是无法关闭键盘的,而平板模式下工作正常。

    >>我想知道如何可以通过程序去控制tabtip显示与隐藏?

    你可以参考这个链接:https://stackoverflow.com/questions/38774139/show-touch-keyboard-tabtip-exe-in-windows-10-anniversary-edition

    Best Regards,

    Suarez Zhou


    2019年8月5日 8:06

  • 您好,

    您发布的这个问题与https://social.msdn.microsoft.com/Forums/zh-CN/6106c258-ffc1-4f09-985a-401f19e5183e/tabtip?forum=visualcpluszhchs问题重复,我将会把这个线程合并过去。

    Best Regards,

    Jeanine Zhang
    2019年8月5日 8:20
    版主
  • 您好,

    您发布的这个问题与https://social.msdn.microsoft.com/Forums/zh-CN/6106c258-ffc1-4f09-985a-401f19e5183e/tabtip?forum=visualcpluszhchs问题重复,我将会把这个线程合并过去。

    Best Regards,

    Jeanine Zhang

    2019年8月5日 8:27
    版主
  • 你好,

    通过杀死进程再打开来实现显示和隐藏,可以符合你的要求。可以尝试底下这段代码来实现杀死TabTip的进程。

    #include "pch.h"
    #include <iostream>
    #include <windows.h>
    #include <TlHelp32.h>
    #include <tchar.h>
    //根据进程名获取进程ID
    BOOL GetPidByProcessName(TCHAR *pProcess, DWORD *dwPid)
    {
    	HANDLE hSnapshot;
    	PROCESSENTRY32 lppe;
    	//创建系统快照 
    	hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    
    	if (hSnapshot == NULL)
    		return FALSE;
    
    	//初始化 lppe 的大小 
    	lppe.dwSize = sizeof(lppe);
    
    	//查找第一个进程 
    	if (!::Process32First(hSnapshot, &lppe))
    		return FALSE;
    	do
    	{
    		if (_tcscmp(lppe.szExeFile, pProcess) == 0)
    		{
    			*dwPid = lppe.th32ProcessID;
    		}
    	} while (::Process32Next(hSnapshot, &lppe)); //查找下一个进程  
    
    	return TRUE;
    }
    BOOL KillProcess(DWORD ProcessId)
    {
    	HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
    	if (hProcess == NULL)
    		return FALSE;
    	if (!TerminateProcess(hProcess, 0))
    		return FALSE;
    	return TRUE;
    }
    int main()
    {
    	HWND TabTip = FindWindow(L"IPTip_Main_Window", 0);
    	if (!TabTip)
    	{
    		ShellExecute(NULL, L"open", L"C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe", NULL, NULL, SW_SHOW);
    	}
    	else
    	{
    		TCHAR a[256] = _T("TabTip.exe");
    		DWORD b = 0;
    		GetPidByProcessName(a, &b);
    		KillProcess(b);
    		ShellExecute(NULL, L"open", L"C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe", NULL, NULL, SW_SHOW);
    	}
    
    	
    }

    Best Regards,

    Suarez Zhou

    2019年8月12日 2:59
  • 你好,

    请问你的问题解决了吗?如果解决了,请帮忙标记有帮助或者正确的回复为答案,这会帮助其他有相同问题的人更快地找到解决方案。如果没有,欢迎随时提问。谢谢。

    Best Regards,

    Suarez Zhou
    2019年8月12日 3:00