Automatyczne klikanie klawiszy

0

Witam
Potrzebuję szybko program który po każdym kliknięciu klawisza na klawiaturze będzie klikal strzalke w Prawo.
Nie umięm Dephi a w Pascalu tego raczej niezrobie.

Piszę spolszczenie do gry na telefon i jest ono w pliku binarnym każdy tekst jest zapisany w postaci
np, A.l.a. .m.a. .k.o.t.a
te ktopki to znak w Hex 00 czyli muszę napisać literę i nastepnie sprzalke w prawo aby przejsc przez kropke.

0

jak dla mnie to trzeba zalozyc hooka na klawiature i przy wykryciu wcisniecia klawisza uzyc keybd_event do zasymulowania wciskania strzalek. generalnie wszystko juz bylo poruszane na forum i w internecie.

0

dobra napisalem program ale niereaguje na strzałki np. wciskam literę to wpisze litere ale nieche wpisać strzalki wpisuje np. za strzalke w góre H

0
Gregyyyy napisał(a)

dobra napisalem program ale niereaguje na strzałki np. wciskam literę to wpisze litere ale nieche wpisać strzalki wpisuje np. za strzalke w góre H

a skad mamy wiedziec co zle napisales? ;]
musisz wkleic kod :|

0

var
Hook:Integer;
MessageBuffer:TEventMsg;
key:char;
licznik:integer;

function Play(Code: integer; wParam, lParam: Longint): Longint; stdcall;
begin
case Code of
HC_ACTION: begin
MessageBuffer := PEventMsg(lParam)^;
if MessageBuffer.message = wm_KeyDown then
begin
if licznik=1 then
begin

keybd_event(VK_CAPITAL, 0, 0, 0);
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);

Form1.Memo1.Text := Form1.Memo1.Text + chr(MessageBuffer.paraml);
Result := 0;
inc(licznik);
end else licznik:=1;

end;
end;

else begin
Result := CallNextHookEx(Hook, Code, wParam, lParam);
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Hook := SetWindowsHookEx(wh_journalrecord, play, HInstance, 0);
licznik:=1;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(Hook);
end;

0

Wiem że to nie jest odpowiedź jak symulować tylko inne rozwiązanie, ale też chyba się nada.
Wsadzasz 2 edity i jednego memo.
Przy pierwszym edicie obslugujesz 2 zdarzenia
OnKeyPress oraz OnKeyDown

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if key=VK_RETURN then begin
    Memo1.Lines.Add(Edit2.Text);
    Edit1.Clear;
    Edit2.Clear;
  end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  K : char;
begin
  K := #46; // #46 - znak kropki
  if (key in ['A'..'Z','a'..'z','0'..'9',' ']) then
    Edit2.Text := Edit2.Text+Key+K
  else
    key := #0;
end;
0

VK_CAPITAL =capslock.
strzalka w prawo to VK_RIGHT
u mnei dziala;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1