首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SendInput ExtraInfo /标志

SendInput ExtraInfo /标志
EN

Stack Overflow用户
提问于 2012-11-17 09:42:23
回答 1查看 765关注 0票数 2

我正在尝试将SendInput应用程序接口用于热键应用程序。所以我要做的是有一个全局的键钩,当一些键组合命中时,我想要发送另一个键。

我的问题是,当我发送模拟的键时,我的钩子接收到该消息,并以递归循环结束。

因此,我尝试使用ExtraInfo / Flags,但由于某些原因,我设置的值与我在钩子中接收的值不同。

代码语言:javascript
复制
var down = new INPUT();
down.Type = (UInt32)InputType.Keyboard;
down.Data.Keyboard = new KEYBDINPUT();
down.Data.Keyboard.KeyCode = (UInt16)keyCode;
down.Data.Keyboard.Scan = 0;
down.Data.Keyboard.Flags = 0; //doesn't matter whatever I set here... never gets back to my hook
down.Data.Keyboard.Time = 0;
down.Data.Keyboard.ExtraInfo = IntPtr.Zero; //doesn't matter whatever I set here... never gets back to my hook

无论我在ExtraInfo / Flags上设置什么.当我在钩子中收到消息时,它会被重置:

代码语言:javascript
复制
    private IntPtr KeyStateChangeCallback(int nCode, IntPtr wParam, ref KEYBDINPUT lParam)
    {
       //lParam.ExtraInfo and lParam.Flags ... is always some mumbo jumbo value or zero...
    }

我使用低级键盘钩子"WH_KEYBOARD_LL“进行如下设置:

代码语言:javascript
复制
        proc = KeyStateChangeCallback;
        using (Process curProcess = Process.GetCurrentProcess())
        using (ProcessModule curModule = curProcess.MainModule)
        {
            hookID = NativeMethods.SetWindowsHookEx(WH_KEYBOARD_LL, proc, NativeMethods.GetModuleHandle(curModule.ModuleName), 0);
        }

其他人也有类似的问题,可以帮我解决吗?任何可以正常工作的代码示例都会很棒:)

EN

回答 1

Stack Overflow用户

发布于 2012-11-17 11:21:17

根据documentation,您应该调用GetMessageExtraInfo get来检索ExtraInfo字段中的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13426822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档