Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Windows 7 Taskbar ein-/ausblenden (https://www.delphipraxis.net/185674-windows-7-taskbar-ein-ausblenden.html)

Andidreas 29. Jun 2015 09:31

Windows 7 Taskbar ein-/ausblenden
 
Hallo zusammen,

ich habe letzte Woche im Internet nach Routinen zum ausblenden der Taskbar gesucht (Funktion wird benötigt damit das Programm auf dem ganzen Bildschirm angezeigt wird).
Mein Problem bestand dann hauptsächlich darin, das die Startfläche von Windows nicht ausgeblendet wurde, d.h. die Taskbar war weg, aber der runde Kreis mit Windows Logo war noch da.

Nach ein bißchen Such hab ich im Internet noch eine Lösung gefunden wie man das Windows Logo ausblendet, Funktioniert soweit alles wunderbar, ich hab nur noch einen kosmetischen Fehler.

Wenn ich die Taskbar ausblende und dann wieder einblende, dann ist das Windows Start Symbol wieder da, aber wenn ich auf das Windows Start Symbol klicke dann verschwindet dies und an der Stelle ist dann nur ein grauer Button mit "Start". Hat jemand eine Idee woran das liegen könnte?

Anbei mein Source:

Delphi-Quellcode:
procedure prShowTaskBar(blShow : Boolean);

var
wndTaskbar             : THandle;
hApp, hWinMenuBtn      : HWND;
rcApp, rcWork          : TRect;

begin

  wndTaskbar := FindWindow('Shell_TrayWnd', nil);
  If (wndTaskbar <> 0) Then
  Begin
    If (blShow) Then
    Begin
      //Taskbar
      EnableWindow(wndTaskbar, True);
      ShowWindow(wndTaskbar, SW_SHOW);
      //Windows Menu Button
      hWinMenuBtn := FindWindowEx(GetDesktopWindow, 0, 'Button', nil);
      ShowWindow(hWinMenuBtn, 1);
      Windows.SetParent(hWinMenuBtn, wndTaskbar);

      //prepare a default fullscreen workarea
      rcWork.Top:=0;
      rcWork.Left:=0;
      rcWork.Bottom:= GetSystemMetrics(SM_CYSCREEN);
      rcWork.Right:= GetSystemMetrics(SM_CXSCREEN);
      //get the taskbar handle
      hApp := FindWindow('Shell_TrayWnd', '');
      if hApp <> 0 then begin
        //get the size of the taskbar
        GetWindowRect(hApp, rcApp);
        //cut the workarea to place the taskbar
        if rcApp.Right<rcWork.Right then
          rcWork.Left:=rcApp.Right;
        if rcApp.Bottom<rcWork.Bottom then
          rcWork.Top:=rcApp.Bottom;
        if rcApp.Left>0 then
          rcWork.Right:=rcApp.Left;
        if rcApp.Top>0 then
          rcWork.Bottom:=rcApp.Top;
      end;
      SystemParametersInfo (SPI_SETWORKAREA, 0, @rcWork, SPIF_SENDCHANGE );
    End Else
    Begin
      //Taskbar
      EnableWindow(wndTaskbar, False);
      ShowWindow(wndTaskbar, SW_HIDE);
      //WindowsButton
      hWinMenuBtn := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
      ShowWindow(hWinMenuBtn, 0);
      Windows.SetParent(hWinMenuBtn, 0);

      rcWork.Top:=0;
      rcWork.Left:=0;
      rcWork.Bottom:=GetSystemMetrics(SM_CYSCREEN);
      rcWork.Right:=GetSystemMetrics(SM_CXSCREEN);
      SystemParametersInfo (SPI_SETWORKAREA, 0, @rcWork, SPIF_SENDCHANGE);
    End;
  End;

end;

markus5766h 29. Jun 2015 09:55

AW: Windows 7 Taskbar ein-/ausblenden
 
... nur mal kurz probiert :

gleiches Ergebnis.

Und : Fenster, die in den negativen Bereich verschoben wurden (egal wie weit und warum), werden dann in der Position (Top) auf 0 gesetzt.

Der schöne Günther 29. Jun 2015 10:14

AW: Windows 7 Taskbar ein-/ausblenden
 
Zitat:

Zitat von Andidreas (Beitrag 1306999)
Funktion wird benötigt damit das Programm auf dem ganzen Bildschirm angezeigt wird

Und warum reicht dir das nicht?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   BorderStyle := TFormBorderStyle.bsNone;
   WindowState := TWindowState.wsMaximized;
end;

zagota 29. Jun 2015 10:41

AW: Windows 7 Taskbar ein-/ausblenden
 
Möglich wäre noch,

FormStyle = StayOnTop
top := 0;
Left := 0;
Width := Screen.Width;
Height := Screen.Height;

Andidreas 29. Jun 2015 12:17

AW: Windows 7 Taskbar ein-/ausblenden
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1307014)
Zitat:

Zitat von Andidreas (Beitrag 1306999)
Funktion wird benötigt damit das Programm auf dem ganzen Bildschirm angezeigt wird

Und warum reicht dir das nicht?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   BorderStyle := TFormBorderStyle.bsNone;
   WindowState := TWindowState.wsMaximized;
end;

Geht leider nicht weil ich die Border benötige!

Zitat:

Zitat von zagota (Beitrag 1307022)
Möglich wäre noch,

FormStyle = StayOnTop
top := 0;
Left := 0;
Width := Screen.Width;
Height := Screen.Height;

Hab ich auch schon versucht, bringt leider auch nicht das gewünschte Ergebnis.

Zitat:

Zitat von markus5766h (Beitrag 1307010)
... nur mal kurz probiert :

gleiches Ergebnis.

Und : Fenster, die in den negativen Bereich verschoben wurden (egal wie weit und warum), werden dann in der Position (Top) auf 0 gesetzt.

Das versteh ich jetzt nicht ganz was Du damit meinst :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz