【发布时间】:2012-02-17 20:46:58
【问题描述】:
我当前的代码是:
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_RMENU = 0xA5;
keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_Q, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_Q, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
我根据需要得到大写的 Q,但问题是,“Shift”粘住了。
之后的所有字母都是大写的。获得小写字母的唯一方法是更改为大写锁定。我该如何解决这个问题?
提前致谢
【问题讨论】:
-
这些人从哪里得到使用
keybd_event函数编写新代码的想法?一段时间以来,首选的方法是使用SendInputfunction。 -
另外,谁告诉你
KEYEVENTF_EXTENDEDKEY是“关键标志”? the documentation 不是这么说的…… -
谢谢。顺便说一句,我不得不使用 keybd_event 进行一些不寻常的韩语网页编码。它强制韩语输入,直到按下右 alt 键。它迫使我使用 keybd_event 来模拟那个按键
标签: c# pinvoke shift virtual-keyboard