![]() |
|
|
|
|
#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 как в мышке, то бишь в цикле
|