Einzelnen Beitrag anzeigen

STaRDoGGCHaMP

Registriert seit: 1. Okt 2007
34 Beiträge
 
#2

Re: Hotkey oder Tastendruck simulieren

  Alt 15. Dez 2009, 20:55
Delphi-Quellcode:
function SendKey(wVk: WORD): UINT;
var Input: array of TInput;
begin
    SetLength(Input, 2);
    Input[0].Itype := INPUT_KEYBOARD;
    Input[0].ki.wVk := wVk;
    Input[0].ki.wScan := MapVirtualKey(wVk, 0);
    Input[1].Itype := INPUT_KEYBOARD;
    Input[1].ki.dwFlags := KEYEVENTF_KEYUP;
    Input[1].ki.wVk := wVk;
    Input[1].ki.wScan := MapVirtualKey(wVk, 0);
    SendInput(2, Input[0], sizeof(TInput));
end;
Diese Funktion simuliert einen Tastendruck. Wenn du jetz möchtest, dass wenn du beispielsweise "i" drückst, zwei mal "m" gedrückt wird musst du einfach nur ein Programm schreiben, welches einen globalen Hotkey setzt und dann einfach die oben genannte Funktion ausführen. (SendKey(VkKeyScan('m')). Alternativ könntest du noch nach PostMessage/SendMessage suchen, da könnte man theoretisch auch im minimierten Fensterzustand Tastendrücke simulieren.

Was aber ein generelles Problem bei solchen Sachen ist, ist die Tatsache, dass viele Spiele eine Anti-Cheat Software eingebaut haben, welche das Hacken vermeiden sollen. Und unter Hacken fallen auch Bots, welche die Funktion SendInput benutzen. Und meistens ist die Sache da mit SendInput sehr eklig, die Funktion wird in Usermode und auch in Kernelmode "gehooked", das heisst es wird sozusagen eine Funktion zwischengeschaltet, welche es nicht möglich macht SendInput zu nutzen, wenn das Spiel angeschaltet ist. Und auf Kernel-Ebene kann man das nur entfernen wenn man mit Treibern arbeitet, was auch eine etwas eklige Sache ist.
  Mit Zitat antworten Zitat