Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf Windows 8桌面应用程序:打开tabtip.exe到辅助键盘(用于数字文本框)_Wpf_Windows 8_Desktop Application_On Screen Keyboard - Fatal编程技术网

Wpf Windows 8桌面应用程序:打开tabtip.exe到辅助键盘(用于数字文本框)

Wpf Windows 8桌面应用程序:打开tabtip.exe到辅助键盘(用于数字文本框),wpf,windows-8,desktop-application,on-screen-keyboard,Wpf,Windows 8,Desktop Application,On Screen Keyboard,我们正在开发一款运行在Windows7平板电脑上的桌面WPF应用程序,并将一些带有Windows8的Surface Pro设备加入其中 我们立即注意到,当文本框接收到焦点时,小键盘图标不再显示。我们通过对所有文本框的MouseDown事件运行“tabtip.exe”来解决这个问题 我们有一些数字文本框(订单上某个项目的数量),希望打开屏幕上的键盘进行数字输入,但默认情况下它是用qwerty键打开的 我一直在广泛地搜索任何可以传递到tabtip.exe以更改其输入模式的命令行参数,但运气不佳。对于

我们正在开发一款运行在Windows7平板电脑上的桌面WPF应用程序,并将一些带有Windows8的Surface Pro设备加入其中

我们立即注意到,当文本框接收到焦点时,小键盘图标不再显示。我们通过对所有文本框的MouseDown事件运行“tabtip.exe”来解决这个问题

我们有一些数字文本框(订单上某个项目的数量),希望打开屏幕上的键盘进行数字输入,但默认情况下它是用qwerty键打开的

我一直在广泛地搜索任何可以传递到tabtip.exe以更改其输入模式的命令行参数,但运气不佳。对于metro风格的应用程序来说,这似乎是一项微不足道的任务,但在桌面端则是不可能的


tabtip.exe是否有一个命令行参数可以用来完成此任务?

您可以通过tabtip的注册表设置来控制输入模式。在
HKEY\u CURRENT\u USER\Software\Microsoft\TabletTip\1.7
中查找具有名称KeyboardLayoutPreference的注册表项 更改注册表DWORD
键盘布局首选项
0
的值是常规布局
1
的值是中间带数字键盘的拆分键盘


REG_DWORD
LastUsedModalityWasHandwriting
也必须是
0
或者如果
1
,当tabtip再次启动时,它将打开手写区。

根据提供的答案@tymes,下面是一个快速控制台应用程序,演示如何打开键盘和更改各种设置(C#):

使用系统;
使用系统诊断;
使用Microsoft.Win32;
命名空间测试
{
班级计划
{
/// 
///虚拟键盘上的不同布局类型。
/// 
公共枚举键盘布局模式
{
违约
拇指布局,
笔迹
}
/// 
///保存键盘设置的注册表项。
/// 
私有静态只读注册表项注册表项=Microsoft.Win32.Registry.CurrentUser.CreateSubKey(“软件\\Microsoft\\TabletIP\\1.7”);
静态void Main(字符串[]参数)
{
SetKeyboardDockedMode(真);
SetKeyboardLayoutMode(KeyboardLayoutMode.ThumbLayout);
显示键盘(真);
}
/// 
///显示屏幕上的键盘。
/// 
///如果为true,则终止任何现有的TabTip.exe进程。
公共静态void ShowKeyboard(bool killExistingProcess)
{
if(killExistingProcess)
{
//如果用户按下键盘上的“关闭”按钮,则TabTip.exe仍将在后台运行
//对键盘设置的更改,在再次启动该过程之前不会生效,因此取消此操作可确保键盘正常工作
//将使用我们的新设置打开。
foreach(var process in process.GetProcessesByName(“TabTip”))
{
process.Kill();
}
}
ScreenkeyBoardPath上的字符串=@“C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe”;
进程启动(在ScreenkeyBoardPath上);
}
/// 
///设置键盘是处于固定模式还是浮动模式。
/// 
///如果为true,则设置为停靠;如果为false,则设置为浮动。
私有静态无效SetKeyboardDockedMode(布尔值已锁定)
{
SetValue(“EdgeTargetDockedState”,Convert.ToInt32(isDocked),RegistryValueKind.DWord);
}
/// 
///更改键盘的布局模式。
/// 
///要使用的布局模式。
私有静态无效设置KeyboardLayoutMode(KeyboardLayoutMode模式)
{
开关(模式)
{
机箱键盘布局模式。手写:
SetValue(“KeyboardLayoutPreference”,0,RegistryValueKind.DWord);
SetValue(“LastUsedModalityWasHandwriting”,1,RegistryValueKind.DWord);
打破
机箱键盘布局Mode.ThumbLayout:
SetValue(“KeyboardLayoutPreference”,1,RegistryValueKind.DWord);
SetValue(“LastUsedModalityWasHandwriting”,0,RegistryValueKind.DWord);
//0=小,1=中,2=大
SetValue(“ThumbKeyboardSizePreference”,2,RegistryValueKind.DWord);
打破
违约:
SetValue(“KeyboardLayoutPreference”,0,RegistryValueKind.DWord);
SetValue(“LastUsedModalityWasHandwriting”,0,RegistryValueKind.DWord);
打破
}
}
}
}

我从未使用过win 8,但在win 10中,您可以使用它来控制屏幕键盘的使用:

<TextBox Grid.Row="0"
         InputScope="Number" />
<TextBox Grid.Row="1"
         InputScope="Default" />


我在regedit中搜索了该键,但没有收到任何结果。我在谷歌上也找不到关于它的任何结果。这个键在注册表中的位置,它的一些值是什么?太棒了!这个DWORD在我的注册表中还不存在,所以我必须创建它。但它确实达到了预期的效果。这对Windows 8计算机非常有效,但在Windows 10中,TabTip.exe在打开时似乎会重置所有注册表设置。@jaredbaszler Windows 10在有手写笔时会打开
手写视图
,反之亦然。到目前为止,我还没有发现在没有手写笔的情况下使用
手写视图
的任何可能性。嗨,巴里,你知道如何获取TabTip的所有注册表项名称吗?我正试图得到一个键,当键盘打开时启用大写。。。谢谢在显示屏幕键盘之前,您可以模拟按o键
<TextBox Grid.Row="0"
         InputScope="Number" />
<TextBox Grid.Row="1"
         InputScope="Default" />