Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Tastenkombinationen Systemweit abfragen (https://www.delphipraxis.net/84242-tastenkombinationen-systemweit-abfragen.html)

E307 13. Jan 2007 20:11


Tastenkombinationen Systemweit abfragen
 
Ich versuche schon seit langem Tastatureingaben an ein in den Tray minimiertes Programm zu senden. Dazu habe ich hier über die Suche schon einige Hinweise gefunden, aber wenn ich den Tastaturhook- Code verwende, bbleibt das Programm einfach hängen. Gibt es eine bessere Möglichkeit z.B die Tastenkombination Strg+Alt+F1 für sein Programm zu reservieren?

Christian Seehase 13. Jan 2007 20:16

Re: Tastenkombinationen Systemweit abfragen
 
Moin E307,

schau Dir doch mal MSDN-Library durchsuchenRegisterHotkey an.

E307 13. Jan 2007 20:41

Re: Tastenkombinationen Systemweit abfragen
 
Delphi-Quellcode:
RegisterHotKey(Handle,$FF,MOD_ALT+MOD_CONTROL,50);
Wie sage ich dem Programm was ausgeführt werden soll?

Christian Seehase 13. Jan 2007 21:07

Re: Tastenkombinationen Systemweit abfragen
 
Moin E307,

hier mal ein komplettes Kurzbeispiel:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure WMHOTKEY(var msg : TWMHotKey); message WM_HOTKEY;
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not RegisterHotKey(self.Handle,0,MOD_ALT or MOD_CONTROL,VK_F1) then begin
    ShowMessage(SysErrorMessage(GetLastError));
  end;
end;

procedure TForm1.WMHOTKEY(var msg: TWMHotKey);
begin
  if msg.HotKey = 0 then ShowMessage('Hotkey aufgerufen');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnregisterHotKey(self.Handle,0);
end;
Wichtig:
Wenn der Hotkey schon von einem anderen Programm reserviert wurde, schlägt die Registrierung fehl, hier gilt: Wer zuerst kommt mahlt zuerst.

E307 13. Jan 2007 22:10

Re: Tastenkombinationen Systemweit abfragen
 
Komisch, so ähnlich sah das bei mir auch aus, nur, dass die Registrierung nicht geklappt hat. Mit dem Code geht's, Vielen Dank!

Christian Seehase 13. Jan 2007 23:23

Re: Tastenkombinationen Systemweit abfragen
 
Moin E307,

wenn die Registrierung nicht klappt, kannst Du Dir ja anzeigen lassen, warum nicht.
Normalerweise wohl, weil die Kombination schon registriert wurde.

Was mir übrigens noch aufgefallen ist: MOD_ALT+MOD_CONTROL
Wenn Du irgendwelche Werte kombinieren kannst solltest Du das nie mit + machen, sondern immer mit OR, da Du sonst Gefahr läufst ungültige Werte zu erzeugen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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-2025 by Thomas Breitkreuz