标签: on-screen-keyboard

如何在C#WinForms中使用Windows屏幕键盘

  • VS 2010
  • 开发在64位操作系统上运行的32位应用程序(Windows 7,Windows 8 - 桌面应用程序)
  • C#
  • .NET 4.0
  • 的WinForms

osk.exe从应用程序启动Windows屏幕键盘()时发现了许多线程,但我遇到了一些问题.这似乎是因为我在64位操作系统上运行32位应用程序.我已经尝试过WooCaSh发布的代码: WinForms屏幕上的键盘

但是这三种不同的路径都不适合我.对于sysnative路径,Process.Start失败并显示 "无法找到指定的路径".对于system32osk.exe路径,我得到"无法启动屏幕键盘"错误对话框.

我发现了一个可能的解决方法在这里,这是一个小比我一直在寻找(由eryang后)更加复杂:http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/10ebc62f-e6d7 -4072-9fd1-ea3784a0966f /

  1. 有没有更简单或正确的方法来做到这一点?
  2. 我希望在平板电脑上运行我的应用程序会在用户选择文本框时自动启动屏幕键盘,但没有运气.这是正常的还是我错过了什么?我发现在桌面模式(我的应用程序是)时,键盘不会在Windows 8中自动启动:http://www.bleepingcomputer.com/forums/t/480250/keyboard-does-not-pop-up - 自动/显然它适用于Windows 7平板电脑,但我无法测试,因为我这里只有Windows 8平板电脑.

c# windows on-screen-keyboard 32bit-64bit winforms

18
推荐指数
3
解决办法
5万
查看次数

无法在Win7 x64上从32位进程启动屏幕键盘(osk.exe)

90%的时间我无法osk.exe从32位进程启动Win7 x64.最初代码只是使用:

Process.Launch("osk.exe");
Run Code Online (Sandbox Code Playgroud)

由于目录虚拟化,这对x64无效.不是我想的问题,我只是禁用虚拟化,启动应用程序,然后再次启用它,我认为这是正确的做事方式.我还添加了一些代码,如果它已经被最小化(这可以正常工作)使键盘恢复 - 代码(在示例WPF应用程序中)现在看起来如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;using System.Diagnostics;
using System.Runtime.InteropServices;

namespace KeyboardTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);

        private …
Run Code Online (Sandbox Code Playgroud)

c# wpf 64-bit exception on-screen-keyboard

17
推荐指数
2
解决办法
3万
查看次数

使用C#中的按钮调用屏幕键盘

我正在使用C#创建一个Windows应用程序,单击GUI上的按钮时,应显示屏幕键盘.

如果获得任何帮助,将不胜感激.谢谢.

此外,由于我主要在我的应用程序的其余部分使用Emgu Cv库,我们可以简单地使用它来调用屏幕键盘吗?

.net c# on-screen-keyboard emgucv

15
推荐指数
2
解决办法
3万
查看次数

如何捕获触摸设备的屏幕键盘'keydown'和'keyup'事件

我已经定义了键盘事件,它在桌面上运行良好,但触摸设备没有获得屏幕键盘事件.如果用户正在输入,我需要捕获.我使用了以下代码段:

$('#id').keydown(function(e){
  //some code here
});

$('#id').keyup(function(e){
  //some code here
})
Run Code Online (Sandbox Code Playgroud)

我想限定在代码keydownkeyup触发即使对于触摸设备(包括片剂和手机).请建议如何捕获屏幕键盘事件并使上述代码运行.

javascript keyboard jquery touch on-screen-keyboard

15
推荐指数
1
解决办法
3万
查看次数

从WPF在屏幕键盘上显示和隐藏Windows 8

我正在为Windows 8平板电脑编写WPF应用程序.它是完整的Windows 8而不是ARM/RT.

当用户输入文本框时,我使用以下代码显示屏幕键盘:

System.Diagnostics.Process.Start(@"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe");
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我不知道如何再次隐藏键盘?

有人知道怎么做吗?

此外,有什么方法可以调整我的应用程序大小,以便在键盘出现时向上移动聚焦控制?有点像它对Windows RT应用程序.

非常感谢

wpf touchscreen on-screen-keyboard windows-8

13
推荐指数
3
解决办法
2万
查看次数

当移动safari或chrome上的屏幕键盘打开时,是否有任何javascript事件被触发?

我尝试对Web应用程序中的屏幕键盘做出反应.不幸的是,有些事情使这一点变得复杂:

首先,该应用程序必须在移动平台(平板电脑)和台式机上运行.此外,禁止滚动文档/正文并进一步增加趣味,平板电脑必须使用横向模式.

因此,如果有人选择任何输入字段,屏幕上的键盘会打开并阻挡页面一半的视线,因此一些输入变得不可见,我需要更改它.

不幸的是,似乎没有任何事件被触发,这表明应用程序的一半变得不可见.我已经检查过滚动并调整事件大小,但它们也没有触发.

当然,一旦我确定要在平板电脑上,我总会以某种方式做出反应.可能95%的用户无论如何都不会连接硬件键盘.但是,有没有更清洁的方式?

javascript android on-screen-keyboard ios

13
推荐指数
2
解决办法
2万
查看次数

打开停靠在WPF中的Windows 10触摸键盘

我们开始在Windows 8中创建WPF触摸应用程序,最近迁移到Windows 10.我们实现的一个功能是在TextBox获得焦点时打开Windows键盘.在Windows 8中,可以通过设置注册表设置EdgeTargetDockedState并启动TabTip过程将键盘停靠在底部:

     string path =  @"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe";
     var info = new ProcessStartInfo(path);
     info.WindowStyle = ProcessWindowStyle.Maximized;
     var p = new Process();
     p.StartInfo = info;
     p.Start();
Run Code Online (Sandbox Code Playgroud)

然而,Windows 10键盘似乎没有Windows 8中的停靠行为.键盘现在覆盖任何最大化的窗口,隐藏任何应用程序的底部.仅调整未最大化的窗口以适应剩余空间.

我检查了以下链接,但没有找到解决方案:

Windows 10键盘是否可以通过编程方式停靠以获得最大化的窗口?

c# wpf on-screen-keyboard windows-10

13
推荐指数
2
解决办法
7197
查看次数

检测屏幕键盘是否打开(TabTip.exe)

我正在开发一个WPF/C#应用程序来填写表单.我试图找到一种方法来确定TapTip键盘(用于Windows 8桌面的TabTip.exe /类似地铁的键盘)是否在Windows 8中最小化/不可见.

我已经能够检测到osk键盘(osk.exe/windows可访问性屏幕键盘)是否被最小化,但是相同的过程似乎不适用于TabTip键盘.

要检测键盘是否最小化,我:
1.找到键盘的进程
2.获取MainWindowHandle
3.使用WINDOWPLACEMENT的showCmd属性(使用MainWindowHandle找到)
4.使用showCmd值确定窗口是否最小化

我遇到的问题是:
- TabTip进程的MainWindowHandle为0(因此我无法使用它来查找WINDOWPLACEMENT信息)
- 当TabTip打开并最小化时,WINDOWPLACEMENT.showCmd的值相同

为了找到TabTip窗口的句柄,我使用ENUMWINDOWS来获取所有窗口句柄,使用GETWINDOWTHREADPROCESSID来获取进程ID,然后将id与TabTip进程id进行比较.

任何帮助都将不胜感激.这也是我的第一篇文章.我想我做得对,但如果没有,请告诉我如何解决它.

c# keyboard touch on-screen-keyboard windows-8

10
推荐指数
2
解决办法
1万
查看次数

使用"on change"回调从jQuery插件更新AngularJS模型

我建立了它需要一个屏幕键盘触摸屏电脑一个Web应用程序,并在尝试使用这个优秀的(或至少是唯一一个我能找到那并不可怕)键盘. https://github.com/Mottie/Keyboard/

问题是,正如您可能已经猜到的那样,使用屏幕键盘时模型不会更新.这是我的代码,哪种有效,但各种丑陋:

部分HTML:

<input type="text" class="keyboard" ng-model="newUser.name">
<input type="text" class="keyboard" ng-model="newUser.email>
Run Code Online (Sandbox Code Playgroud)

从partitial页面控制器初始化键盘:

$('.keyboard')
.keyboard({
    stickyShift: false,
    usePreview: false,
    autoAccept: true,

    change: function(e, kb, el) {
        $scope.newUser.name = el.value;
    }
});
Run Code Online (Sandbox Code Playgroud)

因此,在jQuery插件触发的更改中,我可以运行一些东西.显然这仅用于更新单个字段/模型,名称一个(当电子邮件根本不起作用并且将覆盖名称字段)时,我需要在与键盘一起使用时更新任意数量的字段,并且纠正一个.我如何用一种不那么糟糕的,不是硬编码的(如果可能而不是太复杂)的方式来解决这个问题?

javascript jquery dom on-screen-keyboard angularjs

8
推荐指数
1
解决办法
2602
查看次数

如何在Windows中嵌入tabtip.exe

我试图将osk嵌入到wpf窗口或用户控件中,我发现下面的代码并且它适用于记事本但是对于tabtip.exe,它说它没有图形界面?

WaitForInputIdle失败.这可能是因为该过程没有图形界面.

我尝试让它休眠一段时间而不是调用waitForInputIdle方法,但它抛出了另一个异常:

进程已退出,因此无法获取所请求的信息.

但在我的任务管理器中,我仍然可以看到TabTip.exe正在运行.

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private System.Windows.Forms.Panel _panel;
        private Process _process;

        public MainWindow()
        {
            InitializeComponent();
            _panel = new System.Windows.Forms.Panel();
            windowsFormsHost1.Child = _panel;
        }

        [DllImport("user32.dll")]
        private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

        [DllImport("user32.dll", SetLastError = true)]
        private static extern int GetWindowLong(IntPtr hWnd, int nIndex);

        [DllImport("user32")]
        private static extern IntPtr SetParent(IntPtr hWnd, IntPtr hWndParent);

        [DllImport("user32")]
        private static extern bool SetWindowPos(IntPtr …
Run Code Online (Sandbox Code Playgroud)

c# wpf window on-screen-keyboard

8
推荐指数
1
解决办法
770
查看次数