使用SendWait()发送按键时,您是否曾经尝试忽略特殊的物理键盘按键?使用代码关闭CAPSLOCK
很容易:
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
void CheckCapslock()
{
if(System.Windows.Forms.Control.IsKeyLocked(System.Windows.Forms.Keys.CapsLock))
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,(UIntPtr)0);
}
}
然后再次打开它...
更大的问题是当我尝试删除ALT
时,因为它马上又重新打开了。我也尝试使用:
[DllImport("user32.dll")]
public static extern bool SetKeyboardState(byte[] lpKeyState);
...
SetKeyboardState(new byte[256]);
将键盘的当前状态设置为零,但这很容易-有时我足够快地发送没有任何特殊键的字母,但是有时我却没有。
在没有物理键盘上任何特殊键的情况下,有没有办法使用SendWait()?
我知道,还有一个SendMessage()函数,该函数应该“原始”键,但是就我而言-我无法使用它。
此致
Hawex