2016-05-16 162 views
6

我有一个需要虚拟键盘的应用程序。但是,当我单击我的一些TextBox es时,它们不会使虚拟键盘出现。我一直在使用这种尝试:如何强制win10打开虚拟平板电脑键盘?

System.Diagnostics.Process.Start("osk.exe"); 

但是,这会打开另一个键盘,一个不关闭TextBox没有焦点后。如何强制win10打开虚拟平板电脑键盘?

为了让自己清楚:
这是运行在win10触摸屏PC上。当我启用平板电脑模式时,虚拟键盘显示在某些TextBox es上,而不在其他人上。因此我为什么要强制键盘显示。

编辑: 因为我已经找到了一种方法,以显示“虚拟键盘平板电脑”,但是我想用InputPane类来做到这一点。有人可以提供一个示例代码来帮助我开始吗?

代码使用InputPane类打开它没有

System.Diagnostics.Process.Start("TabTip.exe"); 
+0

你为什么要强迫它?在桌面平台上这是一个不好的做法,这就是为什么它不能打开。在平板电脑/手机上,虚拟键盘将打开,因为用户无法输入字符。 – WPMed

+0

http://www.windowscentral.com/how-force-tablet-mode-windows-10 – Elshan

+0

是的,但他希望以编程方式进行。当然,如果用户选择了平板电脑模式,虚拟键盘将打开。我的观点是他不能强迫它打开。它将默认打开,或者用户可以启用它,如果他想。 – WPMed

回答

1

一件事。 InputPane,你不能在WinForms中使用,InputPane是UWP的一个元素。

我跑这段代码......并且工作!

string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; 
string keyboardPath = Path.Combine(progFiles, "TabTip.exe"); 
Process.Start(keyboardPath); 

但我必须对HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip钥匙内添加一个键(手动)值在我的注册表编辑器是一个名叫1.7(这将在未来的微软改变),并添加一个名为EnableDesktopModeAutoInvoke 32位的DWORD值,文件夹价值1。这意味着TRUE。它应该是这样的:

REGEDIT

您可以添加键编程我想你需要管理员privilegies。我尝试以编程方式添加密钥,但不起作用,它将条目加倍而没有任何影响(BE CAREFUL);

建议:

考虑,做创建的每个过程的过程塞。我认为你会在文本框(任何输入方法)请求焦点时使用它。当组件失去他的注意力时,一定要停止这个过程。

希望得到这个帮助。

enter image description here