您的位置:首页 > 编程语言 > Delphi

Delphi刷新托盘,去掉非正常退出的程序的托盘图标

2016-02-19 16:32 573 查看
procedure RemoveDeadIcons2;

var

wnd : cardinal;

rec : TRect;

w,h : integer;

x,y : integer;

begin

// find a handle of a tray

wnd := FindWindow('Shell_TrayWnd', nil);

wnd := FindWindowEx(wnd, 0, 'TrayNotifyWnd', nil);

wnd := FindWindowEx(wnd, 0, 'SysPager', nil);

wnd := FindWindowEx(wnd, 0, 'ToolbarWindow32', nil);

// get client rectangle (needed for width and height of tray)

windows.GetClientRect(wnd, rec);

// get size of small icons

w := GetSystemMetrics(sm_cxsmicon);

h := GetSystemMetrics(sm_cysmicon);

// initial y position of mouse - half of height of icon

y := w shr 1;

while y < rec.Bottom do

begin // while y < height of tray

x := h shr 1; // initial x position of mouse - half of width of icon

while x < rec.Right do

begin // while x < width of tray

SendMessage(wnd, wm_mousemove, 0, y shl 16 or x); // simulate moving mouse over an icon

x := x + w; // add width of icon to x position

end;

y := y + h; // add height of icon to y position

end;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: