我尝试 Hook 一个窗口的 wnd proc,突然出现了一个野生变量......
好的,让我稍微描述一下我的问题。我 P/调用了一些函数来从 C# 访问 C++ WinApi。我想将一些击键从一个窗口复制到另一个窗口(又名 WoW 和其他 MMO 中的双重拳击) P/Invoking 工作得很好,我很高兴,但我很困惑 dwExtraInfo
变量的用途。该领域的文档只是重复了名称本身已经说过的内容......
这是定义:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644967(v=vs.85).aspx
或者对于懒惰的人(我也是其中之一:P):
[StructLayout(LayoutKind.Sequential)]
public class KBDLLHOOKSTRUCT
{
public uint vkCode;
public uint scanCode;
public KBDLLHOOKSTRUCTFlags flags;
public uint time;
public UIntPtr dwExtraInfo;
}
当我想将此数据发送到游戏(将 WPARAM 设置为
WM_KEYDOWN
和 WM_KEYUP
的 SendMessage )时,我将 vkCode 设置为 WPARAM 并从此结构构建我的 LPARAM。 dwExtraInfo 只是一条消息中的击键次数吗?例如,我按住
w-key
大约 10 秒钟,它是否在发送下一条消息之前存储了一个时间间隔内的击键量?这个变量真的让我感到困惑......
最佳答案
它表示开发人员在使用 LowLevelKeyboardProc
时可以使用的“额外”信息,例如,用于指示某种或特殊类型的键盘事件(如人工生成的击键)。在 LowLevelKeyboardProc
中, lParam
是指向保存 KBDLLHOOKSTRUCT
的 dwExtraInfo.
的指针
这是它在使用中的一个很好的例子:
http://globalmousekeyhook.codeplex.com/discussions/286784
关于c# - hook Window 的消息循环时,KBDLLHOOKSTRUCT 的 dwExtraInfo 是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17256539/