Entwickler-Ecke
Sonstiges (Delphi) - prozessübergreifendes keydown/keyup
Gabbergandalf - So 10.09.06 22:21
Titel: prozessübergreifendes keydown/keyup
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:
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 raziel: Code- durch Delphi-Tags ersetzt
Martok - 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)
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Timer1Timer(Sender: TObject); begin if GetAsyncKeyState(VK_SPACE)<>0 then Windows.Beep(800,10); 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
Gabbergandalf - Mo 11.09.06 08:55
Titel: juhu dankö ^^
gut das du für mich ne ausnahme gemacht hast :flehan:
endlich funzt es ^^
Gausi - 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.
Martok - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!