Почему вызов PostMessage () не реагирует? - PullRequest
0 голосов
/ 25 октября 2018

Я разобрался с автоматическим измельчителем для игры, в данный момент я работаю с PostMessage () из User32.dll, и он вообще не работает.

Этот код:

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:

Я думаю, что приложение принимает прямой ввод с клавиатуры,Является ли это возможным?Любые способы понять эту эмуляцию, без внедрения DLL и перехвата функций?

...