Keybd_Event w grze, jak zastosować aby działał?

0

Witam,
Chciałem napisać program który zmienia biegi w grze LFS. Niestety ten sposób którym ja robię nie działa na auto ale jedynie jak otworzę okienko czatu to wpisuje wybraną przeze mnie literkę.
Kod który nie działa:

 Keybd_Event(VkKeyScan('s'), 0, 0, 0);
        Keybd_Event(VkKeyScan('s'), 0, KEYEVENTF_KEYUP, 0);

W związku z powyższym proszę o pomoc i słuszne, działające rozwiązanie tematu
ps. nie wiem czy da się to zrobić w Delphi ale komuś się udało w innym języku zrobić odcięcie silnika które wciskało dany przycisk.

0

Jeżeli się nie udaje pod Delphi, możesz spróbować zrobić to pod AutoHotKey'em, może pod nim zadziała. Tylko exek ze skryptem będzie nieco większy - wiadomo. Ewentualnie czasem jak nie działa w grze DirectX Keybd_Event to zadziałać MOŻE, ale też nie musi - SendKey.

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;
0

No niestety komenda SendKey działa identycznie jak poprzednia. Natomiast nie za bardzo rozumiem ten autohotkey. Moja aplikacja polega na tym że ma zmieniać biegi jeżeli silnik przekroczy ileś tam obrotów.

0

Czego nie rozumiesz? Pobierasz pakiet z: http://www.autohotkey.com i odpowiednim programem ze skryptu *.ahk generujesz plik wykonywalny. Więcej informacji na tamtejszym forum gdzie mozęsz zadać pytanie w razie problemów z napisaniem skryptu, a także w dokumentacji programu. Nie wiem jak odczytujesz informacje o ilości obrotów, ale jeżeli czytasz w pamięci procesu, to może uda się to i zrobić pod AutoHotkey'em, jednak ja nie jestem w tym ekspertem. Nie wiem też, czy uda się zasymulować Tobie ten klawisz pod AutoHotkey'em, skoro inne metody w Delphi zawiodły.

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