gpt4 book ai didi

c# - SendMessage 对话十进制到十六进制值的问题

转载 作者:行者123 更新时间:2023-12-04 08:35:30 27 4
gpt4 key购买 nike

我试图了解转换十六进制整数(十进制)和 IntrPtr 的规则是什么。
我在某处读到它应该代表“更高的内存”或类似的东西。
如果有人能向我解释一下,那就太好了。
但实际上它只是关于以下内容:
我想用SendMessage发送APPCOMMAND_SAVE (整数值 32)。

const int WM_APPCOMMAND = 0x319;
MS 文档说 #define WM_APPCOMMAND/0x 0 319 但这似乎没有任何区别。我对零号有某种问题。 0x319 是如何工作的。
所以我发现例如卷是:
const int APPCOMMAND_VOLUME_UP = 0xA0000; // 10
现在我正在尝试将 APPCOMMAND_SAVE (32) 转换为正确的十六进制值:
const int APPCOMMAND_SAVE = 0x200000; //? Hex value of 32 is the right?

最佳答案

多看一点 lParamWM_APPCOMMAND API 调用,我可以看到它在位掩码中包含三个单独的值:

  • cmd - 这是您所指的特定应用命令 [2 字节]
  • uDevice - 表示生成输入的设备 [2 字节]
  • dwKeys - 表示按下了哪些虚拟键,如果有的话 [2 字节]

  • 所有这些的值都包含在 lParam 中。单独作为位掩码,每个占用 2 个字节。因此,它们被结构化为 lParam如此:
    0xAADDKK
    哪里 AA表示 APPCOMMAND正在发送, DD表示 uDevice , 和 KK表示 dwKeys .
    考虑到这一点,为了向 APPCOMMAND_SAVE 发送命令(十进制 32,十六进制 0x20),没有 uDevice没有 dwKeys正确 lParam使用值(value)是:
    0x200000
    关于你的另一点:

    MS docs says #define WM_APPCOMMAND / 0x0319 But that doesn't seem tomake any difference. I have somehow problems with the zero signs. However 0x319 works.


    十六进制数的功能是在前导 0 中以 10 为底的。 s 从数字中删除。因此十六进制 0x03190x319 相同还有 0x00000319 , 与在 base-10 中的方式相同, 100001000 相同确实 00000001000 .

    关于c# - SendMessage 对话十进制到十六进制值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64819755/

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