Announcement

Collapse
No announcement yet.

DOS-Befehl ausführen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DOS-Befehl ausführen

    Hi,

    ich würde gerne um großen Datenmengen mit XCOPY zu kopieren einen DOS-Befehl aus Delphi ansetzen, finde aber in all meinen Büchern keine Lösung.

    Peter Borgfeld

  • #2
    Hallo Peter,<br><br>
    das funktioniert einfach über einen Aufruf von ShellExecute().<br>
    Als Befehl kannst Du unter WinNT/2000 die cmd.exe verwenden oder<br>
    auch die command.com (Win85/98/ME). Dann stehen Dir noch 2<br>
    Parameter zur Verfügung:<br><br>
    __/c = DOS-Fenster nach Beenden des Befehls schliessen<br>
    __/k = DOS-Fenster nach Beenden des Befehls offen lassen<br><br>
    Der Befehl sieht dann etwa folgendermassen aus:<br><br>
    __'cmd /c xcopy /e /s ...'<br><br>
    Falls das DOS-Fenster gänzlich von der Oberfläche verschwinden<br>
    soll, muss mit der API CreateProcess() gearbeitet werden:<br><br>
    var<br>
    __StartupInfo: TStartupInfo;<br>
    __ProcessInfo: TProcessInformation;<br>
    begin<br>
    __FillChar(StartupInfo,SizeOf(StartupInfo),0);<br>
    __StartupInfo.dwFlags:= STARTF_USESHOWWINDOW;<br>
    __StartupInfo.wShowWindow:= SW_HIDE;<br>
    __if CreateProcess(nil,<br>
    ___________________PChar(Cmd),<br>
    ___________________nil,<br>
    ___________________nil,<br>
    ___________________False,<br>
    ___________________NORMAL_PRIORITY_CLASS,<br>
    ___________________nil,<br>
    ___________________nil,<br>
    ___________________StartupInfo,<br>
    ___________________ProcessInfo) then begin<br>
    ____// WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // oder bis zum St. Nimmerleinstag<br>
    ____WaitForSingleObject(ProcessInfo.hProcess, 300000); // je nach Geschmack<br>
    ____CloseHandle(ProcessInfo.hProcess);<br>
    ...
    <br><br>
    MfG<br><br>
    Stefan Schreie

    Comment

    Working...
    X