其實也不復雜,主要使用到shellAPI下的TNotifyIconData這個結構體:shell
typedef struct _NOTIFYICONDATA { DWORD cbSize; //結構體的大小,以字節爲單位 HWND hWnd; //窗口的句柄 UINT uID; //應用程序定義的任務欄圖標的標識符 UINT uFlags; //此成員代表具體哪些其餘成員爲合法數據 UINT uCallbackMessage; //應用程序定義的消息標示 HICON hIcon; //增長、修改或刪除的圖標的句柄 TCHAR szTip[64]; //指向一個以/0結束的字符串的指針 DWORD dwState; //Version 5.0,圖標的狀態 DWORD dwStateMask; //Version 5.0. 指明dwState成員的那些位能夠被設置或者訪問 TCHAR szInfo[256]; //指向一個以/0結束的字符串的指針,字符串的內容爲氣球提示內容 union { UINT uTimeout; //表示氣球提示超時的時間,單位爲毫秒,此時間後氣球提示將消失 UINT uVersion; //用來設置使用Windows 95 仍是 Windows 2000風格的圖標消息接口 }; TCHAR szInfoTitle[64]; //指向一個以/0結束的字符串的指針。字符串的內容爲氣球提示的標題 DWORD dwInfoFlags; //設置此成員用來給氣球提示框增長一個圖標,增長的圖標出如今氣球提示標題的左側 GUID guidItem; //保留 HICON hBalloonIcon; //用於Windows Vista或更高版本的自定義氣球圖標 } NOTIFYICONDATA, *PNOTIFYICONDATA;
具體怎麼用,給個函數 ->函數
procedure FillDataStructureandCreate(shint:string;dwFlags:Cardinal); begin with FsysIcon do begin cbSize:=SizeOf(TNotifyIconData); Wnd:=Handle; uID:=Application.Icon.Handle; uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP or NIF_INFO; hIcon:=Application.Icon.Handle; StrPCopy(szInfoTitle,'標題'); StrPCopy(szInfo,shint);//shint爲內容 dwInfoFlags:=dwFlags;//提示的圖標 uCallbackMessage:=CM_ICONDATA; //自定義的消息處理函數 uTimeout:=15; uVersion:=NOTIFYICON_VERSION_4; end; end;
調用ui
首先得添加spa
FillDataStructureandCreate('右擊從新顯示窗體',NIIF_INFO); Shell_NotifyIcon(NIM_ADD,@FsysIcon);
自定義提示指針
FillDataStructureandCreate('服務已啓動',NIIF_INFO); Shell_NotifyIcon(NIM_MODIFY,@FsysIcon);
最後用完刪除code
Shell_NotifyIcon(NIM_DELETE,@FsysIcon);
其中 FsysIcon是TNotifyIconData類型.blog