Autor Beitrag
Gabbergandalf
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 10.09.06 22:21 
ich habe in meinem projekt eine prozedur, die auf einen drück von leertaste 'y' ausgeben soll. nur möchte ich, dass eben diese y's auch bei einem druck auf die leertaste ausgegeben werden, wenn das laufende projekt minimiert ist. bitte nicht nur als antwort 'globale hooks' geben , soweit weiß ich auch schon bescheid :P . ich weiß halt nur nicht wie man diese benutzt/in das programm einbindet.

ps.: das tut von assarbad kenn ich, aba irgendwie kapier ichs nicht ^^ :?: :oops: :?:


so siehts atm aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 begin
 if (Key = ord(' ')) then timer1.enabled := true
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if (Key = ord(' ')) then timer1.enabled := false;
end;

(pro timertick wird denne ein y geschrieben)

/E: die frage ist: was genau muss in den code/ins unit alles rein damit globale hooks funzen?

so long - Bert *auf hilfe hoff* :roll:

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 10.09.06 22:52 
Assarbads Tutorials versteh ich auch nie!

Hier mal ein Beispielcode. Es wird ein Timer benutzt, der immer an ist und ein kurzes Intervall hat (so wie deiner)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if GetAsyncKeyState(VK_SPACE)<>0 then 
    Windows.Beep(800,10);  //hier wäre dann "y"-senden drin
end;


Da der Timer auch minimiert weiterläuft, wird auch immer wieder überprüft, ob die Leertaste unten ist. Daher braucht man keine komplizierten Hooks. Das funktionier aber nur, weil du sowieso einen Timer nutzt. Für Systemweite Hotkeys wäre RegisterHotkey sinnvoller.

Das Zeichen senden scheinst du ja schon zu haben, an sonsten findest du über die Suche hier einiges.

HTH,
Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Gabbergandalf Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 11.09.06 08:55 
Titel: juhu dankö ^^
gut das du für mich ne ausnahme gemacht hast :flehan:

endlich funzt es ^^
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 11.09.06 09:09 
Nur zum Verständnis, damit es hinterher nicht heißt "Hey, so einfach sind globale Hooks":

Der Vorschlag hier hat nichts, aber auch gar nichts mit Hooks zu tun. Registerhotkeys hat auch nichts mit einem Hook zu tun.

Bei Hooks stellt man sich selbst einen Wecker auf die gewünschte Uhrzeit, legt sich schlafen und wacht auf, wenn er klingelt.
Bei RegisterHotkeys sagt man seiner Mutter bescheid, wann sie einen aufwecken soll.
Und der Vorschlag hier beruht darauf, dass man alle 10 Sekunden auf die Uhr schaut, anstatt zu schlafen.

_________________
We are, we were and will not be.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 11.09.06 10:06 
Guter Vergleich!

Nur - manche Wecker lassen sich sehr kompliziert bedienen.
OT: Das hab ich mich bei Nemp auch gefragt: warum nimmst du Hooks und sagst nicht Mama bescheid?

@Topic: aber wenn er sowieso einen Timer nimmt, dachte ich mal Polling wäre am einfachsten.

Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."