AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Keybinder - GTA SA

Offene Frage von "Millencolin"
Ein Thema von Millencolin · begonnen am 12. Feb 2010 · letzter Beitrag vom 15. Feb 2010
Antwort Antwort
Seite 1 von 3  1 23      
Millencolin

Registriert seit: 12. Feb 2010
11 Beiträge
 
#1

Keybinder - GTA SA

  Alt 12. Feb 2010, 13:56
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Keybinder - GTA SA

  Alt 12. Feb 2010, 14:02
Zitat von Millencolin:
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?
Das liegt womöglich daran, daß es kein eigenständiges EingabeFeld (Edit) gibt.

Diese Anwendung zeichnet dieses "virtuelle" Eingabefeld nur als Grafik.
Eingaben gehen weiterhin an die Anwendung und bei dieser kommt es darauf an, wie sie die eingegebenen Tasten ausließt, denn an diese Schnittstelle muß man dann die gewünschten "simulierten" Tastenanschläge schicken.

PS: Einige Programme unterbinden z.B. vorallem die einfachen Wege, wie z.B. WM_KEY und Co.
Dieses soll das Cheaten erschweren.
$2B or not $2B
  Mit Zitat antworten Zitat
Millencolin

Registriert seit: 12. Feb 2010
11 Beiträge
 
#3

Re: Keybinder - GTA SA

  Alt 12. Feb 2010, 14:09
meinst du dass ich beispielsweise für den befehl /enter folgende tasten simulieren muss: "t"->"/"->"e"->"n"->"t"->"e"->"r"->"Enter" ?
Das würde dann über DirectInput anlaufen oder?

PS: irgendwie gefällt mir der Gedanke nicht solche umwege zu laufen:/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Keybinder - GTA SA

  Alt 12. Feb 2010, 14:24
Der einfache Weg:
Schau mal nach SendKey und versuch die Tasten global zu senden,
dann landen sie beim "aktiven" Programm und mit viel Glück ließt GTA diese Schnittstelle ja aus.

Und ja, egal was du machst, am Ende müssen die Tasten so oder so bestimmt einzeln gesendet werden.
Wobei es eher so enden wird:
Zitat:
"t"-Taste drücken
"t"-Taste loslassen
alt-Taste drücken
"ß"-Taste drücken (da wo das "\" drauf ist)
"ß"-Taste loslassen
alt-Taste loslassen
"e"-Taste drücken
"e"-Taste loslassen
...
"r"-Taste drücken
"r"-Taste loslassen
enter-Taste drücken
enter-Taste loslassen
Sowas wie MSDN-Library durchsuchenWM_SETTEXT, MSDN-Library durchsuchenSetWindowText kannst du hier vergessen.

PS: 60 MB (61.355KB) kommt mir für soein Programm ein bissl viel vor.
$2B or not $2B
  Mit Zitat antworten Zitat
Millencolin

Registriert seit: 12. Feb 2010
11 Beiträge
 
#5

Re: Keybinder - GTA SA

  Alt 12. Feb 2010, 14:44
hmm bin noch nicht ganz überzeugt von der technik
zum beispiel kann jedes spiel doch auch die zwischenablage nutzen. gibt es nicht einen weg darüber der geeigneter ist?
weil dieses tastensimulation erscheint mir sehr begrenzt in seiner wirkungsweise.

PS: ja da gibt die seite falsche infos raus. da programm ist nur 60kb groß^^ da wollte wohl jemand die größe in byte angeben
  Mit Zitat antworten Zitat
Millencolin

Registriert seit: 12. Feb 2010
11 Beiträge
 
#6

Re: Keybinder - GTA SA

  Alt 14. Feb 2010, 12:54
Niemand anwesend der mir helfen kann?
Im prinzip geht es doch nur um eine simple informationsweitergabe...aber wie sende ich diese an eine DirectX anwendung?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Keybinder - GTA SA

  Alt 14. Feb 2010, 13:02
Ganz im Ernst, dieses war noch die Beschreibung eines einfachen Weges.
Alle Programme empfangen die Tasten einzeln, also kannst du sie auch nur einzeln senden.

Hast du denn mal nach SendKey geschaut? Diesem gibt man z.B. einen String, es zerlegt ihn und versendet dann die einzelnen Tastencodes.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Keybinder - GTA SA

  Alt 14. Feb 2010, 14:51
Zitat von himitsu:
9]PS: 60 MB (61.355KB) kommt mir für soein Programm ein bissl viel vor. [/size]
Irgendwo muss ja noch der Trojaner und Rootkit Code untergebracht werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Millencolin

Registriert seit: 12. Feb 2010
11 Beiträge
 
#9

Re: Keybinder - GTA SA

  Alt 14. Feb 2010, 16:11
himitsu du verstehst glaube nicht was ich will. der string soll eben nicht zerlegt werden. das ist meiner meinung nach kein guter programmierstil es über die simulation von tastendrücken zu realisieren.

luckie lese erstmal das thema bevor du sone behauptung verbreitest. Wie bereits gesagt das Programm ist 60kb groß nicht 60mb und nen trojaner hätte keine größe von 60mb
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Keybinder - GTA SA

  Alt 14. Feb 2010, 16:29
Was ist daran kein guter Programmstiel?

Wie gibst du diese Text/Befehl selber ein?
Genau, Taste drücken, Taste loslassen, nächste Taste drücken, Taste loslassen, ...

Und genau das muß dann auch dein "simulieren".

Sei es nun durch deinen eigenen Code oder über Funktionen/Komponenten wie SendKey ... was glaubst du denn, daß ich ständig auf sowas verweise?

Es ist nunmal nicht so, daß man hier in dem gewünschten Programm ein bestimmtest Control vorfindet, welches so wie ein Edit eine schöne Schnittstelle (z.B. ala SendMessage+WM_SETTEXT oder SetWindowText) bietet.

Zitat:
luckie lese erstmal das thema bevor du sone behauptung verbreitest.
Das war als Scherz gemeint.
(da bin ich mir relativ sicher und zur Klarstellung, ich wußte auch vorher schon, daß diese 60 MB nicht stimmen konnten und was Kleineres gemeint war )
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz