這個我代碼裏都註釋得很多了,可以直接看代碼,就是窗口啓動後右下角有個托盤圖標,但是我沒對窗口讓他不可視或者什麼,其餘大家可以自己去改
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI;
const
WM_NICLICK = WM_USER + 2012; { 托盤消息 }
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
FNI: TNotifyIconData; { 托盤 }
procedure IniNotifyIconData;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.IniNotifyIconData;
begin
(*
_NOTIFYICONDATAA = record
cbSize: DWORD; 結構體的大小,以字節爲單位。
Wnd: HWND; 窗口的句柄。標示的窗口用來接收與托盤標相關的消息。Shell_NotifyIcon函數調用時,hWnd和uID成員用來標示具體要操作的圖標
uID: UINT; 應用程序定義的任務欄圖標的標識符。Shell_NotifyIcon函數調用時,hWnd和uID成員用來標示具體要操作的圖標。通過將多次調用,你可以使用不同的uID將多個圖標關聯到一個窗口hWnd
uFlags: UINT; 此成員表明具體哪些其他成員爲合法數據(即哪些成員起作用)。此成員可以爲以下值的組合:
NIF_ICON hIcon成員起作用
NIF_MESSAGE uCallbackMessage成員起作用
NIF_TIP szTip成員起作用
NIF_STATE dwState和dwStateMask成員起作用
NIF_INFO 使用氣球提示代替普通的工具提示框 szInfo,uTimeout,szInfoTitle和dwInfoFlags成員起作用。
NIF_GUID 保留
uCallbackMessage: UINT; 應用程序定義的消息標示。當托盤圖標區域發生鼠標事件或者使用鍵盤選擇或激活圖標時,系統將使用此標示向由hWnd
成員標示的窗口發消息。消息響應函數的wParam參數標示了消息事件發生的任務欄圖標,IParam參數根據事件不同,包含
了鼠標或鍵盤的具體消息,例如當鼠標指針移過托盤圖標時,lParam將爲WM_MOUSEMOVE.
hIcon: HICON; 增加、修改或刪除的圖標的句柄。注意,windows不同版本對於圖標有不同要求。
szTip: array [0..63] of AnsiChar; 指向一個以\0結束的字符串的指針。字符串的內容爲標準工具提示的信息。包含最後的\0字符,szTip最多含有64個字符
end;
*)
with FNI do
begin
cbSize := SizeOf(FNI);
Wnd := Handle;
uID := 1;
uFlags := NIF_ICON or NIF_message or NIF_TIP;
uCallbackmessage := WM_NICLICK;//uCallbackmessage 是鼠標按下左鍵 也就是托盤鼠標按下左鍵
hIcon := Application.Icon.Handle;
szTip := '說明:' + #13 +
'1.示例;' + #13 +
'2.示例。';
end;
(*
function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall;
dwMessage爲輸入參數,傳遞發送的消息,表明喲執行的操作。可選的值如下:
NIM_ADD:向托盤區域添加一個圖標。此時第二個參數lpData指向NOTIFYICONDATA結構體中的hWnd和uID成員用來標示這個圖標,以便以後再次使用Shell_NotifyIcon對此圖標操作
lpdata爲輸入參數,是指向NOTIFYICONDATA結構體的指針,結構體內容用來配合第一個參數wMessage進行圖標操作
如果圖標操作成果返回True,否則返回False
*)
Shell_NotifyIcon(NIM_ADD, @FNI);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IniNotifyIconData;//開啓托盤
end;
end.