![]() |
|
|
#1
|
|||
|
|||
![]() Здравствуйте!
Мне надо послать в окно другой программы многократную имитацию нажатия и отжатия кнопки SPACE (пробел). Мне это дело надо пустить именно в потоке. Но не знаю как... С потоками имею дело в первые. Прочитал про них статейку, узнал как добавлять мастером и вручную. Предпочел вручную.. Не буду отходить от темы). Обычно я делал тот же трюк с пробелом , что описал выше, через таймер. А как мне это сделать в потоке? Написать в потоке цикл While ? Дело в том, что я делаю программку, ну, если можно назвать, вспомогательной для игры cs 1.6)) Сделал Анти-отдачу, тихий бег и тд.. И всё это у меня держится на таймерах... По этому задумался о потоках... ![]() Последний раз редактировалось Gareth, 23.04.2015 в 14:28. |
#2
|
||||
|
||||
![]() не нужны здесь потоки
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Цитата:
И всё таки подскажите, как это реализовать.. Я попробовал так: Код:
flag:Boolean; cs:HWND; Код:
procedure TMyThread.Execute; begin while flag=True do begin if GetForegroundWindow=cs then begin SendMessage(cs,WM_KEYDOWN ,VK_SPACE, MakeLong(0, MapVirtualKey(VK_SPACE, 0))); sleep(10); SendMessage(cs,WM_KEYUP ,VK_SPACE, MakeLong(0, MapVirtualKey(VK_SPACE, 0))); Sleep(1); end; end; end; С этим кодом не могу в игре двигаться, тупо прыгает и всё, даже если отключить, он отключается через несколько секунд. Скажите хотя бы почему так. Хоть для себя узнаю что-то новое.. Я бы сделал в программе через таймер всё... Но там и так уже 5 таймеров работают... И к тому же если посылать в окно игры нажатие пробела в таймере, то откровенно говоря коряво работает, должен постоянно прыгать, то-есть, как только коснулся земли, должен сразу прыгнуть. Таймер не спровляется, он не может дать столько нажатий в секунду, сколько надо.. Поток в этом деле может помочь ? Только что попробовал увеличить sleep(...) работа стала как и в таймере, можно двигаться и тд, но прыгает плохо... Последний раз редактировалось Gareth, 23.04.2015 в 15:43. |
#4
|
||||
|
||||
![]() именно не нужны
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() Цитата:
Если в курсе, ответьте пожалуйста на такой вопрос: Есть игровая мышь x7, в ней можно делать макросы. Я сделал макрос, в макросе код: Код:
кнопка прыжка задержка 10 мс Всё работает идеально. Почему таймер в Delphi не способен сделать тоже самое, даже при меньших задержках ? |
#6
|
||||
|
||||
![]() сделай в Delphi как в мышке, то бишь в цикле
Пишу программы за еду. __________________ |