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;
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;
相关文章推荐
- delphi 10 seattle 安卓服务开发(三)
- delphi 10 seattle 安卓服务开发(二)
- delphi 10 seattle 安卓服务开发(一)
- Delphi 的TSpeedButton按下和弹起效果
- Delphi存取图像完整解决方案
- delphi 开机自动运行代码
- 有关时间限制使用和软件注册的设计(delphi)
- Delphi中获取文件大小
- I/O error 32/103
- Delphi 7 在程序中直接执行SQL脚本文件
- Delphi中如何拦截键盘消息
- Delphi:解决重绘造成的窗体闪烁问题
- Delphi将图片缩放成指定大小
- Delphi 从PaintBox拷贝一部分内容到TBitmap
- Delphi 之Copyrect的使用
- delphi中Message消息的使用方法
- Delphi XE7 开发ActiveX 及在IntraWeb下调试
- Delphi CompareValue函数的使用
- Delphi 操作“任务栏”
- Delphi BPL包的运用