Показать сообщение отдельно
  #7  
Старый 04.01.2012, 10:54
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

сам компонент:

Код:
unit HotKey;

interface

uses
  Windows, Messages, Classes;

type
  THotKey = class(TComponent)
  private
    FOnHotKey: TNotifyEvent;
    FWnd: HWND;
    procedure WndMethod(var Message: TMessage);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property OnHotKey: TNotifyEvent read FOnHotKey write FOnHotKey;
  end;

implementation

{ THotKey }

constructor THotKey.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FWnd:=AllocateHWnd(WndMethod);
  RegisterHotKey(FWnd, 1, MOD_CONTROL, Ord('G'));
end;

destructor THotKey.Destroy;
begin
  UnregisterHotKey(FWnd, 1);
  DeallocateHWnd(FWnd);
  inherited Destroy;
end;

procedure THotKey.WndMethod(var Message: TMessage);
begin
  if Message.Msg=WM_HOTKEY then
  begin
    if Assigned(FOnHotKey) then FOnHotKey(Self);
  end else
    Message.Result:=DefWindowProc(FWnd, Message.Msg,
      Message.WParam, Message.LParam);
end;

end.

использование:

Код:
uses
  HotKey,

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure HotKeyClick(Sender: TObject);

procedure TForm1.FormCreate(Sender: TObject);
begin
  with THotKey.Create(Self) do
    OnHotKey:=HotKeyClick;
end;

procedure TForm1.HotKeyClick(Sender: TObject);
begin
  ShowMessage('HotKeyClick');
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием