將程序隱藏於系統托盤除了使用 TrayIcon 控件外,還可以用以下方法:
使用Windows API 函數:
Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData);
1.dwMessage:[輸入參數] 說明要執行的動作。動作的可選值如下:
NIM_ADD 增加一個圖標到托盤區
NIM_DELETE 從托盤區刪除一個圖標
NIM_MODIFY 修改圖標
NIM_SETFOCUS 將焦點(Focus)返回托盤區。這個消息通常在托盤區圖標完成了用戶界面下的操作後發出。比如一個托盤圖標顯示了一個快捷菜單,然後用戶按下ESC鍵了操作,這時使用NIM_SETFOCUS將焦點繼續保留在托盤區。該項僅在系統外殼與常用控制DLL( Shlwapi.dll與Comctl32.dll)5.0以上版本才可用。
NIM_SETVERSION 指定使用特定版本的系統外殼與常用控制DLL。缺省值為0,表示使用Win95方式。該項在系統外殼與常用控制DLL 5.0以上版本才可用。
2.lpdata:[輸入參數] 一個指向NOTIFYICONDATA結構的指針。 結構的說明如下:
cbSize 以字節計的結構大小,以適應不同版本。
hWnd 接收Windows消息的窗口句柄。
uID 托盤圖標的ID。
uFlags 指示結構中的哪些成員包含有效數據,可選值:NIF_ICON, NIF_MESSAGE,NIF_TIP,NIF_STATE,
NIF_INFO,NIF_GUID。
uCallbackMessage 回調消息ID,由用戶自定義。與一個自定義的消息處理函數關聯。
hIcon 托盤圖標的句柄。
szTip 托盤圖標的提示字符串。
注意:以下數據成員僅限系統外殼與常用控制DLL 5.0及以上版本才有效!
dwState 圖標的狀態:NIS_HIDDEN-隱藏,或NIS_SHAREDICON-可視。
dwStateMask 圖標狀態掩碼,用以設置dwState
szInfo 氣球型提示(Balloon ToolTip)的字符串。
uTimeout 以毫秒計的提示顯示時間
uVersion 確定所依賴的版本。0-Win95,NOTIFYICON_VERSION-Win2000
szInfoTitle 氣球型提示的標題
dwInfoFlags 設置氣球型提示所用的圖標(類似MessageBox中所使用的圖標):
NIIF_ERROR 錯誤
NIIF_INFO 信息
NIIF_NONE 沒有圖標
NIIF_WARNING 警告
NIIF_ICON_MASK 6.0版本保留
NIIF_NOSOUND 限6.0版本,不播放對應的聲音
3.返回值:成功時函數返回TRUE,否則FALSE。
例子:添加系統托盤圖標
var Tray:NOTIFYICONDATA;
Tray.cbSize:=sizeof(Tray);
Tray.Wnd:=Self.Handle;
Tray.uID:=9998;
Tray.uFlags:=NIF_ICON+NIF_MESSAGE+NIF_TIP;
Tray.uCallbackMessage:=WM_USER;
Tray.hIcon:=application.Icon.Handle ;
Tray.szTip:=定時關機;
Shell_NotifyIcon(NIM_ADD,@Tray);