AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ext. Programmstart + maximieren

Ein Thema von bluescreen25 · begonnen am 24. Aug 2007 · letzter Beitrag vom 24. Aug 2007
Antwort Antwort
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

ext. Programmstart + maximieren

  Alt 24. Aug 2007, 09:20
ich habe ein kleines Problem mit dem Maximieren eines aus der Anwendung gestarteten Programmes.
der Reihenfolge nach:

1. Taskleiste verstecken

Delphi-Quellcode:
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;
2. eigenes Programmfenster (onTop) liegt als eine Art Appbar über alles

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:
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);
Problem: die Taskleiste wird ausgeblendet, jedoch das ext. Programm maximiert nur bis auf oberhalb der ausgeblendeten Taskleiste.

Ich möchte gerne die ext. Anwendung Fullscreen-maximiert haben.

Gruß, bluescreen25
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ext. Programmstart + maximieren

  Alt 24. Aug 2007, 09:26
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:
repeat
    Handle := FindWindow('Shell_TrayWnd', nil);
    Sleep(200);
  until Handle <> 0;
Entweder wird das Fenster gefunden oder nicht. Wozu die Schleife?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: ext. Programmstart + maximieren

  Alt 24. Aug 2007, 09:41
Zitat von Luckie:
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:
repeat
    Handle := FindWindow('Shell_TrayWnd', nil);
    Sleep(200);
  until Handle <> 0;
Entweder wird das Fenster gefunden oder nicht. Wozu die Schleife?
Upps, ja ich habs im Moment mit den Schleifen...Ziel der Angelegenheit hier ist das Starten und verwalten externer Anwendung aus meiner heraus. Lol, hast Recht, die Taskbar ist ja schon da im Gegensatz zu den ext. Anwendungen.

Nochmal zum Workspace....hilf mir mal auf die Sprünge....ich habe folgendes:

Delphi-Quellcode:
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;
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.

Gruß,bluescreen25
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ext. Programmstart + maximieren

  Alt 24. Aug 2007, 20:36
Reaktiviert und funzt:

Delphi-Quellcode:
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;
Gruß, bluescreen25
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 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