Pewny StayOnTop + brak paska na taskbarze

0

Witam serdecznie.

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

Ofc zrobiłem to:

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

ShowWindow(GetDesktopwindow, SW_HIDE);

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

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

0

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

  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.

0
olesio napisał(a)

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

  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:

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

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