Witam,
chcialbym zrobic cos w stylu podajnika systemowego, aby na mojej formie pojawialy sie wsystkie ikonki z traya. Nie chce tego robic w sposob hardcore'owy, czyli wyciagac ich uchwyty z explorera, zalezy mi na osobnym programi. moze mi ktos pomoc??
Może coś z Windows.SetParent() ?
P.S. Mój kask on ma trzy rogi.... [browar]
Karolu - to daj mi do nich uchwyt, to raz, a dwa wolalbym bez odpalanie explorera.
One raczej uchwytu nie maja, pewnie przy ustawianiu ikony wysylany jest jakis komunikat z adresem ikony, handlem aplikacji itp.
wiem ze nie maja uchwytu, co mnie boli - to byla ironia z tym uchwytem. Przecie jak sie ustawia ikonke w tray to sie komunikat wlasnie wysyla
Wiec wystarczy zlukac jaki to komunikat i go zhookowac. Kiedys w delpgi/bin widzialem programik do sledzenia komunikatow ale teraz za cholere nie moge go <ort>znaleŹĆ</ort>.
winsight sie nazywa z tegoco pamietam. mozesz mi powiedziec jak sie hookuje komunikaty?? nie bawilem sie tym.
Troche zabawy z dllkami, byl na 4p bardzo fajny przyklad. BTW, jak nie masz nic przeciwko to jak uda ci sie z tym poradzic to podeslij mi rozwiazanie.
hehe, jak sobie z tym poradze to chyba kazdy bedzie chcial tego zaznac :)
dobra, ale tobie dam jako ze mi pomogles, a inni beda musieli poczekac, az ktos uczynny sie tu pojawi:)
nie no zartuje sobie, ale pewno jak dam rade to komponent zrobie.
U mnie działa:
Jeżeli chodzi o uchwyt(y) to:
ClassName: Shell_TrayWnd:
ClassName: TrayNotifyWnd:
ClassName: SysPager :
ChildWindow: Obszar powiadomień
ClassName: ToolbarWindow32
To "wwali" ci wszystkie trayowe ikonki prosto na formę:
var H:Integer;
begin
H:=FindWindow('Shell_TrayWnd',nil);
H:=FindWindowEx(H,0, 'TrayNotifyWnd', nil);
H:=FindWindowEx(H,0, 'SysPager', nil);
H:=FindWindowEx(H,0, 'ToolbarWindow32', nil);
Windows.SetParent(H, Form1.Handle);
Ma tylko jedną -malutką- wadę:
Kolor do okoła ikonek traya jest czarny :-/
Nie wiem, bo nie próbowałem ale może można go zmienić przez wysyłanie komunikatów albo inne cudo...?
Cimak.
Jest jeszcze jedna wada, przypuszczam, ze jak ktos potrzebuje czegos takiego to znaczy, ze pisze cos w stylu wlasnego shella - czyli wyciaganie czegokolwiek z explorera odpada.