C#开发软键盘需注意以下几点:
1.设置浮动窗口
将以下代码加入winform代码类里,窗口就被设置成浮动窗口,这样就不会让其他窗体失去焦点
//浮动窗口,不影响其他窗口焦点
private const int WS_EX_TOOLWINDOW = 0x00000080;
private const int WS_EX_NOACTIVATE = 0x08000000;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
cp.Parent = IntPtr.Zero; // Keep this line only if you used UserControl
return cp;
//return base.CreateParams;
}
}
2. SendKeys.Send
该方法可以发送信息到焦点窗口,例如点击字符A,可以直接写SendKeys.Send("A"),当然特殊键需要把字符括在大括号里,例如发送回车可以写
SendKeys.Send("{ENTER}")或者SendKeys.Send("{~}"), 当然,普通字符也可以括在大括号里,而且有的字符必须放在大括号里,例如"(",一些特殊字符如下:
键 | 代码 |
---|
Backspace | {BACKSPACE}、{BS} 或 {BKSP} |
Break | {BREAK} |
Caps Lock | {CAPSLOCK} |
Del 或 Delete | {DELETE} 或 {DEL} |
向下键 | {DOWN} |
End | {END} |
Enter | {ENTER} 或 ~ |
Esc | {ESC} |
Help | {HELP} |
Home | {HOME} |
Ins 或 Insert | {INSERT} 或 {INS} |
向左键 | {LEFT} |
Num Lock | {NUMLOCK} |
Page Down | {PGDN} |
Page Up | {PGUP} |
Print Screen | {PRTSC}(保留供将来使用) |
向右键 | {RIGHT} |
Scroll Lock | {SCROLLLOCK} |
Tab | {TAB} |
向上键 | {UP} |
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
F4 | {F4} |
F5 | {F5} |
F6 | {F6} |
F7 | {F7} |
F8 | {F8} |
F9 | {F9} |
F10 | {F10} |
F11 | {F11} |
F12 | {F12} |
F13 | {F13} |
F14 | {F14} |
F15 | {F15} |
F16 | {F16} |
数字键盘加号 | {ADD} |
数字键盘减号 | {SUBTRACT} |
数字键盘乘号 | {MULTIPLY} |
数字键盘除号 | {DIVIDE} |
另外还可以发送组合键,例如:shift+ctrl可以写SendKeys.Send("{+^}")。
3.这样看起来没什么大问题了,但还不能发送中文信息,要想发送中文,这里会用到Hook,后面会把相关代码加上,加进工程中,引用即可。
SoftKeyBoard.rar