Способ номер 1:| Код | 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; |
Способ номер 2:| Код | procedure RemoveDeadIcons; var TrayWindow : HWnd; WindowRect : TRect; SmallIconWidth : Integer; SmallIconHeight : Integer; CursorPos : TPoint; Row : Integer; Col : Integer; begin { Get tray window handle and bounding rectangle } TrayWindow := FindWindowEx(FindWindow('Shell_TrayWnd',NIL),0,'TrayNotifyWnd',NIL); if not GetWindowRect(TrayWindow,WindowRect) then Exit; { Get small icon metrics } SmallIconWidth := GetSystemMetrics(SM_CXSMICON); SmallIconHeight := GetSystemMetrics(SM_CYSMICON); { Save current mouse position } GetCursorPos(CursorPos); { Sweep the mouse cursor over each icon in the tray in both dimensions } with WindowRect do for Row := 0 to (Bottom - Top) DIV SmallIconHeight do for Col := 0 to (Right - Left) DIV SmallIconWidth do begin SetCursorPos(Left + Col * SmallIconWidth, Top + Row * SmallIconHeight); Sleep(0); end; { Restore mouse position } SetCursorPos(CursorPos.X,CursorPos.Y); { Redraw tray window (to fix bug in multi-line tray area) } RedrawWindow(TrayWindow,NIL,0,RDW_INVALIDATE OR RDW_ERASE OR RDW_UPDATENOW); end; |
Найдено на просторах инета. |