Erstmal einen schönen guten Tag!
Ich versuche derzeit folgendes Programm nachzuprogrammieren:
Keybinder
Grundgedanke: Bei GTA SanAndreas gibt es einen inoffiziellen Multiplayer Modus. Viele Aktionen laufen über Befehle ab wie zum Beispiel "/enter" zum betreten eines bestimmten Gebäudes. Über "t" öffnet man ein Feld in der man diese Befehle eingeben kann. Um die Schreibarbeit zu minimieren gibt es Keybinder(s.o) die für mich den tastendruck "t" simulieren -> den eingespeicherten String an das durch "t" geöffnete Feld übergeben -> Enter-Taste simulieren um zu bestätigen
Bisher nutzte ich GetSysFocus um das
Handle des aktuellen Fensters zu erhalten.
Delphi-Quellcode:
function TForm1.GetSysFocus: HWND;
var
ThreadID, CurrThrId: cardinal;
begin
Result := 0;
ThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
CurrThrId := GetCurrentThreadId;
if ThreadID <> CurrThrId then
begin
if AttachThreadInput(ThreadID, CurrThrId, true) then
begin
Result := GetFocus;
AttachThreadInput(ThreadID, CurrThrId, false);
end;
end
else
Result := GetFocus;
end;
Jedoch erreiche ich dadurch nicht die
DirectX Oberfläche sondern verändere lediglich die Caption des Fensters("GTA SA" wird dann zB zu "/enter".
Unter Windows klappt GetSysFocus einwandfrei. Wie erreiche ich es nun dass der String dem EingabeFeld in GTA übergeben wird?