如何发送左shift键?
How to send the left shift key?
我正在尝试将密钥发送到 Firefox 中另一个打开的进程。
我应该发送 Left Shift 键,但这没有任何运气。
我试着用谷歌搜索这些答案,但我最终得到的只是使用掘金的外部方法或使用常规班次的人。我尝试了很多使用左移枚举或 Sendkey.Send("{LSHIFT}")
发送左移的方法等等,但 none 对我有用。我想知道有没有合适的方法让我发送Left 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);
}
我见过有和没有左 Shift 键的列表,但无论哪种方式,它们都会弹出错误 'invalid key'。
谢谢。
使用 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);
}
我正在尝试将密钥发送到 Firefox 中另一个打开的进程。 我应该发送 Left Shift 键,但这没有任何运气。
我试着用谷歌搜索这些答案,但我最终得到的只是使用掘金的外部方法或使用常规班次的人。我尝试了很多使用左移枚举或 Sendkey.Send("{LSHIFT}")
发送左移的方法等等,但 none 对我有用。我想知道有没有合适的方法让我发送Left 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);
}
我见过有和没有左 Shift 键的列表,但无论哪种方式,它们都会弹出错误 'invalid key'。
谢谢。
使用 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);
}