![]() |
ext. Programmstart + maximieren
ich habe ein kleines Problem mit dem Maximieren eines aus der Anwendung gestarteten Programmes.
der Reihenfolge nach: 1. Taskleiste verstecken
Delphi-Quellcode:
2. eigenes Programmfenster (onTop) liegt als eine Art Appbar über alles
procedure TForm1.ShowTaskBar(AShow: Boolean); //Taskleiste ein/ausblenden
const cmdShow: array[Boolean] of Integer = (SW_HIDE, SW_SHOW); var Handle: THandle; begin repeat Handle := FindWindow('Shell_TrayWnd', nil); Sleep(200); until Handle <> 0; if Handle <> 0 then ShowWindow(Handle, cmdShow[AShow]); end;
Delphi-Quellcode:
SetWindowPos(Form1.Handle,HWND_TOPMOST,0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);
3. Start des ext. Programms , maximiert und Rahmenlos
Delphi-Quellcode:
Problem: die Taskleiste wird ausgeblendet, jedoch das ext. Programm maximiert nur bis auf oberhalb der ausgeblendeten Taskleiste.
RunProcess(appWithPath, SW_MAXIMIZE, FALSE, @ProcID);
setwindowlong(AppWindow, GWL_STYLE, getwindowlong(AppWindow, GWL_STYLE) and (not ws_dlgframe) and (not ws_border) and (not WS_SIZEBOX)); ... Alternativ auch als SW_Show gestartet und maximiert mit ShowWindow(AppWindow,SW_MAXIMIZE); Ich möchte gerne die ext. Anwendung Fullscreen-maximiert haben. Gruß, bluescreen25 |
Re: ext. Programmstart + maximieren
Das liegt daran, dass die Taskleiste als Appbar registriert ist und somit den Arbeitsbereich des Desktops entsprechend verkleinert. Soll sich das Programm über den ganzen Bildschirm maximieren, musst du den Workspace entsprechend anpassen. Natürlich muss du ihn wieder zurücksetzen.
Aber was ist das:
Delphi-Quellcode:
Entweder wird das Fenster gefunden oder nicht. Wozu die Schleife?
repeat
Handle := FindWindow('Shell_TrayWnd', nil); Sleep(200); until Handle <> 0; |
Re: ext. Programmstart + maximieren
Zitat:
Nochmal zum Workspace....hilf mir mal auf die Sprünge....ich habe folgendes:
Delphi-Quellcode:
das ist eine alte Appbarsache, die aber nicht zum tragen gekommen ist. Wie kann ich hier den Workspace auf Fullscreen bekommen, nachdem die Taskleiste ausgeblendet ist. Eine Merkfunktion ist zumindest schon vorhanden. Nach "SetWorkArea" würde dann das ext. Programm starten.
procedure TForm1.SetWorkArea;
var w:TRect; begin // Aktuellen Zustand auslesen SystemParametersInfo(SPI_GetWorkArea, 0, Pointer( @MerkScreen), 0); ShowTaskBar(false);//Taskleiste verstecken SetWindowPos(Form1.Handle,HWND_TOPMOST,0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW); w := MerkScreen; w.Top := w.top + Height; // neues WorkArea festlegen SystemParametersInfo( SPI_SetWorkArea,0,Pointer( @w),0); MakeWindowOpaque (Form1, Transparenz); //Transparenz an SetCursorPos(extFloating_X+(extFloating_W div 2),extFloating_Y+(extFloating_H div 2)); end; procedure TForm1.RestoreWorkArea; begin SetWindowPos(Form1.Handle,HWND_NOTOPMOST,0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW); SystemParametersInfo(SPI_SetWorkArea, 0, Pointer( @RootScreen), 0); ShowTaskBar(true); end; Gruß,bluescreen25 |
Re: ext. Programmstart + maximieren
Reaktiviert und funzt:
Delphi-Quellcode:
Gruß, bluescreen25
procedure TForm1.SetWorkArea;
var Dummy:TRect; begin ShowTaskBar(false);//Taskleiste verstecken // Aktuellen Zustand auslesen SystemParametersInfo(SPI_GetWorkArea, 0, Pointer( @MerkScreen), 0); SetWindowPos(Form1.Handle,HWND_TOPMOST,0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW); Dummy := MerkScreen; Dummy.Bottom := Dummy.Top + Screen.Height; // neues WorkArea festlegen SystemParametersInfo( SPI_SetWorkArea,0,Pointer( @Dummy),0); MakeWindowOpaque (Form1, Transparenz); //Transparenz an SetCursorPos(extFloating_X+(extFloating_W div 2),extFloating_Y+(extFloating_H div 2)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz