Witam, jestem tu nowy.
W Delphi nie jestem orłem, ale znam go najlepiej ze wszystkich znanych mi języków.
Napisałem program, który ma mi posłużyć do kontrolowania gry Diablo.
Program ma podnosić przedmioty i atakować, pod warunkiem że takowa opcja
zostanie załączona.
A więc mam na formie labelki sygnalizujące aktualny stan uruchomionych funkcji,
timery i buttony aktywujące/deaktywujące.
Jak uruchomię programik, i grę, i aktywuję w programie wysyłanie nacisniec klawiszy,
to jak otworze okno chatu w grze, to owszem, wszystkie klawisze są wpisywane.
Moje pytanie, co mam zle napisane, ze gra nie rozpoznaje mi tego jako zwykle
nacisniecie klawisza tylko jak wpisany znaczek?
Tzn, w kazdym textboxie gry znaki są wpisywane, ale bez aktywnego textboxa
gra nie reaguje na nacisniecia wysylane przez program.
Bardzo prosze o pomoc.
Kod przedstawia się tak:
//timer1 ma funkcję podnoszenia przedmiotow/wysyla klawisz keyb_ementem
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
keybd_event(VkKeyScan('z'), VkKeyScan('z'), 0, 0);
keybd_event(VkKeyScan('z'), VkKeyScan('z'), KEYEVENTF_KEYUP, 0);
end;
////////timer2 ma funkcje znalezienia handlera okna i wyslanie tylko do niego
////////nacisniecia tego samego klawisza co wyzej,chcialem wyprobowac
////////ktory sposob wysylania klawiszy mi zadziala
procedure TForm1.Button3Click(Sender: TObject);
begin
Timer2.Enabled:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Timer2.Enabled:=false;
Label2.Caption:='Stan: zatrzymany!';
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
hdiablo: HWND;
begin
hdiablo := FindWindow(nil, 'diablo');
if hdiablo <> 0 then
begin
SendMessage(hdiablo, VKKeyScan('z'), 0, 0);
Label7.Caption:='handler znaleziony pomyślnie';
end;
end;
//////timer3 ma funkcje wysylania nacisniecia klawisza odpowiadajacemu
//////atakowi w grze
procedure TForm1.Button5Click(Sender: TObject);
begin
timer3.Enabled:=true;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
timer3.Enabled:=false;
Label3.Caption:='Stan: zatrzymany!';
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var
hdiablo: HWND;
begin
hdiablo := FindWindow(nil, 'diablo');
if hdiablo <> 0 then
begin
SendMessage(hdiablo, VK_SPACE, 0, 0);
Label3.Caption:='Stan: dziala!';
Label8.Caption:='handler znaleziony pomyślnie';
end;
end;