procedure TForm1.Button1Click(Sender: TObject);
var
  lpData:PNotifyIconData;
begin
  lpData:=new(PNotifyIconDataA);
  lpData.cbSize:=88;//SizeOf(PNotifyIconDataA)
  lpData.Wnd:=Form1.Handle;
  lpData.uCallbackMessage:=WM_BARICON;
  lpData.uID:=0;
  lpData.szTip:='小闹钟';
  lpData.uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
  Shell_NotifyIcon(NIM_ADD,lpData);
  dispose(lpData);
  Form1.Visible:=False;
end;   运行单击后,程序不见了,但并未在右下角的任务栏中出现小图标.

解决方案 »

  1.   

    试试:
    //lpData.Wnd:=Form1.Handle;
    lpData.Wnd:=Handle;
      

  2.   

    private
        //系统托盘图标
        MyTrayIcon:TNotifyIconData;
        procedure WMMyTrayIconCallback(var Msg:TMessage);
        Message WM_MYTRAYICONCALLBACK;
    ***********
    //以下系统托盘图标
      MyTrayIcon.cbSize:=SizeOf(TNotifyIconData);
      MyTrayIcon.Wnd:=Handle;
      MyTrayIcon.uId:=1;
      MyTrayIcon.uFlags:=NIF_ICON or NIF_TIP or NIF_MESSAGE;
      MyTrayIcon.uCallBackMessage:=WM_MYTRAYICONCALLBACK;
      MyTrayIcon.hIcon:=Application.Icon.Handle;
      MyTrayIcon.szTip:='MossLove之天方夜谭';
      Shell_NotifyIcon(NIM_ADD,@MyTrayIcon);
    *******************
      

  3.   

    你的主要是这里不一样
    var
      lpData:PNotifyIconData;Shell_NotifyIcon(NIM_ADD,lpData);