Postmessage Wysyłanie Komend do gry Delphi

Odpowiedz Nowy wątek
Bartukil15
2010-11-27 17:28
Bartukil15
0

Witam, mam problem potrzebuje wysłać,
komendę np gdy nacisnę przycisk 5 to do gry zostanie wysłany komunikat
ma to odzwierciedlić bind w grze (bind 5 say Witam)
Czyli do gry powinien zostać wysłany komunikat (say Witam)
Zacznijmy od wykorzystania komponentu KeySpyXp
Kod:

procedure TForm1.KeySpyXP1Key(Sender: TObject; key: String);
begin
if key='5' then begin

Władowałem wszystko do ValueListEditor
I teraz jak zrobić że gdy klawisz wcisnięty znajduje się w kolumnie Keybinds wysyła do gry komendę z drugiej kolumny ValeListEdior przypisana do niej

Pozostało 580 znaków

2010-11-27 20:05
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 tygodnie temu

Lokalizacja: Szczecin

0

Prościej to będzie zamiast korzystać z jakiś keylogerów samodzielnie założyć gloibalnego
hooka na klawiaturę. Przykłady są w google. Po odczytaniu vkCode robisz to co chesz, w
razie czego tutaj masz przykładowy program. Z ValueListEditor nigdy nie korzystałem, no
ale pewnie używa się go w miarę prosto jak inne obiekty wyświetaljące dane TStrings, to
powinieneś umieć obsłużyć: http://www.speedyshare.com/files/25408069/catch_keys.rar


Pozostało 580 znaków

Bartekuil15
2010-11-28 00:26
Bartekuil15
0

Dobra, wykorzystałem globalhooka, i znalzłem taki kod wysylania

program klawiszki;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  sndkey32 in 'sndkey32.pas';
var
 x : integer;
begin
  for x:=1 to 20 do
   begin
    if AppActivate(Pchar('Untitled - Notepad')) then
     SendKeys('To jest przyklad jak wyslac znaki do notatnika.',true)
   end;
end.

Ok,
Tylko czy jak wyśle
say 'witam'
To gra to przyjmie jako komendę i wyświetli w czacie?
To raz a dwa czy gra,(program antycziterski) nie wykryje ze jakiś program wysyła wiadomości do gry?
I jak zrealizować to że
gdy któryś z przycisków z okna (x) pasuje to wysyła komunikat do niego przypisany?

Pozostało 580 znaków

2010-11-28 00:43
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 tygodnie temu

Lokalizacja: Szczecin

0

Nie wiem czy zadziała, to musisz sprawdzić sam. Ale klawisze wysyłaj przez
Keybd_Event albo SendInput jak w poniższym przykładzie (oczywiście po ich
wciśnięciu musisz je też "puścić"). Co do wykrycia, to wątpie bo symulujesz
ich wciskanie tak jakbyś robił to używając klawiatury, a nie wysyłasz do gry
czy jej okna żadnych komunikatów. Tak przynajmniej działa ten kod oraz, o
ile dobrze pamiętam moduł sendkey, ktory kiedyś testowałem pod Delphi ;/

procedure SimulateKeyPress(Key : Cardinal; KeyUp : boolean);
var
  Input : TagINPUT;
begin
  Input.Itype := INPUT_KEYBOARD;
  Input.ki.wVK := Key;
  Input.ki.wScan := MapVirtualKey(Key, 0);
  if Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_HOME,
    VK_END, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE] then
  begin
    Input.ki.dwFlags := KEYEVENTF_EXTENDEDKEY;
  end
  else
  begin
    if KeyUp = False then
    begin
      Input.ki.dwFlags := 0;
    end
    else
    begin
      Input.ki.dwFlags := KEYEVENTF_KEYUP;
    end;
  end;
  Input.ki.time := 0;
  SendInput(1, Input, SizeOf(Input));
end;

Pozostało 580 znaków

Bartekuil15
2010-11-28 12:25
Bartekuil15
0

Tutaj nie chodzi o symulację klawiszy, tylko o wysyłanie gotowych komend do gry,
np. Jeśli w configu gry zbinduję klawisz dla danej funkcji, np. bind u say Hi
To po nacisnięciu U gra wyśle do czatu HI poprzez say, można użyć wielu komend np quit wyjscie z gry, disconnect rozłączenie z serverm. itd.
o to mi chodzi.

Pozostało 580 znaków

Bartukil15
2010-11-28 17:07
Bartukil15
0

dobra, problem rozwiazany dzieki za pomoc

Pozostało 580 znaków

Odpowiedz

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