Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 陷阱键组合并将字符串插入键盘缓冲区_.net_C# 4.0_User32 - Fatal编程技术网

.net 陷阱键组合并将字符串插入键盘缓冲区

.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

应用程序将最小化运行,并用于在用户通过组合键请求数据时将数据插入应用程序。因此,使用NuGet软件包KeystrokeAPI,我制作了一个应用程序,用于嗅探键盘敲击,查找ctrl+alt+w。当检测到这一点时,使用sendKeys将字符串“Hello”插入键盘缓冲区。 我遇到的问题是sendKeys将密钥发送到嗅探器应用程序,而不是用户所在的前台应用程序

在character.CurrentWindow下面的代码中,是从User32.dll GetForegroundWindow()返回的IntPtr


前台应用程序没有收到“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();
}