我有一个最初在VB.net 2010Express中开发的WPF应用程序。它在Windows XP上运行得很好,在非触摸屏的Windows7机器上也运行得很好。
这款应用程序是为触摸屏设计的,它的用户界面经过了整理,可以用来编辑数字等大按钮。它甚至还有一个小屏幕键盘,上面只有应用程序所需的按钮,所以你无法进入Windows。
不幸的是,我现在需要使用99.9%的代码来为Windows7触摸屏机器开发新版本的应用程序。它有合适的触摸屏驱动程序(万岁!)而不是鼠标模拟(boo),但每当你突出显示一个文本框时,它都会使Win7的小提示“打开OSK”出现,它卡住了我的UI顶部。
图片在这里:http://i.imgur.com/W8XthZF.jpg
我能不能以某种方式将TextBox调整为“不显示Win7 OSK提示符”?我现在使用的是Visual Studio Express 2013,仍然是用VB.net编程,但目标是.NET 4.5.2。
显然,最糟糕的解决方案是将TextBox向下移动足够远,这样就不会重叠,但我也想删除一种方便的方式,让用户启动Win7屏幕上的键盘,只需按下win键,然后开始玩纸牌或其他游戏。
发布于 2014-10-03 23:58:03
键盘由一个名为tabtip.exe的进程处理,通常位于@"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe“中;
1)您可以终止进程:
var p = Process.GetProcesses();
var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip"));
foreach (var item in n)
{
try
{
item.CloseMainWindow();
//item.Kill();
}
catch { }
}2)使用windows 32消息来隐藏(我的经验是这并不总是有效的):
var p = Process.GetProcesses();
var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip")).FirstOrDefault();
if (n != null)
{
n.CloseMainWindow();
}或者是其中的一个
// SendMessage(_keyboardProcess.Handle, WS_MINIMIZE, IntPtr.Zero, IntPtr.Zero);
// SendMessage(_keyboardProcess.Handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
// SendMessage(_keyboardProcess.Handle, WM_QUIT, IntPtr.Zero, IntPtr.Zero);https://stackoverflow.com/questions/26182305
复制相似问题