.net 陷阱键组合并将字符串插入键盘缓冲区
应用程序将最小化运行,并用于在用户通过组合键请求数据时将数据插入应用程序。因此,使用NuGet软件包KeystrokeAPI,我制作了一个应用程序,用于嗅探键盘敲击,查找ctrl+alt+w。当检测到这一点时,使用sendKeys将字符串“Hello”插入键盘缓冲区。 我遇到的问题是sendKeys将密钥发送到嗅探器应用程序,而不是用户所在的前台应用程序 在character.CurrentWindow下面的代码中,是从User32.dll GetForegroundWindow()返回的IntPtr.net 陷阱键组合并将字符串插入键盘缓冲区,.net,c#-4.0,user32,.net,C# 4.0,User32,应用程序将最小化运行,并用于在用户通过组合键请求数据时将数据插入应用程序。因此,使用NuGet软件包KeystrokeAPI,我制作了一个应用程序,用于嗅探键盘敲击,查找ctrl+alt+w。当检测到这一点时,使用sendKeys将字符串“Hello”插入键盘缓冲区。 我遇到的问题是sendKeys将密钥发送到嗅探器应用程序,而不是用户所在的前台应用程序 在character.CurrentWindow下面的代码中,是从User32.dll GetForegroundWindow()返回的Int
前台应用程序没有收到“Hello”。您可以使用PostMessage(或类似工具)发送WM_CHAR消息,将按键发送到您想要的任何窗口。我也不明白你所说的“当前应用程序”和“用户所在的应用程序”是什么意思。我相信根据定义,用户所在的应用程序是前台应用程序,也就是当前应用程序。无论哪个窗口有焦点,都会收到输入消息,除非有钩子阻止。是的@user2460798你是对的,这很有效。
using (var api = new KeystrokeAPI())
{
api.CreateKeyboardHook((character) =>
{
if (character.KeyCode == KeyCode.W && character.CtrlPressed && character.AltPressed)
{
SetForegroundWindow(character.CurrentWindow);
SendKeys.Send("Hello");
}
Console.Write(character);
});
Application.Run();
}