清理任务栏残留图标Delphi版 附源程序

 
//我想任何人都遇到过这样的情况:
//任务栏右下角的快捷图标有时并不会随着程序的关闭而消失
//只有当鼠标划过时才消失
//下面的函数可以通过自动划过并清除这些图标

procedure RemoveDeadIcons;
var
 TrayWindow : HWnd;
 WindowRect : TRect;
 SmallIconWidth : Integer;
 SmallIconHeight : Integer;
 CursorPos : TPoint;
 Row : Integer;
 Col : Integer;
begin
 { 获得任务栏句柄和边框}
 TrayWindow := FindWindowEx(FindWindow('Shell_TrayWnd',NIL),0,'TrayNotifyWnd',NIL);
 if not GetWindowRect(TrayWindow,WindowRect) then
   Exit;
 { 获得小图标大小}
 SmallIconWidth := GetSystemMetrics(SM_CXSMICON);
 SmallIconHeight := GetSystemMetrics(SM_CYSMICON);
 { 保存当前鼠标位置}
 GetCursorPos(CursorPos);
 { 使鼠标快速划过每个图标 }
 with WindowRect do
 begin
   for Row := 0 to (Bottom - Top) DIV SmallIconHeight do
   begin
     for Col := 0 to (Right - Left) DIV SmallIconWidth do
     begin
       SetCursorPos(Left + Col * SmallIconWidth, Top + Row * SmallIconHeight);
       Sleep(10);  //发现这个地方参数为 0 的时候,有时候是不够的
     end;
   end;
 end;
 {恢复鼠标位置}
 SetCursorPos(CursorPos.X,CursorPos.Y);
 { 重画任务栏 }
 RedrawWindow(TrayWindow,NIL,0,RDW_INVALIDATE OR RDW_ERASE OR RDW_UPDATENOW);
end;

(请参考VB6版:清理任务栏残留图标VB6版 附源程序)
http://blog.csdn.net/tanaya/archive/2006/09/20/1253038.aspx

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值