AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DOS-Anwendung aus Delphi startet, beendet sich aber sofort
Thema durchsuchen
Ansicht
Themen-Optionen

DOS-Anwendung aus Delphi startet, beendet sich aber sofort

Ein Thema von delphiNoob · begonnen am 25. Jan 2006 · letzter Beitrag vom 26. Jan 2006
Antwort Antwort
delphiNoob

Registriert seit: 9. Apr 2004
Ort: Niedermohr
25 Beiträge
 
#1

DOS-Anwendung aus Delphi startet, beendet sich aber sofort

  Alt 25. Jan 2006, 19:48
Hallo

Ich wollte eine DOS-Anwendung, die mit TP geschrieben ist aus einer Delphi-Anwendung aufrufen. Die Anwendung wird zwar aufgerufen, jedoch beendet sich das DOS-Programm sofort wieder.

Hier die Code-Zeilen, die die Anwendung ausführen:

Delphi-Quellcode:
procedure ExecuteProgramm(const PFileName: string);
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
  ExecuteFile: string;
begin
  ExecuteFile := '"' + PFileName + '"';
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);

  with SEInfo do
  begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    nShow := SW_SHOWNORMAL;
  end;

  if ShellExecuteEx(@SEInfo) then
  begin
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or
      Application.Terminated;
  end else
  begin
    Application.MessageBox('Fehler beim Starten des Programms',
      'Hinweis', MB_OK + MB_ICONERROR);
  end;
end;
die procedure hab ich hier in der code-library gefunden.

Nun meine Frage: woran kann es liegen, dass die Anwendung sofort wieder beendet wird? liegts an der Art, wie sie aufgerufen wird oder an der Anwendung selbst?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 19:54
Zitat:
oder an der Anwendung selbst?
Ich kann an dieser Stelle nur tippen, dass das die Ursache ist. Versuche mal diene TP Anwendung in Eigabeaufforderung auszuführen.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
delphiNoob

Registriert seit: 9. Apr 2004
Ort: Niedermohr
25 Beiträge
 
#3

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 20:20
hallo

die Anwendung (die DOS) läuft normalerweise reibungslos, falls du das meinst mit "in Eigabeaufforderung" um zu überprüfen ob sie überhaupt funktioniert.

andernfalls klär mich bitte darüber auf, was du gemeint hast.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 20:37
Schließt sie sich auch sofort wieder, wenn du sie über den Explorere mit einem Doppelklick ausführst? Das ist das entscheidende. Ansinsten musst du dem Kommandozeileninterpreter mit der Anwendung als Parameter aufrufen und dem Schalter /k.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
delphiNoob

Registriert seit: 9. Apr 2004
Ort: Niedermohr
25 Beiträge
 
#5

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 20:51
über den explorer lässt sich einwandfrei mit der Anwendung arbeiten, also schliesst sie sich nicht.


Zitat von Luckie:
Ansinsten musst du dem Kommandozeileninterpreter mit der Anwendung als Parameter aufrufen und dem Schalter /k.
wie mach ich das? Ich hab hier schon das ganze Forum vorwärts und rückwärts durchsucht und nix passendes gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 21:04
Such dir was aus: Hier im Forum suchenShellexecute, Hier im Forum suchenCreateProcess, Hier im Forum suchenShellexecuteEx, ... Und dazu findest du bestimmt was im Forum.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mindforce
(Gast)

n/a Beiträge
 
#7

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 21:05
Momentmal bin ich blöd Ich glaube es liegt daran, das du einfach  Application.Terminate zu früh einsetzt. Kann sein, weil es noch niemand geschrieben hat das es nicht daran liegt. benutze es mal später. Weil sonst kann er dir garnicht den Befehl else zeigen, falls er gebraucht wird. Wenn dann benutze irgendwann anders mal close; .

Ich hoffe ich konnte dir helfen. (Bestimmt nicht)

Gruss,

Mindforce
  Mit Zitat antworten Zitat
delphiNoob

Registriert seit: 9. Apr 2004
Ort: Niedermohr
25 Beiträge
 
#8

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 21:28
@Luckie: In der Tat, die hab ich gefunden, nur ich konnte nicht wirklich was damit anfangen...

Ich brauche einfach einen Code, der mir meine DOS-Anwendung ausführt, so dass ich mit ihr arbeiten kann.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 25. Jan 2006, 21:33
Das sollte Dir helfen, mir hat es jedenfalls einmal geholfen ist von
http://www.pics-software.de/delphi/index.html

Grüße
Klaus

Delphi-Quellcode:

uses
  WinTypes, WinProcs, SysUtils;

{ WindowState is one of the SW_xxx constants. 
  Look up ShowWindow in the API help for a list.}

function ExecAndWait(const Filename, Params: string;
                     WindowState: word): boolean;
{$IFDEF WIN32}
var
  SUInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
begin
  { Enclose filename in quotes to take care of
    long filenames with spaces. }

  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(SUInfo, SizeOf(SUInfo), #0);
  with SUInfo do begin
    cb := SizeOf(SUInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WindowState;
  end;
  Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
                          CREATE_NEW_CONSOLE or
                          NORMAL_PRIORITY_CLASS, NIL,
                          PChar(ExtractFilePath(Filename)),
                          SUInfo, ProcInfo);
  { Wait for it to finish. }
  if Result then
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);

{$ELSE}
var
  InstanceID : THandle;
  Buff: array[0..255] of char;
begin
  StrPCopy(Buff, Filename + ' ' + Params);
  InstanceID := WinExec(Buff, WindowState);
  if InstanceID < 32 then
  { a value less than 32 indicates an Exec error }
    Result := FALSE
  else begin
    Result := TRUE;
    repeat
      Application.ProcessMessages;
    until Application.Terminated or
          (GetModuleUsage(InstanceID) = 0);
  end;
{$ENDIF}
end;
Klaus
  Mit Zitat antworten Zitat
delphiNoob

Registriert seit: 9. Apr 2004
Ort: Niedermohr
25 Beiträge
 
#10

Re: DOS-Anwendung aus Delphi startet, beendet sich aber sofo

  Alt 26. Jan 2006, 15:01
jo, vielen dank! jetzt gehts.

Kleiner Tipp noch von mir: als Parameter WidowState 1 eingeben, dann sieht man das Fenster.
  Mit Zitat antworten Zitat
Antwort Antwort


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:46 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