Win32 API 實現系統托盤程式

2021-06-19 01:33:27 字數 2547 閱讀 6559

托盤程式就是執行在系統托盤區域的程式,顯示為桌面右下角顯示區域的乙個小圖示。通常托盤程式帶有幾種功能:托盤選單,托盤圖示,氣泡提示,托盤提示。例如qq收到訊息後,會在系統右下角顯示閃動qq圖示。

主程式tray.cpp

[cpp]view plain

copy

#include 

#include "resource.h"

#define wm_tray (wm_user + 100)

#define wm_taskbar_created registerwindowmessage(text("taskbarcreated"))

notifyicondata nid;     //托盤屬性

hmenu

hmenu;            

//托盤選單

//例項化托盤

void

inittray(

hinstance

hinstance, 

hwnd

hwnd)  

//演示托盤氣泡提醒

void

showtraymsg()  

lresult

callback wndproc(

hwnd

hwnd, 

uint

umsg, 

wparam

wparam, 

lparam

lparam)  

break

;  case

wm_lbuttondown:  

break

;  case

wm_lbuttondblclk:  

break

;  }  

break

;  case

wm_destroy:  

//視窗銷毀時刪除托盤

shell_notifyicon(nim_delete, &nid);  

postquitmessage(0);  

break

;  case

wm_timer:  

showtraymsg();  

killtimer(hwnd, wparam);  

break

;  }  

if(umsg == wm_taskbar_created)  

return

defwindowproc(hwnd, umsg, wparam, lparam);  

}  int

winapi winmain(

hinstance

hinstance, 

hinstance

/*hprevinstance*/

,   

lpstr

/*lpcmdline*/

, int

icmdshow)  

;  wc.style = null;  

wc.hicon = null;  

wc.cbcl***tra = 0;  

wc.cbwndextra = 0;  

wc.hinstance = hinstance;  

wc.lpfnwndproc = wndproc;  

wc.hbrbackground = null;  

wc.lpszmenuname = null;  

wc.hcursor = null;  

if(!registerclass(&wc)) 

return

0;  

cw_usedefault, cw_usedefault, cw_usedefault, null, null, hinstance, null);  

showwindow(hwnd, icmdshow);  

updatewindow(hwnd);  

inittray(hinstance, hwnd);          //例項化托盤

settimer(hwnd, 3, 1000, null);      //定時發訊息,演示氣泡提示功能

while

(getmessage(&msg, null, 0, 0))  

return

msg.wparam;  

}  

資源標頭檔案 resource.h

[cpp]view plain

copy

#define idi_tray    101

#define id_show     40001

#define id_exit     40002

資源檔案 resource.rc

[cpp]view plain

copy

#include "resource.h"

idi_tray icon discardable "ico.ico"

編譯很簡單,使用 visual studio建立乙個空專案,建好以上3個檔案,再找乙個ico圖示,儲存為ico.ico,即可編譯。

簡單實現系統托盤

使用 delphi 提供的 ttrayicon 類,兩三行程式甚至不寫程式 設計時選擇幾下 即可實現.設計時的準備工作 1 新增 ttrayicon tpopupmenu 控制項,tpopupmenu 用於托盤的右鍵選單.2 隨意給 tpopupmenu 新增些選單項.檔案 unitunit1 in...

win 32Api獲取系統記憶體函式

windows程式設計中 獲取系統記憶體資訊有2個api,分別是globalmemorystatus和globalmemorystatu globalmemorystatus函式可以在c語言咧直接呼叫,但是globalmemorystatu 卻不可以直接呼叫,因為globalmemorystatu ...

win32彙編使用win32 api實現字串拷貝

字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...