Hallo,
bei meiner suche wie ich am einfachsten das icon neben der uhr also in der
TNa hinbekomme bin ich auf diesen eintrag gestoßen:
http://www.delphipraxis.net/internal...&highlight=tna
den code habe ich so wie er ist in eine
unit geschrieben:
Delphi-Quellcode:
unit uTyIcon;
interface
uses windows,Messages,ShellApi,forms,dialogs;
type
TTryIcon =
class
private
public
IconData: TNotifyIconData;
Handle:hwnd;
form:TForm;
procedure init(phandle:hwnd);
procedure WndProc(
var Msg: TMessage);
procedure WMSysCommand(
var Message: TWMSysCommand);
message WM_SYSCOMMAND;
end;
implementation
procedure TTryIcon.init(phandle:hwnd);
begin
//Application.ShowMainForm := False; //Programm gar nicht erst anzeigen
handle:=phandle;
IconData.cbSize := SizeOf(IconData);
IconData.Wnd :=
Handle;
IconData.uID := 100;
IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
IconData.uCallBackMessage := WM_USER + 20;
IconData.hIcon := Application.Icon.Handle;
IconData.szTip := '
Dies ist ein TNA-Icon';
//Shell_NotifyIcon(NIM_ADD, @IconData); // fügt das Icon ein end;
end;
// auf Mausklicks reagieren, Fensterprozedur erweitern
procedure TTryIcon.WndProc(
var Msg: TMessage);
var
Point: TPoint;
begin
if Msg.Msg = WM_USER + 20
then
begin
case Msg.lParam
of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(
Handle);
GetCursorPos(Point);
// PopUpMenu1.PopUp(Point.X, Point.Y);
end;
WM_LBUTTONDOWN:
begin
//ShowMessage('links runter');
end;
WM_LBUTTONDBLCLK:
begin
Form.Show;
// Icon nur anzeigen wenn Fenster minimiert
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
end;
end;
inherited;
end;
// beim Minimieren Fomr verstecken und Icon in die TNA
procedure TTryIcon.WMSysCommand(
var Message: TWMSysCommand);
begin
if Message.CmdType
and $FFF0 = SC_MINIMIZE
then
begin
form.Hide;
// Icon nur anzeigen wenn Fenster minimiert
Shell_NotifyIcon(NIM_ADD, @IconData);
end
else
inherited;
end;
end.
doch er macht leider nichts wenn ich ihn aufrufe:
installisieren tue ich die klasse in der create funktion vom form1
hat da jemmand eine kleine idee woran das liegen könnte und wie ich es umgehen kann ?
weil ich würde gerne diesen code auslagern !