【问题标题】:What would be a working value for lParam (low/high keys) in PostMessage? (Win Functions)PostMessage 中 lParam(低/高键)的工作值是多少? (赢功能)
【发布时间】:2014-07-22 02:50:45
【问题描述】:

我已经看到了 20 个问题(这里是 @stackOverflow)但由于某种原因,我没有得到他们所接近的大部分答案。其他人说他们理解,但在我的案例中我没有看到任何工作代码。

我正在尝试将键发送到游戏(前景窗口),有点像宏,我已经看到 lParam 在:PostMessage( handle, WM_KEYDOWN, (uint)key, 0); 实际上有所作为;根据网络上的人(他们说,但不显示代码/示例)。第一次使用胜利功能,所以我有点迷失如何让它与一些游戏一起工作;比如说“英雄联盟”或“军团要塞 2”。

我知道这是作为解释消息的一种方式发送的额外参数。但是我如何使它适用于大多数游戏呢?每个游戏的工作方式是否不同?

在此先感谢,并为我的 win 功能的菜鸟主义感到抱歉。

真诚的,

阿曼多·莱昂

【问题讨论】:

标签: c# winapi postmessage


【解决方案1】:

您最好的选择是documentation for WM_KEYDOWN

【讨论】:

  • 感谢文档 (+1),但即使我使用 0 作为 lParam,它也不适用于游戏,即使它们会将其发送到聊天框。原因是什么?应该是lParam的问题吗? O 阻止来自外部应用的任何交互的游戏?
【解决方案2】:

对于按键,您可以在此链接中查看 lParam 包含的内容:http://msdn.microsoft.com/en-us/library/ms646280(v=vs.85).aspx。如果您只是将 wParam 和 0 传递给 lParam,它可能适用于仅使用虚拟键码(包含在 wParam 中)的游戏,但不适用于使用例如扫描码(在 lParam 中传递)的游戏。

您可以编写一个实用程序,打印出按键按下的 wParam 和 lParam(以及您希望发送到游戏的任何其他事件(wm_char、wm_keyup 等))。然后,您可以使用它为您想要的任何组合键获取 wParam 和 lParam,然后如果您将它传递给任何游戏,它应该可以工作。传递所有正确的值是确保它适用于所有情况的唯一方法。

【讨论】:

    【解决方案3】:

    您不能使用PostMessage() 伪造输入。相反,您需要使用SendInput()

    【讨论】:

      【解决方案4】:

      我知道这是一个旧线程,但我不能让别人说“你不能用 PostMessage() 伪造输入”。 当我们搜索“how to change lparam postmessage”时,这个帖子会显示在谷歌上。

      假设我需要向另一个程序发送一个 Enter 键:我将使用 Spy++ 并物理按下我需要检查我需要的常量是什么以及我需要的 lParam 值是什么。 (对于常量,您也可以在这里查看http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx
      检查keydown,而不是keyup。

      所以如果我需要一个带有 cRepeat 的 Enter 键:1 Scancode:29 fExtended:0 AltDown:0 fRepeat:0 fUp:0,

      我得改一下lParam的32位,我这里要理解数组http://msdn.microsoft.com/en-us/library/ms646280%28v=vs.85%29.aspx

      位是这样的:31....3 2 1 0

      我需要 1 用于 cRepeat 所以:0000 0000 0000 0001(数组中的 0 到 15 位)

      我需要 29(十六进制)作为扫描码,所以:0010 1001(位 16 到 23)

      其余为零

      现在我只是重新组合我需要的 lparam(二进制):0010 1001 0000 0000 0000 0001

      我将其转换为十六进制:290001

      所以现在在我的程序中,如果我使用: PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0x290001);

      我希望它能帮助像我一样来到这里的人:)

      赛博,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        • 1970-01-01
        相关资源
        最近更新 更多