我正在尝试将SendInput应用程序接口用于热键应用程序。所以我要做的是有一个全局的键钩,当一些键组合命中时,我想要发送另一个键。
我的问题是,当我发送模拟的键时,我的钩子接收到该消息,并以递归循环结束。
因此,我尝试使用ExtraInfo / Flags,但由于某些原因,我设置的值与我在钩子中接收的值不同。
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上设置什么.当我在钩子中收到消息时,它会被重置:
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“进行如下设置:
proc = KeyStateChangeCallback;
using (Process curProcess = Process.GetCurrentProcess())
using (ProcessModule curModule = curProcess.MainModule)
{
hookID = NativeMethods.SetWindowsHookEx(WH_KEYBOARD_LL, proc, NativeMethods.GetModuleHandle(curModule.ModuleName), 0);
}其他人也有类似的问题,可以帮我解决吗?任何可以正常工作的代码示例都会很棒:)
发布于 2012-11-17 11:21:17
根据documentation,您应该调用GetMessageExtraInfo get来检索ExtraInfo字段中的数据。
https://stackoverflow.com/questions/13426822
复制相似问题