Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm extern ausführen (https://www.delphipraxis.net/83839-programm-extern-ausfuehren.html)

Ari 7. Jan 2007 01:18


Programm extern ausführen
 
Hallo erstmal :hi:

ich hoff ich bin in der richtigen Kategorie gelandet..

Ich möchte gern mit Delphi ein Programm ausführen und die Befehle angeben, nach stundenlangem Ggoglen hab ich herausgefunden, dass ShellExecute, WinExecute und TProcess geeignet wären, wobei glaube ich nur letztere Funktion auch Befehle ausführt - oder?

Dabei hab ich jetzt folgendes Problem: Muss ja eingeben
uses SysUtils, Classes, Process;

Dann spuckt Delphi mir aus "File not found: 'Process.dcu'" - ich verzweifelt nach dieser Datei gesucht aber ich find die nicht...

Wo bekomm ich die denn jetzt her?

Sorry, kenne mich kaum mit Delphi aus und probiere jetzt schon ziemlich lange, das zum Laufen zu kriegen. Wäre nett, wenn mir jemand hilft!

Liebe Grüße,
Ariane

Harry M. 7. Jan 2007 01:24

Re: Programm extern ausführen
 
Hallo und willkomen in der Dp!

Möglichkeiten zum starten von Programmen gibt es viele. ShellExecute, WinExec oder CreateProcess und sicher noch einige mehr. Aber für Dich sich die beiden ersten interessant. bei Shellexecute musst Du die ShellApi einbinden, bei Winexec, Windows oder SysUtils. Bin mit jetzt nicht sicher.

lbccaleb 7. Jan 2007 01:35

Re: Programm extern ausführen
 
Delphi-Quellcode:
function WinExecAndWait_32(FileName: string; Visibility: Integer; bWait: Boolean = False): Longword;
var { by Pat Ritchey }
  zAppName: array[0..512] of Char;
  zCurDir: array[0..255] of Char;
  WorkDir: string;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  StrPCopy(zAppName, FileName);
  GetDir(0, WorkDir);
  StrPCopy(zCurDir, WorkDir);
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := Visibility;
  if not CreateProcess(nil,
    zAppName, // pointer to command line string
    nil, // pointer to process security attributes
    nil, // pointer to thread security attributes
    False, // handle inheritance flag
    CREATE_NEW_CONSOLE or // creation flags
    NORMAL_PRIORITY_CLASS,
    nil, //pointer to new environment block
    nil, // pointer to current directory name
    StartupInfo, // pointer to STARTUPINFO
    ProcessInfo) // pointer to PROCESS_INF
    then Result := WAIT_FAILED
  else
  begin
    if bWait then
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
  end;
end; { WinExecAndWait32 }

das ist die funktion die ich immer verwende, und die ist auch kompatibel mit späteren windows versionen!!!
um sie zu verwenden musst du unter uses windows einbinden

aufrufen kannst du die function so:

WinExecAndWait_32('c:\sin.exe +set game 2015', 1, False);

wäre eine version mit parameter


WinExecAndWait_32('c:\sin.exe', 1, False);

und diese wäre ohne parameter!!



die 1 steht für die sichtbarkeit des gestarten programms
und true/false steht bei der function für das warten auf das gestartete programm

Ari 7. Jan 2007 01:48

Re: Programm extern ausführen
 
Erstmal danke für die Hilfe!!

Kann mit beiden Varianten das gewünschte Programm starten - aber wie lasse ich Delphi die Befehle in das Programm eingeben? Möchte, dass das Programm, sobald es gestartet wurde, immer das Selbe tut - also auch immer die selben Befehle bekommt.

edit: Mir ist auch nicht so klar, was der Parameter auslöst..
edit2: ach doch, zumindest hab ich herausgefunden, dass der Parameter sich auf die Konfigurationen bezieht (wie lbccaleb ja auch mit "set" geschrieben hat, sorry..)

Harry M. 7. Jan 2007 01:58

Re: Programm extern ausführen
 
...mal andersrum gefragt: Was soll am Ende dabei rauskommen wenn "Delphi Befehle in Dein Programm eingegeben" hat?

lbccaleb 7. Jan 2007 01:58

Re: Programm extern ausführen
 
also den bsp mit dem parameter hab ich nur mal mit gepostet damit auch klar wird wie ein programm mit parametern über diese function gestartet wird, das brauchst du bei dir nicht mit eingeben wenn du keine parameter hast, desweiteren musst du natürlich die sin.exe durch dein programm austauschen, wie meinst du das mit von delphi eingeben lassen und es soll immer das selbe tun??

Ari 7. Jan 2007 02:07

Re: Programm extern ausführen
 
Ok, konkretes Beispiel:

Programm: ampl.exe
Befehle, die ich eingeben möchte: model test.mod;
(noch weitere Befehle)
quit;

Es wäre doch bestimmt möglich, dass Delphi diese Befehle direkt an das Programm weiter gibt, oder?

Am Ende soll Folgendes herauskommen:
Beispiel: Ich möchte ein Problem mit einem Programm (SCIP) lösen. Die Informationen dazu lese ich aus Edit-Fenstern ein und speichere sie in einer externen Datei (das hab ich schon irgendwie hinbekommen, funktioniert soweit).

Dann möchte ich das Lösungsprogramm starten. Dem Programm sollen die Befehle zum Lösen des Problems gegeben werden (das Programm nutzt, um die Lösung zu ermitteln, die externe Datei).

Am Ende spuckt mir das Programm eine Lösung aus, die ich dann (aber erst später, erstmal sollte ich das Ausführen hinbekommen xD) wieder *äh* "einlesen" möchte, sodass sie in den Labels meines Programms erscheinen..

Harry M. 7. Jan 2007 02:15

Re: Programm extern ausführen
 
Also Du hat (D)eine Anwendung wo du Infos in Edits hast. Jetzt soll beim Speichern gleich ein anderes programm gestarted werden, (SCIP.exe) wobei "model test.mod" an SCIP.exe übergeben wird. Richtig!?

Ari 7. Jan 2007 02:17

Re: Programm extern ausführen
 
Ja genau. Ich möchte *nachzähl* 3 Befehle an scip.exe übergeben.

Harry M. 7. Jan 2007 02:37

Re: Programm extern ausführen
 
Delphi-Quellcode:
sFileName := 'c:\path\bla.exe'
shellexecute(Handle, ExtractFileName(sFileName), 'model testy.mod', ÊxtractfilePtah(sFileName), SW_SHOW);


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Seite 1 von 4  1 23     Letzte »    

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