Цитата:
Сообщение от NumLock
сделай в Delphi как в мышке, то бишь в цикле
|
Пробовал вот так:
Код:
flag:boolean;
cs:HWND;
........
procedure TForm1.FormCreate(Sender: TObject);
begin
cs:=FindWindow(nil, 'Counter-Strike');
while flag=True do
begin
if GetAsyncKeyState(VK_MBUTTON)<>0 then
begin
SendMessage(cs,WM_KEYDOWN ,VK_SPACE, MakeLong(0, MapVirtualKey(VK_SPACE, 0)));
Sleep(1);
SendMessage(cs,WM_KEYUP ,VK_SPACE, MakeLong(0, MapVirtualKey(VK_SPACE, 0)));
Sleep(1);
end;
end;
end;
Этот же код писал и в потоке..
Всё ровно в игре чувствуется задержка. С макросом, если в игре бежать вперед, нажать кнопку макроса и отпустить бег вперед, то он прыгает еще долго вперед, по инерции... Всё что я не пробовал в Delphi, не может повторить такого.. То-есть он так же пригает по инерции дальше, но гораздо меньше времени. Если с макросом по инерции прыгает сикунд 10-15, то с Delphi прогой около 3-5 секунд.
Или я что-то не правильное сделал в цикле? Может Getasynckeystate каким-то образом влияет на быстроту выполнения? Может не правильно эмулирую space?
Пробовал еще через keybd_event();, но в игре не прыгает, но если открыть консоль, то в консоле бегут порбелы в строке. Значит посылка в окно кс осуществляется, но почему не прыгает!?
Еще пробовал увеличить приоритет программы - Высокий, до лампочки.
Короче я запутался окончательно))
Помогите, дайте какую-нибудь идею, как можно с минимальными задержками имитировать нажатие пробела?