为什么PostMessage()调用没有反应?

时间:2018-10-25 01:27:55

标签: c# automation bots postmessage user32

我从User32.dll开始使用PostMessage()时,我发现了一个游戏的自动研磨器,它根本不起作用。

此代码:

static void Start_Attack(IntPtr handle, bool which)
    {
        if (which) PostMessage(handle, WM_LBUTTONDOWN, 0, MAKELPARAM(Coord_X, Coord_Y));
        if (!which) PostMessage(handle, WM_RBUTTONDOWN, 0, MAKELPARAM(Coord_X, Coord_Y));
    }

    static void Stop_Attack(IntPtr handle, bool which)
    {
        if (which) PostMessage(handle, WM_LBUTTONUP, 0, MAKELPARAM(Coord_X, Coord_Y));
        if (!which) PostMessage(handle, WM_RBUTTONUP, 0, MAKELPARAM(Coord_X, Coord_Y));
    }


    static void Use_Skill(IntPtr handle, char Skill)
    {
        PostMessage(handle, WM_KEYUP, (int)ConvertCharToVirtualKey(Skill), 0);
    }

不起作用。但是这段代码:

static void move_camera(IntPtr handle, int amounty)
    {
        PostMessage(handle, WM_MOUSEMOVE, 0, MAKELPARAM(amounty, 320));
    }

有效。因此,例如,我可以发送WM_MOUSEMOVE到应用程序,但不能发送WM_LBUTTONDOWN。我知道有些应用程序的PostMessage()无效,但是在这种情况下,WM_MOUSEMOVE也不能正常工作,对吧?

有人知道问题出在哪里吗?

EDIT1:

好的,我获得了更多信息。 PostMessage()似乎可以正常工作,因为在登录屏幕中,我可以输入用户名并自动单击登录按钮。但是在游戏中它不起作用。有什么想法吗?我尝试了一些WM_KEYDOWN,然后尝试WM_KEYUP,或者只尝试了WM_KEYUP-到目前为止没有任何效果。

EDIT2:

我认为该应用程序需要直接使用Keyboardinput。可能吗?没有DLL注入和函数挂钩,有什么办法可以解决这种仿真问题?

0 个答案:

没有答案