AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kann externer Prozess nicht korrekt starten.
Thema durchsuchen
Ansicht
Themen-Optionen

Kann externer Prozess nicht korrekt starten.

Ein Thema von Jelly · begonnen am 8. Feb 2004 · letzter Beitrag vom 8. Feb 2004
 
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Kann externer Prozess nicht korrekt starten.

  Alt 8. Feb 2004, 18:37
Hallo,
ich hab irgendwo den unten stehenden Code her, weiss leider nicht mehr von wo, um externe Prozesse zu starten. Das Ganze klappt auch soweit ganz wunderbar. Jedoch habe ich versucht mittels mysql.exe eine Datenbank aus einem Dump zu erstellen.

Filename=c:\mysql\bin\mysql.exe -uroot -hlocalhost -pBLABLA meinedb < dump.sql

Gebe ich diesen Befehl direkt in einer Konsole ein, klappt das auch wunderbar. Über die RunProcess Methode jedoch nicht? RunProcess klappt, wie gesagt in allen anderen Fällen, die ich ausprobiert habe. Ich habe den Verdacht, es liegt an dem Zeichen < im Befehl... Kann das sein, oder hat jemand ne Erklärung für das Phänomen.

Noch ne Bemerkung: ein neuer Prozess WIRD gestartet, jedoch wird der Befehl eben nicht korrekt ausgeführt.

Gruß,
Tom


Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;
  Mit Zitat antworten Zitat
 


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 22:38 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