c# - 如何编写本地化的屏幕键盘

标签 c# windows keyboard screen localized

我要为我们公司的程序编写一个屏幕键盘,该程序主要用于具有触摸功能的工业PC。

我们不能使用windows默认键盘,因为我们不需要键盘上的所有键。所以我被要求用 C# 编写一个自定义的。

我已经找到了this blog作为引用,但我不确定如何开始。

我创建了一个小型原型(prototype) GUI 并为每个键分配了一个扫描码,并将这些扫描码转换为相关字符。并将它们发送到主动控制。但我不确定应该使用什么扫描码。

所以我的问题是,像这样编写 OSK 的正确方法是否正确?如果是,我应该使用哪些扫描码?有链接吗?

我也不确定如何处理 shift 状态...

编辑:

好吧,我做了更多的研究,想出了一个 osk,它可以读取当前的键盘布局,甚至可以处理简单的 shift 状态(ShiftAlt Gr).我写了一个 KeyButton 类,它继承自 Button,这个 KeyButton 有一个 byte 类型的 ScanCode 属性,如果你为其分配一个有效的扫描码,KeyButton 将调用相关函数以获取正确的文本。我使用了 Michael Kaplan 博客中的函数并做了一些小改动。最后发现我只需要像他那样做就可以了。

所以我的问题的答案是:是的,您必须在按钮上使用扫描码,然后从键盘布局中获取虚拟键和 unicode。 Use these scancodes.

现在我得到了字符,唯一剩下的就是发送它们。

最佳答案

我认为这很简单,只需制作一系列按钮并为每个按钮分配一个字母,然后在按钮的 Click 方法中你可以做一个简单的。

SendKeys.Send("A"); 

根据按钮等更改键

关于c# - 如何编写本地化的屏幕键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781440/

相关文章:

c# - 如何添加实际等待?

c# - 将 White.UIItems.TextBox.Text 设置为 unicode

c# - .NET 二进制文件的哈希值可以用于检查底层源代码是否已更改

windows - 使用 lxn/win 在 golang 中处理 LPTSTR

c++ - Windows 的免费内存调试器?

ios - 键盘始终显示在 ios 中

c# - IEnumerable<T> 的实现

c++ - C++中一行命令的执行没有返回预期的结果

ios - 使用 UIAutomation 禁用 iOS 模拟器的硬件键盘

c++ - 如何禁用 Alt 键的正常行为?