THotKey - MacOS / Windows

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

THotKey - MacOS / Windows

Beitrag von EugenE »

Hi :),

hab mal eine kleine THotKey-Klasse geschrieben welche unter MacOS und Windows läuft :)

Wie funktioniert es:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Bei Windows muss das Form.Handle übergeben werden
  // Bei Mac braucht man keins
  MyHotKey := THotKey.Create{$IFDEF MSWINDOWS}(Handle){$ENDIF};
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyHotKey.Free;
end; 
 
{...}
 
// Dieses Event wird dann von der Komponente aufgerufen
procedure TForm1.MyHotKeyEvent(Key, Option: Word);
begin
  case Key of
    VK_A: ShowMessage('A');
    VK_1: ShowMessage('1');
  end;
end;
 
// Un/Registrieren eines HotKeys
// Key, Option, Event
MyHotKey.RegisterHotKey(VK_A, 0, @MyHotKeyEvent);
// HotKey ID
MyHotKey.UnRegisterHotKey(0);
Dank der Hilfe von skalogryz, konnte ich die Mac-Version portieren :).

Wenn noch jemand die Linux Version hinzufügen könnte, wäre die Sache komplett ;)

Gruß
Eugen
Dateianhänge
hotkey.pas
Die HotKey Unit
(6.97 KiB) 138-mal heruntergeladen

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: THotKey - MacOS / Windows

Beitrag von carli »

EugenE hat geschrieben:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Bei Windows muss das Form.Handle übergeben werden
  // Bei Mac braucht man keins
  MyHotKey := THotKey.Create{$IFDEF MSWINDOWS}(Handle){$ENDIF};
end;
Das gefällt mir noch nicht so. frage lieber in der Implementation nach Application.Handle im Fall von MSWINDOWS, anstatt es den Benutzer (..der Klasse) machen zu lassen.

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Re: THotKey - MacOS / Windows

Beitrag von EugenE »

carli hat geschrieben: Das gefällt mir noch nicht so. frage lieber in der Implementation nach Application.Handle im Fall von MSWINDOWS, anstatt es den Benutzer (..der Klasse) machen zu lassen.
Ich wusste nicht ob man auch von Application das Handle nehmen darf :D, naja wem dieser einfacher Aufruf zu viel, dann kann man es ja einfach im Code ändern :D

Die Klasse kann jeder bearbeiten der es möchte, solang es gute änderungen sind, einfach hier im Thread posten :)

Eugen

Antworten