C# 做 WINCE 开发时,用 keybd_event 无法获取 - 符号,+号和乘号也不行
我是用做SYMBOL MC3000的开发,当扫描到条码时触发模拟键盘输入的事件,将扫描到的字符发送到文本框中,但是我发现接收到的数据是没错的,但在用keybd_event发送时,数字和字母、回车可以发送,符号无法发送,请问是什么原因呢。
如果是建议把扫读条码的接收事件直接写在窗体里的方法,我已经会用了,我想做到的是写个类将扫描程序封装起来,以后才用起来方便,这个就需要做模拟键盘输入。
模拟发送字符的代码附上。
模拟键盘输入的类
class KeyBoardSimulate
{
//事件
private const int KEYEVENTF_KEYUP = 0x02;
private const int KEYEVENTF_KEYDOWN = 0x00;
public static void SendKeys(char key)
{
keybd_event((byte)key, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event((byte)key, 0, KEYEVENTF_KEYUP, 0);
}
[DllImport("coredll", SetLastError = true)]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
}
条码扫读成功后调用发送读到的字符的方法
private static void HandleData(Symbol.Barcode.ReaderData TheReaderData)
{
string msg = TheReaderData.Text;
for (int i = 0; i < msg.Length;i++ )
{
KeyBoardSimulate.SendKeys(msg[i]);
}
KeyBoardSimulate.SendKeys('\r');
}
请高手不吝赐教
说错了,应该是无法发送
C# 做 WINCE 开发时,用 keybd_event 无法获取 - 符号
答案:2 悬赏:80 手机版
解决时间 2021-03-07 11:35
- 提问者网友:寂寞撕碎了回忆
- 2021-03-07 07:35
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-03-07 08:40
keybd_event((byte)key, 0, KEYEVENTF_KEYDOWN, 0); 第一个参数不强转,放个虚拟码试试
全部回答
- 1楼网友:撞了怀
- 2021-03-07 10:15
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯