![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Привет всем! Хочу написать bunny hop для любой игры.
bunny hop - (Кроличьи прыжки) в народе её попросту называют распрыжкой. Нажал на пробел - прыгаешь бесконечно, отпустил пробел - перестал прыгать. И так, я кинул на форму таймер, в таймере написал следущее: Код:
begin tmr1.Enabled:=False; keybd_event(VK_SPACE,0,0,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); end; Код:
begin tmr1.Enabled:=True; end; Код:
begin tmr1.Enabled:=False; end; Для работы программы, нужно сделать так, что бы она работала в свернутом виде, либо пониз всех окон. Например играя в кс, окно кс будет поверх программы... И программа перестанет работать! Как сделать что бы она работала всегда? Это был первый вопрос. Вопрос второй: Как мне сделать так, что бы программа начала свою работу на определённую кнопку ? например на кнопку мышки, или допустим левый альт? Получается при нажатии alt надо что бы она начинала свою работу, а при отжатии клавиши, выключалась(действие программы). P.S. Я новичок.... Буду очень благодарен за помощь! Заранее спасибо! |
#2
|
|||
|
|||
![]() В общем у меня есть программа, по нажатию например на А, нажимается пробел. То-есть имитируется нажатие пробела (вроде правильно написал
![]() Но она работает только когда окно программы активно. А мне надо, что бы она могла работать даже в свернутом виде. Можно это реализовать ? Вот полный код программы Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) tmr1: TTimer; Button1: TButton; Button2: TButton; mmo1: TMemo; procedure tmr1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.tmr1Timer(Sender: TObject); begin tmr1.Enabled:=False; keybd_event(VK_SPACE,0,0,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); end; procedure TForm1.Button1Click(Sender: TObject); begin tmr1.Enabled:=True; mmo1.Lines.Add('on'); end; procedure TForm1.Button2Click(Sender: TObject); begin tmr1.Enabled:=False; mmo1.Lines.Add('off'); end; procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 65 then Form1.Button1.Click; end; procedure TForm1.Button1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 65 then Form1.Button2.Click; end; end. Если держать программу поверх браузера, и включить таймер (который повторяет нажатие пробела) и резко нажать на браузер, то можно заметить как страница браузера прокручивается! Это говорит о том, что программа действительно работает. ))))) Помогите ребята. Последний раз редактировалось Gareth, 23.03.2013 в 17:33. |
#3
|
||||
|
||||
![]() Цитата:
Код:
... keybd_event(VK_SPACE,0,KEYEVENTF_EXTENDEDKEY,0); keybd_event(VK_SPACE,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); ... Это работает там, где есть фокус в данный момент времени. Не вырубайте таймер на время и убедитесь в этом. Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Gareth (23.03.2013)
|
#4
|
|||
|
|||
![]() Цитата:
|
#5
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.tmr1Timer(Sender: TObject); begin keybd_event(VK_SPACE,0,KEYEVENTF_EXTENDEDKEY,0);// Жмём keybd_event(VK_SPACE,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); //Отпускаем end; procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 65 then begin tmr1.Enabled:= True; mmo1.Lines.Add('on'); end; end; procedure TForm1.Button2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 65 then begin tmr1.Enabled:= False; mmo1.Lines.Add('off'); end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 23.03.2013 в 13:23. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Gareth (23.03.2013)
|
#6
|
|||
|
|||
![]() Цитата:
Сейчас убрал, включил программу, нажал кнопку, не отпуская её кликнул по браузеру, и он начал скроллится вниз. Попытался прокрутить вверх страничку - не получается, так как таймер всё еще работает. Получается что нужно опять зайти в программу и отжать там кнопку. Как мне заставить программу работать в свернутом виде? Что бы она реагировала на нажатие кнопок на клавиатуре в свернутом виде? |