Einzelnen Beitrag anzeigen

Madtrax

Registriert seit: 16. Sep 2003
19 Beiträge
 
#7

Re: Tray-Icon entfernen nach Beenden des Prozesses

  Alt 4. Dez 2009, 14:30
Hallo

Ich habe das gleiche Problem die Tage auch gehabt und eine sehr einfache und schöne Lösung gefunden.
Das Icon verschwindet wenn man mit der Maus darüber fährt, richtig ?
Also machen wir uns das zunutze und machen das mit Sourcecode. Gesagt sei dabei, dass die Maus nicht wirklich verschoben wird.
Habe den Code im Internet gefunden. Weiß allerdings auch nicht mehr wo genau. Schau es dir mal an....

Delphi-Quellcode:
Procedure KillTrayIcon;
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;
-----------------------------------
Madtrax
  Mit Zitat antworten Zitat