![]() |
Hotkey, aber nicht global
hallo,
ich habe folgenden code geschrieben:
Delphi-Quellcode:
die taste funktioniert auch, aber auch dann, wenn ich ein anderes programm im vordergrund habe.
procedure TForm1.FormCreate(Sender: TObject);
begin if not RegisterHotkey(Handle, vk_F5, 0, vk_F5) then ShowMessage(SysErrorMessage(GetLastError)); end; procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if Msg.HotKey = vk_F5 then showmessage('test f5'); end; kann man den tastendruck nur dann abfragen, wenn das eigene programm aktiv ist? |
Re: Hotkey, aber nicht global
Hi,
Was auf jedenfall gehen müste wenn du ein TMainmenu in deine Form einbaust und da nen Shortcut mit F5 setzen tust. Dieser ist dann in der Tat nur in deinem Project "Global". |
Re: Hotkey, aber nicht global
Wenn Du nur eine Form benutzt und nicht extra ein Menü-Eintrag erstellen willst, dann kannst du KeyPreview auf TRUE stellen und dann in OnKeyDown, OnKeyPress und/oder OnKeyUp auf F5 reagieren.
Wenn mehrere Forms benutzt werden sollen, dann müsste eben auf allen KeyPreview auf TRUE stehen ;) |
Re: Hotkey, aber nicht global
@devilsCamp
Ich habe das mal gemacht. Wollte auf #37 also die Cursor Links Taste Reagieren. auf meiner Form habe ich mehrere TButton und TCheckbox gesetzt. und es hat leider nicht geklappt. |
Re: Hotkey, aber nicht global
Wo hast du darauf reagiert?
In OnKeyPress? So viel ich weiß, wird bei den Cursor-Tasten nur OnKeyDown und OnKeyUp ausgelöst. Und da musst du mit den virtuellen Tastencodes arbeiten |
Re: Hotkey, aber nicht global
Ich habe es nu mal so gemacht.
Delphi-Quellcode:
Aber das tut bei den Cursor Tasten leider nicht.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin showmessage(inttostr(key)); end; Die Property KeyPrieview ist ntürlich auf Tru gesetzt. |
Re: Hotkey, aber nicht global
Dann versuch mal folgendes:
Delphi-Quellcode:
// Allgemeine Behandlungsroutine einer Komponente
procedure TForm1.TastenDruckKeyDown(Sender: TObject); begin Form1KeyDown(Sender); // Restlicher Code, der gemacht werden soll end; // KeyDown des Forms procedure TForm1.Form1KeyDown(Sender: TObject); begin // Was halt zu machen ist end; Ist zwar sicher nicht die beste Art, aber immo die schnellste Lösung, die mir so kurz vor meinem Osterurlaub einfällt ;) |
Re: Hotkey, aber nicht global
Liste der Anhänge anzeigen (Anzahl: 1)
Das Geht Leider auch nicht, mal abgesehen von den Falschen übergabeparametern.
Damit wir was haben das sich besser ansehn kann habe ich es mal Gecoded und mit angehängt. Die Shomessage sollte halt auch bei den Pfeiltasten kommen. |
Re: Hotkey, aber nicht global
Zitat:
Interessanterweise funktioniert das bei "normalen" Tasten schon. Bei den Cursor-Tasten allerdings nicht. Werde mal schauen, ob ich da was zurecht basteln kann. Allerdings kann das etwas dauern... |
Re: Hotkey, aber nicht global
Thx,
Es ist ja net wirklich eilig, habe bisher halt asdw genommen, nur gibt es leider ne ganze Menge User die das net blicken. Deswegen wären die Pfeiltasten halt besser. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz