我正在尝试将密钥发送到Firefox中的另一个打开进程。 我应该发送Left Shift键,但是运气不好。
我尝试使用谷歌搜索这些答案,但最终我得到的是使用掘金的外部方法或使用常规班次的人们。我尝试了多种使用左移的枚举或Sendkey.Send("{LSHIFT}")
发送左移的方法,但还有许多方法对我没有用。我想知道是否有合适的方法可以发送左Shift键。
到目前为止,这是我的代码:
public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
Keys pressed = (Keys)vkCode;
MessageBox.Show(pressed.ToString());
switch (pressed)
{
case Keys.Insert:
{
SendKeys.Send("{LSHIFT}");
}
break;
}
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
我看到带有和列表的列表没有左移键,但是无论哪种方式,它们都以错误“无效键”的形式弹出。
谢谢。
答案 0 :(得分:5)
将keybd_event API与“ VK_LSHIFT”虚拟密钥代码一起使用:
const byte VK_LSHIFT = 0xA0;
const uint KEYEVENTF_KEYUP = 0x0002;
[DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
static void Main(string[] args)
{
keybd_event(VK_LSHIFT, 0, 0, 0);
Thread.Sleep(100);
keybd_event(VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0);
}