Problemy z zasobnikiem

0

Mam taka procedure dotyczaca tray'a :

procedure TBasicForm.mxFlatSpeedButton4Click(Sender: TObject);
begin
ExtendedStyle := GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,ExtendedStyle or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

with IconNotifyData do
begin
hIcon := Application.Icon.Handle;
uCallbackMessage := WM_USER+1;
cbSize := SizeOf(IconNotifyData);
Wnd := Handle;
uID := 100;
uFlags := ShellApi.NIF_MESSAGE + ShellApi.NIF_ICON + ShellApi.NIF_TIP;
end;
StrPCopy(IconNotifyData.szTip, Application.Title);
Shell_NotifyIcon(NIM_ADD,@IconNotifyData);
end;

problem w tym, ze Ja chce zeby dopiero po wcisnieciu buttona to okno aplikacji z paska 'Start' zniknelo i pojawila sie ikona w tray. Poza dwoma 1-szymi linijkami wszystko jest ok, tylko z tym znikaniem nie wiem jak zrobic, owszem gdy te 2 liniki wsadze przed Application.Initialize..........Application.Run to wszystko jest ok, od razu znika, ale ja chce miec nad tym kotrole, wiec co mam z tym zrobic ???

0

moze pomoze ci fragmet kodu z ASm z uzyciem API działa własnie tak jak chcesz - chowa wyswietlanie aplikacji z paska i laduje do tray'a po nacisnieciu przycisku nimimalizacji w aplikacji jesli chcesz kod rozbudowany o obsluge menu kontekstowego i przechwytywanie komunikatow z tray'a to napisz maila


zmienne:
icona_sys NOTIFYICONDATA <?>


;tworzeine zasobnika systemowego
;wypelnienie struktory NOTIFYICONDATA danymi
mov icona_sys.cbSize,sizeof NOTIFYICONDATA
push hwnd
pop icona_sys.hwnd ;uichwyt do okna aplikacji
mov icona_sys.uID,IDI_TRAY ;ikona zasobnika (moze byc kilka)
mov icona_sys.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIP ;icona+callmes+szTip
mov icona_sys.uCallbackMessage,WM_SHELLNOTIFY ;zwrotna wiadomosc z win-->okna
invoke LoadIcon,hInstance,101
mov icona_sys.hIcon,eax
invoke lstrcpy,addr icona_sys.szTip,addr AppName ;ustawienie tipa
invoke Shell_NotifyIcon,NIM_ADD,addr icona_sys

;obsluga resize
.ELSEIF eax==WM_SIZE
.IF wParam==SIZE_MINIMIZED ;TU FRAGMET ODP. ZA MINIMALIZACJE I UKRYWANIE
invoke ShowWindow,ebx,SW_HIDE ;jesli min to chowaj okno
invoke Shell_NotifyIcon,NIM_ADD,addr icona_sys ;ladowanie
.ENDIF


0

Zerknij sobie na kod źródłowy: http://4programmers.net/file.php?id=1268, albo w ogóle skorzystaj z komponentu.

0

Witam
Jemu chyba nie o to chodzi. Po jego kodzie wnioskuję, że chciałby, aby okno programu było widoczne, tylko nie było go widać na Pasku Zadań, natomiast miałoby ikonę w Zasobniku Systemowym. Czyli tak jak np. otwarte GG. Przecież gdyby mu chodziło u ukrycie okna to ukryłby okno Application.Handle i Handle i po krzyku a nie bawił się ze zmianą jego stylu. Niestety nie wiem jak zrobić, aby to działało :(
Pozdrawiam

0

tak ostatnia odp. jet ok tylko szkoda ze bez wyjasnienia :(
Czy ktos z tym mial juz jakis problem... ????

0

Ja mam inny problem z Trayem.
Nie wiecie może jak można zasymulować kliknięcie w traya nie klikając w niego tylko jakoś programowo, żeby kiedy kliknę w mój przycisk na formie przy nim rozwineło się menu kontekstowe programu eMule ??

0

Nie wiem czy o to ci chodzi (przykład w C++):

/* ukrycie paska */
ShowWindow(Application->Handle,SW_HIDE);

/* wyświetlenie paska w taskbarze */
ShowWindow(Application->Handle,SW_SHOW);
0

No nie zupełnie już tak próbowałem i nic, kod który podałem w pierwszych 2 linijkach jest ok, ale dziala tylko po Initialize, ale przed CreateForm... tylko Ja chce przejac nad nim kontrole, dalem go jak widzicie ale to nie dziala- nie znika to okno z paska menu Start....
POMOCY !!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1