# WPF仿制OSK做的系统键盘和数字键盘
## 一、目的
在应用osk.exe系统键盘时遇到很多不方便,比如有些系统调用不出来等问题,由此开发了一个系统键盘仿制osk
## 二、实现功能
1、目前实现大部分osk键盘的输入功能,还有部分按键由于时间关系没有实现
2、支持组合按键shift、ctrl、alt等方式输入
3、支持大小写输入切换
4、支持shift切换复合按键
5、支持在外部记事本、网页等有光标的位置进行输入
## 三、示意图
系统键盘部分:
![1](img/1.png)
数字键盘部分:![3](img/3.gif)
## 四、实现部分
1、采用模拟虚拟按键方式输入按键
```c#
public static partial class KeyHelper
{
[DllImport("user32.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(
byte bVk, //虚拟键值
byte bScan,// 一般为0
int dwFlags, //这里是整数类型 0 为按下,2为释放
int dwExtraInfo //这里是整数类型 一般情况下设成为0
);
[DllImport("user32.dll")]
public static extern int GetFocus();
}
```
2、通过禁用窗体获取焦点方式来进行外部输入,如记事本
```c#
private void KeyBoardWindow_Loaded(object sender, RoutedEventArgs e)
{
WindowInteropHelper windowInteropHelper = new WindowInteropHelper(this);
IntPtr intPtr = windowInteropHelper.Handle;
int value = -20;
SetWindowLong(intPtr, value, (IntPtr)0x8000000);
}
```
```c#
[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hWnd, int nindex, IntPtr dwNewLong);
[DllImport("user32.dll", SetLastError = true)]
public static extern UInt32 GetWindowLong(IntPtr hWnd, int index);
```
## 五、待实现部分
目前Capslock、ctrl、shift、alt的按下状态和按键状态没有和外部硬件键盘做同步、后续会应用钩子检测同步外部硬件键盘状态
有些按键如win、fn、~等按键存在问题后续更新
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
当前实现功能 1、目前实现大部分osk键盘的输入功能,还有部分按键由于时间关系没有实现; 2、支持组合按键shift、ctrl、alt等方式输入; 3、支持大小写输入切换;4、支持shift切换复合按键; 5、支持在外部记事本、网页等有光标的位置进行输入。
资源推荐
资源详情
资源评论
收起资源包目录
100012615-基于WPF开发的用户键盘(支持复合按键).zip (52个子文件)
wpf-systemkeyboard
Source
Application
HeBianGu.Product.KeyBoard
FuncButtonControl.xaml.cs 9KB
KeyBoardControl.xaml 20KB
App.config 182B
KeyHelper.cs 5KB
InputNumWindow.xaml 909B
App.xaml 353B
InputNumControl.xaml.cs 4KB
Properties
Resources.Designer.cs 3KB
Settings.Designer.cs 1KB
Settings.settings 195B
AssemblyInfo.cs 2KB
Resources.resx 6KB
InputNumControl.xaml 7KB
App.xaml.cs 2KB
HeBianGu.Product.KeyBoard.csproj 6KB
KeyBoardWindow.xaml 2KB
KeyBoardControl.xaml.cs 6KB
KeyBoardWindow.xaml.cs 3KB
FuncButtonControl.xaml 4KB
Resources
KeyBoard.ico 766B
InputNumWindow.xaml.cs 2KB
Image
按下.png 2KB
数字按钮.png 3KB
按钮2.png 3KB
按下5.5.png 3KB
按钮1.png 2KB
按下1.png 3KB
按下2.5.png 3KB
按钮间距.png 44KB
按钮2.5.png 3KB
确认按钮.png 3KB
Backspace.png 1KB
按下2.png 3KB
按钮5.5.png 3KB
HeBianGu.Product.SystemKeyBoard
App.config 182B
App.xaml 408B
HeBianGu.Product.SystemKeyBoard.csproj 4KB
ShellWindow.xaml 1KB
Properties
Resources.Designer.cs 3KB
Settings.Designer.cs 1KB
Settings.settings 195B
AssemblyInfo.cs 2KB
Resources.resx 5KB
App.xaml.cs 400B
ShellWindow.xaml.cs 949B
HeBianGu.Product.SystemKeyBoard.sln 1KB
LICENSE 1KB
img
1.png 104KB
3.gif 1.17MB
2.png 35KB
Solution
hebiangu
HeBianGu.Product.SystemKeyBoard.sln 2KB
README.md 2KB
共 52 条
- 1
资源评论
神仙别闹
- 粉丝: 2674
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功