当前市场下,Windows平板一般搭载的win10 或win8系统, 本文主要是针对平板上不知什么时候触发屏幕键盘,因为,有时候平板会有外接键盘,如果有外接键盘,又触发屏幕键盘的话,又不对了;
屏幕键盘有两种:osk 和 taptip
启动 osk 代码为:Process.Start("osk");
启动taptip代码为:
var tip=Process.GetProcesses().FirstOrDefault(o=>o.ProcessName.Equals("TabTip"));
if(tip!=null) tip.Kill();
Process.Start(@"C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe");
如果TabTip线程在运行的话,直接启动不会显示到桌面,所以启动前先关闭一下在启动;
启动前判断是否有外接键盘(因为本人主要使用的是surface,所以代码只针对surface外接键盘):
var sys=new ManagementClass("Win32_ComputerSystem").GetInstances().Cast<ManagementObject>().FirstOrDefault();
var modelName=sys.Properties.Cast<PropertyData>().FirstOrDefault(o=>o.Name.Equals("Model")).Value.ToString().ToLower().Dump();
if(!modelName.Contains("surface")) return;
var keyboard=new ManagementClass("Win32_Keyboard").GetInstances().Cast<ManagementObject>().FirstOrDefault();
if(keyboard.Properties.Count>23) return;
var file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
if (!System.IO.File.Exists(file)) return;
var tip=Process.GetProcesses().FirstOrDefault(o=>o.ProcessName.Equals("TabTip"));
if(tip!=null) tip.Kill();
Process.Start(file).Dump();