Einzelnen Beitrag anzeigen

Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Windows 7 Taskbar ein-/ausblenden

  Alt 29. Jun 2015, 09:31
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;
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat