Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formfenster soll wenn es inaktiv ist auf eingabe reagieren (https://www.delphipraxis.net/78427-formfenster-soll-wenn-es-inaktiv-ist-auf-eingabe-reagieren.html)

SirThornberry 5. Okt 2006 16:04

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
doch, du könntest ja die Abfrage in einen Timer packen. Oder du schaust dir mal die Funktion RegisterHotKey an.

Axxus 5. Okt 2006 17:28

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
JUHU LEUTE ICH HABS

Das erste mal das ich bei der suche was gefunden hab hab nämlich folgenden Fehler gemacht:

Nachdem ich den Suchbegriff eingegeben hab hab ich gedacht die suche wäre in sparten aufgeteilt also hab ich auf die sparte für VCL geklickt und gedacht da stehen die suchbegriffe drinn, dabei standen da alle posts drin. Hab mich schon gewundert und geärgert denn niergens war das zu suchende Wort makeirt da es nicht vorhanden war hab gedacht es wird generell net angezeit deshalb hab ich nix gefunden gehabt als ich immer und immer wiedert gesucht hab und deshalb hab ich euch (hoffentlich nicht) mit Fragen genervt die schon zich mal beantwortet wworden sind :wall: :wall: :wall: :wall: :wall:

Sorry Leute

Jedenfalls is hier die lösung

http://www.swissdelphicenter.ch/de/showcode.php?id=147

danke für die Hilfe

:chat: Axxus :chat:

inherited 6. Okt 2006 11:59

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
Nochmal zur anmerkung:
Die abfrage mit Keyboard.IsKeyDown funktioniert auch, wenn dein programm nicht den Focus hat. Allerdings musst du die abfrage in eine schleife packen, zb in einen Timer der alle 100 ms Den status der taste abfragt.

Axxus 6. Okt 2006 13:23

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
timer finde ich aber ehrlich gesagt für so was nicht so gut da so der PC langsmer wird wenn jede milisek abgefragt wird ob was passiert überleg mal wenn ich in mienem Programm für jede Taste einen Hotkey anbieten will dann hat der Pc damit schon mal viel zu tun und es soll ja auch nur im hintergrund laufen

dei einzige Tastenkombination für die es was bringt ist Strg-Alt-Entf (so kann man den taskmanager wegsperren^^)

Jedenfalls sind hotkey für so was besser denk ich

Axxus

inherited 6. Okt 2006 13:35

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
1ms ist auch uebertrieben^^
Nein, ist schon klar, nur weil du oben geschrieben hattest, dass du so nicht global tasten abfragen kannst.

EWeiss 6. Okt 2006 13:47

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
Delphi-Quellcode:
Jedenfalls is hier die lösung
Das problem dabei ist nur .. wurde der HotKey schon von einer anderen
Anwendung registriert dann kann es zu erheblichen störungen kommen.

gruß

Axxus 6. Okt 2006 14:10

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
Inwiefern also was passiert dann und wie kann man das beheben

Axxus

Sunlight7 6. Okt 2006 19:57

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
Das schlimmste was Dir passieren kann, ist das Windows bei RegisterHotKey nen FehlerCode zurückgibt.
Das sollte Dein Programm beachten, ob die Heiße Taste angenommen wurde oder nicht.
Sonnst könnte sich Dein Programm an den Heißen Tasten die Finger verbrennen :mrgreen:

Axxus 7. Okt 2006 12:08

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
Könnt ihr mir sagen wie ich übewrprüfen kann ob der hot key angenommen wurde (am besten mit Quelltext) und mir sagen wie ich störungen wie EWeiß beschrieben hat verhindern kann

Axxus

Sunlight7 7. Okt 2006 13:02

Re: Formfenster soll wenn es inaktiv ist auf eingabe reagier
 
Das geht einfach mit:
Delphi-Quellcode:
// Leertaste als Hot-Key setzen
// Zwar nicht sehr Sinnvoll, aber auch nur ein Beispiel ^^
const
  HotKeyID=1;
 
var
  HotKey1Set:Boolean;

procedure TForm1.FormCreate(Sender:TObject);
begin
   HotKey1Set:=RegisterHotKey(Form.Handle, HotKeyID, 0, VK_Space);
   If not HotKey1Set then ShowMessage('Die Leertaste ist bereits eine heiße Taste');
end;

... // Nur UnregisterHotKey aufrufen wenn HotKey1Set True ist!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Seite 2 von 2     12   

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