AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm extern ausführen

Ein Thema von Ari · begonnen am 7. Jan 2007 · letzter Beitrag vom 18. Jan 2007
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#1

Programm extern ausführen

  Alt 7. Jan 2007, 01:18
Hallo erstmal

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
Ariane
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#2

Re: Programm extern ausführen

  Alt 7. Jan 2007, 01:24
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.
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Programm extern ausführen

  Alt 7. Jan 2007, 01:35
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
Martin
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#4

Re: Programm extern ausführen

  Alt 7. Jan 2007, 01:48
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..)
Ariane
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#5

Re: Programm extern ausführen

  Alt 7. Jan 2007, 01:58
...mal andersrum gefragt: Was soll am Ende dabei rauskommen wenn "Delphi Befehle in Dein Programm eingegeben" hat?
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Programm extern ausführen

  Alt 7. Jan 2007, 01:58
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??
Martin
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#7

Re: Programm extern ausführen

  Alt 7. Jan 2007, 02:07
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..
Ariane
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#8

Re: Programm extern ausführen

  Alt 7. Jan 2007, 02:15
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!?
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#9

Re: Programm extern ausführen

  Alt 7. Jan 2007, 02:17
Ja genau. Ich möchte *nachzähl* 3 Befehle an scip.exe übergeben.
Ariane
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#10

Re: Programm extern ausführen

  Alt 7. Jan 2007, 02:37
Delphi-Quellcode:
sFileName := 'c:\path\bla.exe'
shellexecute(Handle, ExtractFileName(sFileName), 'model testy.mod', ÊxtractfilePtah(sFileName), SW_SHOW);
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 21:52 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