Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Sekundärer Monitor und Fremdsoftwareparameter ? (https://www.delphipraxis.net/49947-sekundaerer-monitor-und-fremdsoftwareparameter.html)

spacewolf 18. Jul 2005 19:43


Sekundärer Monitor und Fremdsoftwareparameter ?
 
Hallo Leute,

ich möchte eine Software (wo ich nur die Exe hab (kein Source)) auf einem Sekundären Monitor starten.

:coder2:

Ich benutze bisher die folgende Funktion (um Software zu starten):
:coder:


Delphi-Quellcode:
// Alles was frmProt. etc... ist dient zum Protokollieren (also nicht weiter wichtig)

function ExecAndWait(const filename, params: string; windowstate: word;
                     warten: boolean): boolean;
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
  window: Cardinal;
begin
  frmProt.AddDo(0000,'ExecAndWait:'+filename+'/'+params);
 
  try
    FillChar(SEInfo, SizeOf(SEInfo), 0);
    SEInfo.cbSize := SizeOf(TShellExecuteInfo);
    with SEInfo do begin
      fMask := SEE_MASK_NOCLOSEPROCESS;
      Wnd := Application.Handle;
      lpFile := PChar(filename);
      lpParameters := PChar(params);
      nShow := windowstate;
    end;
    if ShellExecuteEx(@SEInfo) then
    begin
      if warten then begin
        window := GetActiveWindow;
        // Enabled := false;
        repeat
          Sleep(100);//2004_12_15 to prevent 100% CPU-Usage
          Application.ProcessMessages;
          GetExitCodeProcess(SEInfo.hProcess, ExitCode);
        until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
        //Enabled := true;
        SetForegroundWindow(window);
      end;
      Result:=True;
    end
    else Result:=False;
  except
    on e:Exception do
      frmProt.AddEx(true,e.ClassName,e.Message + #13#10 + filename + #13#10 + params);
  end;
end;
Weiß irgendjemand wie ich diese Funktion so erweitern kann, das ich eine gewisse Software dazu zwinge sich auf einen anderen Monitor zu verschieben (oder bzw. gleich zu dahin starten)....


Wer hat n Plan ?


euer Andreas mit einem großen Fragezeichen im Gesicht :gruebel:

Olli 18. Jul 2005 21:22

Re: Sekundärer Monitor und Fremdsoftwareparameter ?
 
Zum Gruße,

mit dem eigentlichen Problem kann ich dir nicht helfen, jedoch solltest du statt der Repeat-Schleife unbedingt eine Wait-Funktion (zB WaitForSingleObject) benutzen. Die CPU-Auslastung sinkt dann nochmals, weil die Wait-Funktion zurückkehrt, wenn der Prozeß beendet wurde (wenn du ein Prozeßhandle übergibst).

Alternativ kannst du meine Ersatzfunktion benutzen (insofern sie deinen Ansprüchen genügt), oder dir dort besagte Benutzung der Wait-Funktionen abschauen ;)
http://assarbad.net/stuff/shellapiex.pas
http://www.delphipraxis.net/internal...ect.php?t=6983

CalganX 18. Jul 2005 21:50

Re: Sekundärer Monitor und Fremdsoftwareparameter ?
 
Hi,
wenn du das Handel des Programmes hast, kannst du mit Hilfe von Delphi-Referenz durchsuchenMoveWindow das Fenster verschieben. Dann brauchst du nur noch die Auflösung und die Ausrichtung der Monitore und – voila – hast du dein Programm auf dem zweiten Monitor. ;)

Chris

spacewolf 19. Jul 2005 08:23

Re: Sekundärer Monitor und Fremdsoftwareparameter ?
 
:hi:

wat schlau ihr seid... :dp: muss ich doch glatt mal alles ausprobieren :coder:


DANKE :cheers: und Gottes Segen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 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