無 Form 程式僅有工作列狀態區圖示, 如何處理訊息? |
答題得分者是:Justmade
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
想要寫一個類似服務的程式, 所以希望程式執行不 CreateForm 而僅產生一個 Icon 在工作列狀態區(也就是右下角有小時鐘的區域), 在 Icon 上點選時才出現功能清單, 目前已經可以做到讓 Icon 正常的顯示以及移除, 看了很多站上的範例與討論, 都是在有 CreateForm 的狀態下, 可由 Form1 來擷取 Message, 所以不知道我這樣的程式該如何擷取 Message 呢? 我的想法認為應該是從 Application 中下手吧. program sysTray;
{$R *.res} uses
Forms, // Application 需要
windows, // GetTickCount(), DWORD 需要
SysUtils, // StrPCopy() 需要
Messages, // WM_USER 需要
ShellAPI; // Shell_NotifyIcon(), TNotifyIconData 需要 const
WM_ICONTRAY = WM_USER 1;
taskIconID = 300;
tt : DWORD = 5000;
appTitle = 'Test System Tray Icon'; var
tm : DWORD;
NotifyIconData : TNotifyIconData; begin
With NotifyIconData do
begin
cbSize := sizeof(TNotifyIconData);
Wnd := Application.Handle;
uID := taskIconId;
uFlags := NIF_MESSAGE NIF_ICON NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := application.Icon.Handle;
StrPCopy(szTip, appTitle);
end; Shell_NotifyIcon(NIM_ADD, @NotifyIconData); tm := GetTickCount;
while (GetTickCount - tm) <= tt do
begin
Application.ProcessMessages;
end; Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end. 我是雪龍 發表人 - bestlong 於 2003/07/15 02:09:18
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
davwu
一般會員 發表:13 回覆:12 積分:5 註冊:2003-04-08 發送簡訊給我 |
|
davwu
一般會員 發表:13 回覆:12 積分:5 註冊:2003-04-08 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
會停留 5 秒鐘是因為 tt : DWORD = 5000; 這行程式碼來設定的只是剛開始寫, 先這樣處理. 而 Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); Mark 掉的話, 只是程式沒有自己去移除掉 Icon 就結束了. 所以當你去點選 Icon 時, 系統才去清掉 Icon. 我目前的困難就是要讓滑鼠在圖示上 Click 後要顯示一個 PopupMenu , 若是有 Create 一個 Main form 的話, 可以採取 override Main form 的 WndProc method 來處理 Message, 站上就有很多範例了, 其中共通點就是一定是在 Form 物件內處理. 因為我的程式希望執行起來就不要有 main form 的存在. 只想將所有 Menu 設定在 PopupMenu 上, 在依據使用者點選的項目動態的建立 form 來處理. 所以要怎麼去攔截到 Message 是目前的問題的癥結. 我是雪龍 發表人 - bestlong 於 2003/07/16 13:06:40
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |