Zminimalizowany do tray-a

0

Cześć Wszystkim

Używam następującej procedury chowania programu z paska zadań i umieszczania
go w tray-u (poniżej)
jednak gdy chcę uruchomić program zminimalizowany (tradycyjnymi sposobami)
wtedy pojawia mi się zminimalizowane okno (a raczej taki krótki pasek główny
okna) tuż koło przycisku START (takie podobne do tego z win 3.11 :( )

Jak temu zaradzić żeby ten pasek nie pojawiał się a program umieszczony
został w tray-u i skasowany z paska zadań windows ?????
robię to pod win2k ale w innych windows-ach też chciałbym żeby działało

dzięki za odpowieź
(w zamian zainteresowanym mogę przesłać mój program "Impuls" dla osób łączących się z netem przez modem)

  1. Jak dodać ikonę programu do Tray'a. ( ikonka obok zegara Windows ).
    Oto kod. Aha, dodaj do listy modułów słowo "ShellAPI".
  2. Do sekcji private dodaj takie pozycje:
    IconNotifyData : TNotifyIconData;
    procedure WndProc(var Msg : TMessage); override;
  3. Teraz w OnCreate wpisz taki oto kod:
    with IconNotifyData do
    begin
    hIcon:=Application.Icon.Handle;
    uCallbackMessage:=WM_USER+1;
    cbSize:=SizeOf(IconNotifyData);
    Wnd:=Handle;
    uID:=100;
    uFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
    end;
  • Kopiujemy tytuł aplikacji jako "dymek"
    StrPCopy(IconNotifyData.szTip, Application.Title);

  • Dodajemy ikonę do traya
    Shell_NotifyIcon(NIM_ADD,@IconNotifyData);
    Następnie uzupełnij procedure "WndProc" w taki oto sposób:
    procedure TMainFrm.WndProc(var Msg : TMessage);
    var
    p : TPoint;
    begin
    {
    Ta procedura służy do przechwytywania komunikatów po naciśnięciu przycisku w
    obrębie ikony.
    }
    *Jezeli nacisnieto prawym przyciskiem myszy
    if (Msg.Msg=WM_USER+1) and (Msg.lParam = WM_RBUTTONDOWN) then
    begin
    *Nastepuje pobranie pozycji kursora myszki
    GetCursorPos(p);
    *i wyswietlenie menu
    TrayMenu.Popup(p.x, p.y);
    end;
    *Jezeli nacisnieto lewy przycisk nastepuje wyswietlenie //formy
    if Msg.LParam = WM_LBUTTONDOWN then
    MainFrm.Show;

inherited;
end;
Dodatkowo przy zamykaniu programu możesz dopisać linie:

Shell_NotifyIcon(NIM_DELETE, @IconNotifyData);
Usuwa ona ikone z Tray'a.

0

Miałem coś podobnego, gdy chciałem schować formę Hide-m w czasie konstruktora. Niby wszystko działało, ale forma się nie chowała. trick polega n tym, że zrobiłem sobie timerka, który miał interwal ustawiony na 1 i w jego procedurce wywoływałem chowanie. I to działało. Nie wiem czy o to Ci chodziło, ale może tak... :-) Tak w ogóle to nie wiem dlaczego....--Delphi 4 + 6

Skysh The God, Your Slave

0

Mozesz skorzystac z komponentu TrayIcon z pakietu LMDlubWarian Digital
Wystarczy wtedy jedna linijka kodu do wrzucenia do traya:
TrayIcon.HideMainForm

a pokazazuje sie:
TrayIcon.ShowMainForm;

:-)
[email protected]
POZDRAWIAM
DELPHI RULEZ
NIECH MOCz BĘDZIE Z WAMI
:-))

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