我正在尝试将密钥发送到Firefox中的另一个打开过程.我应该发送左Shift键,但这没有任何运气.
我试过谷歌搜索这些答案,但我最终得到的是使用掘金或使用常规班次的人的外部方法.我尝试了很多方法使用左移的Enum发送左移或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);
}
Run Code Online (Sandbox Code Playgroud)
我看过没有左移键的列表和列表,但无论哪种方式,它们都会弹出错误'无效键'.
谢谢.
将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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |