![]() |
shellexecute auf zweitem bildschirm ausführen
hi,
ich möchte ein programm via shellexecute auf meinem zweiten monitor ausführen.. ich habs mal mit
Delphi-Quellcode:
probiert, aber iwie funktioniert das nicht, das programm bzw in diesem fall der ordner wird auf dem hauptbildschirm geöffnet...
ShellExecute(screen.Monitors[1].Handle,PChar('open'),PChar('c:\'),nil,nil,SW_MAXIMIZE);
danke schonmal für eure beiträge.. |
Re: shellexecute auf zweitem bildschirm ausführen
IDEE:
Erstelle den Prozess mit CreateProzess, suche das Hauptfenster dieses Prozesses und setze per API-Befehle die Koordinaten neu. |
Re: shellexecute auf zweitem bildschirm ausführen
Delphi-Quellcode:
Das sollte auf dem zweiten Monitor eine Form erzeugen, die den gesamten Monitor einnimmt.
procedure TForm1.FormCreate(Sender: TObject);
begin self.left := Screen.monitors[1].left; self.top := Screen.monitors[1].top; self.Height := Screen.monitors[1].Height; self.Width := Screen.monitors[1].Width; end; Zu deinem Shellexecute müsstest du den Monitorindex als Parameter übergeben und im FormCreate auswerten. |
Re: shellexecute auf zweitem bildschirm ausführen
Zitat:
was genau meinst du mit Monitorindex als Parameter übergeben und im FormCreate auswerten? |
Re: shellexecute auf zweitem bildschirm ausführen
Worum geht es hier denn nun?
Mit ShellExecute() startet man vorzugsweise fremde Programme, daher der Hinweis von Bernhard Geyer, einen Prozess zu starten. Die Hinweise mit FormCreate() kann ich (in diesem Zusammenhang) nicht so recht nachvollziehen. |
Re: shellexecute auf zweitem bildschirm ausführen
Delphi-Quellcode:
ShellExecute(nil,nil,PChar('c:\myProgram'),1,nil,SW_MAXIMIZE);
Delphi-Quellcode:
Mit dem vierten Parameter von Shellexecute kannst du zusätzliche Parameter an dein Programm mitgeben.
procedure TForm1.FormCreate(Sender: TObject);
var MonitorIndex: Integer; begin if ParamCount > 1 then begin MonitorIndex = StrToIntDef(Params(1), 0); self.left := Screen.monitors[MonitorIndex].left; self.top := Screen.monitors[MonitorIndex].top; self.Height := Screen.monitors[MonitorIndex].Height; self.Width := Screen.monitors[MonitorIndex].Width; end; end; Im obigen Beispiel 1 für Monitor 2. Im FormCreate von der MainForm guckst du, ob du einen Paramter zum Aufruf hattest und zeigst dann deine Form auf dem Monitor auf dem die Anzeige gewünscht ist. Edit: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 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