Witam wszystkich
Mam taki kod i zarazem problem.
Program wrzucam do Tray-a, a także rejestruję skrót Ctrl+F1.
Skrót działał dopóki nie wrzuciłem programu do Tray-a.
Co trzeba zrobić, aby skrót ten działał. Jak obsłużyć WM_HOTKEY ?
Próbowałem już na wiele sposobów, także w WndProc to zrobić, ale nie działa.
Dzięki za wskazówki i odpowiedzi. Pzdr
Kod:
private
procedure WM_HOTKEY(var Msg: TMessage); message WM_HOTKEY;
protected
procedure WndProc(var Msg: TMessage); override;
public
IconNotifyData: TNotifyIconData;
end;
procedure TFrm.WndProc(var Msg : TMessage);
var p: TPoint;
begin
if (Msg.Msg = WM_USER + 1) and (Msg.lParam = WM_RBUTTONDOWN) then begin
GetCursorPos(p);
PopupMenu1.Popup(p.x, p.y);
end;
inherited;
end;
procedure TFrm.WM_HOTKEY(var Msg: TMessage);
begin
if Msg.WParam = $0001 then Frm.Show; //cokolwiek wrzucę po then to nie działa :(
end;
procedure TFrm.FormCreate(Sender: TObject);
begin
RegisterHotKey(Application.Handle, $0001, MOD_CONTROL, VK_F1);
BorderIcons := [biSystemMenu];
with IconNotifyData do begin
hIcon := Application.Icon.Handle;
uCallbackMessage := WM_USER+1;
cbSize := SizeOf(IconNotifyData);
Wnd := Handle;
uID := 100;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
end;
StrPCopy(IconNotifyData.szTip, 'Go To Internet');
Shell_NotifyIcon(NIM_ADD, @IconNotifyData);
end;
procedure TFrm.Zamknij1Click(Sender: TObject);
begin
UnregisterHotKey(Frm.Handle, $0001);
Shell_NotifyIcon(NIM_DELETE, @IconNotifyData);
Application.ProcessMessages;
Application.Terminate;
end;