我osk.exe从应用程序启动Windows屏幕键盘()时发现了许多线程,但我遇到了一些问题.这似乎是因为我在64位操作系统上运行32位应用程序.我已经尝试过WooCaSh发布的代码:
WinForms屏幕上的键盘
但是这三种不同的路径都不适合我.对于sysnative路径,Process.Start失败并显示 "无法找到指定的路径".对于system32和osk.exe路径,我得到"无法启动屏幕键盘"错误对话框.
我发现了一个可能的解决方法在这里,这是一个小比我一直在寻找(由eryang后)更加复杂:http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/10ebc62f-e6d7 -4072-9fd1-ea3784a0966f /
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#创建一个Windows应用程序,单击GUI上的按钮时,应显示屏幕键盘.
如果获得任何帮助,将不胜感激.谢谢.
此外,由于我主要在我的应用程序的其余部分使用Emgu Cv库,我们可以简单地使用它来调用屏幕键盘吗?
我已经定义了键盘事件,它在桌面上运行良好,但触摸设备没有获得屏幕键盘事件.如果用户正在输入,我需要捕获.我使用了以下代码段:
$('#id').keydown(function(e){
//some code here
});
$('#id').keyup(function(e){
//some code here
})
Run Code Online (Sandbox Code Playgroud)
我想限定在代码keydown和keyup触发即使对于触摸设备(包括片剂和手机).请建议如何捕获屏幕键盘事件并使上述代码运行.
我正在为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应用程序.
非常感谢
我尝试对Web应用程序中的屏幕键盘做出反应.不幸的是,有些事情使这一点变得复杂:
首先,该应用程序必须在移动平台(平板电脑)和台式机上运行.此外,禁止滚动文档/正文并进一步增加趣味,平板电脑必须使用横向模式.
因此,如果有人选择任何输入字段,屏幕上的键盘会打开并阻挡页面一半的视线,因此一些输入变得不可见,我需要更改它.
不幸的是,似乎没有任何事件被触发,这表明应用程序的一半变得不可见.我已经检查过滚动并调整事件大小,但它们也没有触发.
当然,一旦我确定要在平板电脑上,我总会以某种方式做出反应.可能95%的用户无论如何都不会连接硬件键盘.但是,有没有更清洁的方式?
我们开始在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键盘是否可以通过编程方式停靠以获得最大化的窗口?
我正在开发一个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进行比较.
任何帮助都将不胜感激.这也是我的第一篇文章.我想我做得对,但如果没有,请告诉我如何解决它.
我建立了它需要一个屏幕键盘触摸屏电脑一个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插件触发的更改中,我可以运行一些东西.显然这仅用于更新单个字段/模型,名称一个(当电子邮件根本不起作用并且将覆盖名称字段)时,我需要在与键盘一起使用时更新任意数量的字段,并且纠正一个.我如何用一种不那么糟糕的,不是硬编码的(如果可能而不是太复杂)的方式来解决这个问题?
我试图将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)