Delphi 模拟鼠标在任务栏的图标上面逐个移动

 procedure RemoveDeadIcons;
var
  hTrayWindow: HWND;
  rctTrayIcon: TRECT;
  nIconWidth,nIconHeight: integer;
  CursorPos: TPoint;
  nRow,nCol: Integer;
Begin
  //  获得任务栏句柄和边框}
  // hTrayWindow := FindWindow('Shell_TrayWnd',nil);
  hTrayWindow := FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'TrayNotifyWnd',nil);

  if not (GetWindowRect(hTrayWindow, rctTrayIcon)) then
    Exit;

  // 获得小图标大小
  nIconWidth := GetSystemMetrics(SM_CXSMICON);
  nIconHeight := GetSystemMetrics(SM_CYSMICON);

  // 保存当前鼠标位置
  GetCursorPos(CursorPos);

  //鼠标快速划过每个图标
   for nRow := 0 To ((rctTrayIcon.bottom-rctTrayIcon.top) div (nIconHeight)) Do
   Begin
     for nCol := 0 To ((rctTrayIcon.right-rctTrayIcon.left) div (nIconWidth)) Do
     Begin
       SetCursorPos(rctTrayIcon.left + nCol * (nIconWidth )+ 8,
                    rctTrayIcon.top + nRow * (nIconHeight) + 8);
       Sleep(0);
     end;
   end;
    //恢复鼠标位置
   SetCursorPos(CursorPos.x, CursorPos.x);
    //重画任务栏
   RedrawWindow(hTrayWindow, nil, 0, RDW_INVALIDATE Or RDW_ERASE Or RDW_UPDATENOW);
end;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值