我要为我们公司的程序编写一个屏幕键盘,该程序主要用于具有触摸功能的工业PC。
我们不能使用windows默认键盘,因为我们不需要键盘上的所有键。所以我被要求用 C# 编写一个自定义的。
我已经找到了this blog作为引用,但我不确定如何开始。
我创建了一个小型原型(prototype) GUI 并为每个键分配了一个扫描码,并将这些扫描码转换为相关字符。并将它们发送到主动控制。但我不确定应该使用什么扫描码。
所以我的问题是,像这样编写 OSK 的正确方法是否正确?如果是,我应该使用哪些扫描码?有链接吗?
我也不确定如何处理 shift 状态...
编辑:
好吧,我做了更多的研究,想出了一个 osk,它可以读取当前的键盘布局,甚至可以处理简单的 shift 状态(Shift 和 Alt 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/