gpt4 book ai didi

c# - 发送从 Spy++ 获取的消息

转载 作者:行者123 更新时间:2023-11-30 14:18:13 26 4
gpt4 key购买 nike

我正在尝试向游戏发送消息(以自动执行文本命令),问题是我不知道如何使用来自 spy++ 的信息来编写 C# sendmessage 函数。

我能够使用 spy++ 获取00220540 S WM_SETCURSOR hwnd:0024052C nHittest:HTCLIENT wMouseMsg:WM_MOUSEMOVE

谁能详细说明这意味着什么,以及如何使用 C# 向游戏发送消息?

编辑:

我发现我看错了进程。我没有查看 javaw.exe,而是查看了实际的游戏。

这是按下 t 的代码:

<00919> 0038062A WM_INPUT nInputCode:RIM_INPUT hRawInput:189E0973
<00920> 0024052 P WM_KEYUP nVirtKey:'T' cRepeat:1 ScanCode:14fExtended:0fAltDown:0fRepeat:1fUp:1

最佳答案

那么让我们从 SendMessage 的签名开始, 来自 Pinvoke.net :

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

它采用窗口句柄 hWnd、消息 ID Msg 和两个通用参数 wParam 和 lParam,它们根据消息 ID 更改含义。

spy++ 向您显示的是发送到 SendMessage 的参数。如您所见,它没有显示 wParam 和 lParam,而是显示 hwnd、nHittest 和 wMouseMsg。那是因为 Spy++ 知道 wParam 和 lParam 参数对于 WM_SETCURSOR 的实际含义。消息并正在为您解码。

因此对 Spy++ 发送的每一段内容进行解码:

  1. 00220540 - 接收消息的窗口句柄 - hWnd 参数。
  2. S - 这意味着它是通过SendMessage() 而不是通过发布 PostMessage() .参见 http://msdn.microsoft.com/en-us/library/aa265147(v=vs.60).aspx
  3. WM_SETCURSOR - 消息 ID -消息参数。
  4. hwnd:0024052C - 窗口句柄包含光标 - wParam参数。
  5. nHittest:HTCLIENT - HitTest code - lParam 的低位字参数。
  6. wMouseMsg:WM_MOUSEMOVE - 鼠标message - 的高字lParam参数。

将消息发送到窗口的方式是:

enum WindowMessages {
WM_SETCURSOR = 0x0020,
WM_MOUSEMOVE = 0x0200,
....
}

enum HitTestCodes {
HTCLIENT = 1,
....
}

....
IntPtr hWnd = [get your window handle some how]
int lParam = ((int)WindowMessages.WM_MOUSEMOVE) << 16 + (int)HitTestCodes.HTCLIENT;
SendMessage(hWnd, (uint)WindowMessages.WM_SETCURSOR, hWnd, (IntPtr)lParam);

要了解其他消息的含义,您可以在 Msdn.com 上搜索 Windows 文档中的消息。

因此,在回答了所有这些问题后,我认为这与向您试图控制的游戏发送 key 没有任何关系。 WM_SETCURSOR 与键盘输入没有任何关系。

关于c# - 发送从 Spy++ 获取的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869941/

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