Pewny StayOnTop + brak paska na taskbarze

Pewny StayOnTop + brak paska na taskbarze
jakubkrol
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 81
0

Witam serdecznie.

Chcę zrobić pewny StayOnTop formy i do tego, żeby nie było paska/ikony na taskbarze.

Ofc zrobiłem to:

Kopiuj
procedure NoTaskBar; //wywoływany był w OnCreate i w OnShow, ale to chyba nie ma znaczenia, więc jest w OnShow
begin
ShowWindow(Application.Handle, SW_HIDE);
//ShowWindow(GetDesktopwindow, SW_HIDE);
end;

procedure TPTKACFForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    ExStyle := ExStyle or WS_EX_TOPMOST;
    WndParent := GetDesktopwindow;
  end;
end;

No ale razem to nie współgra ;/ Domyslam się, że dlatego, że parenta zmieniamy temu formowi na pulpit, no a w kodzie NoTaskBar mamy usuniecie z taskbara naszego appa... Ale jak próbowałem

Kopiuj
ShowWindow(GetDesktopwindow, SW_HIDE);

lub podobnie, to też z marnym skutkiem.. :)

Jakieś pomysły?
Z góry dziękuję i pozdrawiam!

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

A ustawienie FormStyle na fsStayOnTop i taki kod w OnCreate nie załatwia sprawy?

Kopiuj
  SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Chociaż widzę, że okno traci Focus chyba, a tego pewnie chcesz uniknąć. Innego pomysłu nie mam.
ale przy okazji jak już napisałem, to życzę wszystkim Wesołych Świąt i szcześliwego nowego roku.

jakubkrol
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 81
0
olesio napisał(a)

A ustawienie FormStyle na fsStayOnTop i taki kod w OnCreate nie załatwia sprawy?

Kopiuj
  SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Chociaż widzę, że okno traci Focus chyba, a tego pewnie chcesz uniknąć. Innego pomysłu nie mam.
ale przy okazji jak już napisałem, to życzę wszystkim Wesołych Świąt i szcześliwego nowego roku.

No właśnie ten kod działa tylko przy zwykłym fsStayOnTop.. A to sprawia, że nie zawsze jest na wierzchu, szczegółnie w Win Vista/7... ;/

@Edit: Zmiana w, na:

Kopiuj
procedure TPTKACFForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    ExStyle := ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW;
    WndParent := GetDesktopwindow;
  end;
end;

Przyniosła oczekiwany rezultat ^^ :) Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.