gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:22:11 29 4
gpt4 key购买 nike

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

我发现了很多关于从应用程序启动 Windows 屏幕键盘 (osk.exe) 的话题,但我遇到了一些问题。这似乎是因为我在 64 位操作系统上运行 32 位应用程序。我在这里尝试了 WooCaSh 发布的代码: Keyboard on the screen in 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-automatically/显然它适用于 Windows 7 平板电脑,但我无法测试,因为我这里只有 Windows 8 平板电脑。

最佳答案

我现在启动“触摸键盘”而不是“屏幕键盘”(这是我想要在 Windows 8 上使用的键盘):

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

this.keyboardProc = Process.Start(keyboardPath);

这适用于我的 Win7 和 Win8,无论我的 32 位应用程序在 64 位操作系统上如何。但是,我仍然遇到在完成后以编程方式关闭键盘的问题。进程this.keyboardProc似乎没有得到句柄,并且立即具有属性HasExited = true。这意味着我关闭或终止它的尝试失败了。

根据这个线程,如果用户手动打开键盘(或者我以编程方式启动它),当文本字段失去焦点时键盘不会自动关闭/隐藏:Windows 8 - How to Dismiss Touch Keyboard?我尝试了将焦点设置到隐藏按钮的解决方法,但由于我自己启动了键盘,它不会自动关闭。

关于c# - 如何在 C# WinForms 中使用 Windows 屏幕键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554786/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com