Autor Beitrag
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Di 10.04.07 20:48 
Hallo!

Ich möchte hier ein kleines, (hoffentlich) lebenserleichterndes Programm vorstellen, dass ich entwickelt habe.
Der Name des Programms kommt von der Verwendungsart, für die ich es eigentlich geschrieben habe: Für die erleichterung des Cheat-Eingebens (Ja, ich gestehe, ich verwende Cheats!).
Mithilfe des Programms kann man jeder der F-Tasten einen String zuweisen (oder auch nicht), der automatisch eingegeben wird, sobald man sie drückt. Das ganze funktioniert global, also auch, wenn die Anwendung im Hintergrund läuft. Damit ist das Programm aber auch dann geeignet, wenn z.B. die Zwischenablage nicht ausreicht.
Die Zuordnungen lassen sich in eine Textdatei mit der Endunt .cht speichern (INI-Format) und wieder einlesen.
Einloggen, um Attachments anzusehen!
_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)


Zuletzt bearbeitet von Silas am Fr 13.04.07 13:03, insgesamt 2-mal bearbeitet
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 10.04.07 20:54 
ich glaube, dass das aber nicht unbedingt bei jedem Programm/Spiel funktioniert, es sei denn du machst das ganze auf Treiberebene. Welche Spiele hast du getestet ?

wenn ich eine andere F Taste wähle und da was eintrage, muss ich erst deaktivieren und aktivieren, damit die änderung wirksam ist, solltest du ändern ;)


mfg
Silas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Mi 11.04.07 15:24 
Das Abfragen der F-Tasten läuft über GetAsyncKeyState (für Hooks war ich zu faul), das senden der Strings über keybd_event.
Getestet hab ich das Programm nur mit GTA: Vice City (dafür hab ich's auch eigentlich entwickelt, weil ich es leid war jedesmal mir mit "getthereamazinglyfast" für ein neues Auto die Finger kaputtzutippen wenn das alte geschrottet war, vor allem weil das bei mir ungefähr alle dreißig Sekunden der Fall ist :D). Da funktioniert es einwandfrei.
Die Sache mit dem Aktivieren/Deaktivieren-Knopf ist (zumindest ursprünglich) Absicht gewesen, weil bei jedem Aktivieren die Edits und Checkboxen in Arrays übertragen werden (meines Wissens ist es deutlich resourcenschonender, ständig ein Array mit "for" zu durchlaufen als jedes Mal die Komponente erst mit "FindComponent" ausfindig zu machen und dann die jeweilige Eigenschaft auszulesen).
Ich hab jetzt eine neue Version hochgeladen, das Button-Chaos ist beseitigt (jetzt läuft alles über Menüs) und es gibt einen Eintrag, mit dem sich im aktivierten Zustand die Edits und Checkboxen neu einlesen lassen.

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Silas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Fr 13.04.07 13:06 
Ich würde jetzt gerne noch die Möglichkeit einbauen, Tasten festzulegen, die zusätzlich zur F-Taste gedrückt werden müssen (also Ctrl, Alt, usw.).

Also es gibt drei Checkboxen (Ctrl, Alt und Shift), die nach Modifiers_* übertragen werden. Wenn eine ausgewählt wurde (Modifiers_? = true) und sie gedrückt ist (Boolean(GetAsyncKeyState(VK_?)) = true), dann soll der Cheat gesendet werden

Wie mach ich da am einfachsten die Abfrage? Bis jetzt ist mir nur
ausblenden Delphi-Quelltext
1:
2:
if ((Modifiers_Alt and Boolean(GetAsyncKeyState(VK_MENU)) or ((not Modifiers_Alt) 
and (not Boolean(GetAsyncKeyState(VK_MENU))) and (Modifiers_Ctrl //... und so weiter
eingefallen. (Ich hoffe ich hab mich mit den Klammern nicht vertan)

Danke schon mal im Voraus!

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 13.04.07 19:47 
ausblenden Delphi-Quelltext
1:
if Boolean(GetAsyncKeyState(VK_MENU)) and not (Boolean(GetAsyncKeyState(VK_ALT) xor Modifiers_alt)					


wäre glaube ich eine möglichkeit, dann darfst du aber auch nicht die alt taste drücken, wenn der modifier aus ist ;) das machst du dann für alle (alt shift und ctrl)


mfg
Silas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Sa 14.04.07 19:06 
Ich steck jetzt an dieser Stelle fest: Wenn kein Modifier ausgewählt ist funktioniert's (also activatemodifiers = false), sobald aber einer ausgewählt ist funktioniert es nicht mehr... er scheint nicht erkennen zu können ob Ctrl gedrückt ist... ich komm hier einfach nicht weiter:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
procedure TCheatForm.Timer1Timer(Sender: TObject);
var i: byte;
begin
  // überprüfen ob der letzte Tastendruck mindestens 300 msek zurückliegt
  if LastCallTime + 300 < GetTickCount then begin
    // wenn irgendwelche Modifier aktiv sind
    if ActivateModifiers then begin
      // Strg
      if (Boolean(GetAsyncKeyState(VK_CONTROL)) and not
         (Boolean(GetAsyncKeyState(VK_CONTROL)) xor
         Modifiers_Ctrl))
         // Alt
         and (Boolean(GetAsyncKeyState(VK_MENU)) and not
         (Boolean(GetAsyncKeyState(VK_MENU)) xor
         Modifiers_Alt))
         // Shift
         and (Boolean(GetAsyncKeyState(VK_SHIFT)) and not
         (Boolean(GetAsyncKeyState(VK_SHIFT)) xor
         Modifiers_Shift))
         // Windows
         and (Boolean(GetAsyncKeyState(VK_LWIN)) and not
         (Boolean(GetAsyncKeyState(VK_LWIN)) xor
         Modifiers_Win))
         // Altgr
         and ((Boolean(GetAsyncKeyState(VK_CONTROL)) and
         Boolean(GetAsyncKeyState(VK_MENU))) and not
         ((Boolean(GetAsyncKeyState(VK_CONTROL)) and
         Boolean(GetAsyncKeyState(VK_MENU))) xor
         Modifiers_Alt)) then begin
        // Alle 12 F-Tasten überprüfen
        for i := 0 to 11 do
          // wenn dieser Key zugewiesen ist...
          if (ListActive[i]) and
          // überprüfen, ob er gedrückt ist (VK_FKey enthält die Codes von VK_F1 bis VK_F12
            (Boolean(GetAsyncKeyState(VK_Fkey[i]))) then
          // entsprechenden Cheat senden (extra Prozedur)
          SendKeyString(ListCheat[i]);
      end;
    end else begin
      // wenn keine Modifier aktiv sind, das ganze ohne abfrage:
      for i := 0 to 11 do
        if (ListActive[i]) and
          (Boolean(GetAsyncKeyState(VK_Fkey[i]))) then
        SendKeyString(ListCheat[i]);
    end;
  end;
end;


@F34r0fTh3D4rk: Dein Codestück müsste meines Erachtens eigentlich schon stimmen (Danke!!!)

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Silas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Di 17.04.07 18:54 
*schieb* ( :oops: )

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)