gpt4 book ai didi

c# - 如何使用低级 8 位标志作为条件?

转载 作者:太空狗 更新时间:2023-10-29 20:46:23 26 4
gpt4 key购买 nike

在我的键盘钩子(Hook)中,每个按键都有一个标志,表明它是否被注入(inject)。 http://msdn.microsoft.com/en-us/library/ms644967(VS.85).aspx

我从 lParam 中提取了一个 KBDLLHOOKSTRUCT。我可以访问 kbd.flags.XXX。我只是不知道如何将这个 8 位标志转换为我知道如何使用的 if (injected) {... 类型条件。

如果你们中有一位聪明的计算机科学专家愿意帮助我,我将不胜感激。

    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
KBDLLHOOKSTRUCT kbd = new KBDLLHOOKSTRUCT();
Marshal.PtrToStructure(lParam, kbd);

//if (injected) {...

干杯!

最佳答案

.NET 通过 [Flags] 属性支持这一点:

[Flags]
enum KbdHookFlags {
Extended = 0x01,
Injected = 0x10,
AltPressed = 0x20,
Released = 0x80
}

示例用法:

  KBDLLHOOKSTRUCT info = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
if ((info.flags & KbdHookFlags.Released) == KbdHookFlags.Released) {
// Key was released
// etc..
}

关于c# - 如何使用低级 8 位标志作为条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com