Эмуляция мыши в неактивном окне

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by flatron, 25 Apr 2011.

  1. flatron

    flatron New Member

    Joined:
    25 Apr 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Пытаюсь написать автокликер для онлайн игры. Пишу на Делфи, через WinAPI открываю лису, загружаю игрушку, логинюсь - тут все нормально. Далее эмулирую движения мышки и нажатия кнопок. Все вроде нормально работает, но! Хотелось бы пока кликер делает свое черное дело, самому работать на компе. Вопрос в следующем - можно ли как-то эмулировать манипуляции мыши и нажатия клавиш для окна, но таким образом, чтобы чортова игрушка считала, что оно активно, в то время как оно сделано невидимым или свернуто вниз в панель задач?
     
  2. AGENTWPC74

    AGENTWPC74 Member

    Joined:
    11 Nov 2009
    Messages:
    201
    Likes Received:
    37
    Reputations:
    5
    пускай на деде
     
  3. edge911

    edge911 Active Member

    Joined:
    21 Feb 2009
    Messages:
    105
    Likes Received:
    142
    Reputations:
    15
    поставь еще одну винду на виртуалку и там пускай
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    а вообще такие штучки на autoit легче всего делать.
     
  5. flatron

    flatron New Member

    Joined:
    25 Apr 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Запускать на дедике и в виртуалке не вариант - через несколько часов блочат акк, как-то просекают.

    Про AutoIt думал, но там тот же трабл - эмулировать мышу и клаву может только в активном окне, по крайней мере как сделать это в свернутом окне я не придумал.
     
  6. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    1. Пришем DLL(что делать будет - напишу ниже)
    2. Инжектим ее в браузер при его запуске(соответственно нужно инжектор написать)
    3. Сама DLL перехватывает вызов RegisterClassA(скорее всего A)
    4. При вызове той функции меняем в структуре TWndClass адрес оконной функции на свою(но старую сохраняем) - поле lpfnWndProc
    5. При вызове уже нашей оконной функции - вызываем старую(которую сохранили) и соотв. результат ее будет результатом нашей, но не всегда
    6. Если хочешь "нажать" мышкой или перевести курсор по тому окну - вызываешь ту оригинальную оконную функцию с нужными тебе параметрами и все.
     
  7. flatron

    flatron New Member

    Joined:
    25 Apr 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Идею понял, но скила для реализации не хватает :) За направление поисков спасибо, пойду копать