Entwickler-Ecke
Sonstiges (Delphi) - Systembefehle mit Delphi ausführen
cadillecourt - Mo 30.05.05 10:49
Titel: Systembefehle mit Delphi ausführen
Hi,
gibt es irgend eine Möglichkeit mit Delphi Befehle auszuführen, die normalerweise der MS-DOS-Eingabeaufforderung überlassen sind. Zum Beispiel:
Ich habe nämlich vor so eine Art Dateimanager zu programmieren. Ich wäre sehr dankbar für schnelle Hilfe.
Mfg
CadilleCourt
Moderiert von
Christian S.: Topic aus VCL (Visual Component Library) verschoben am Mo 30.05.2005 um 10:49
Heiko - Mo 30.05.05 10:54
Nimm doch leiber die Windows-API. Da hast du evtl. mehr Möglichkeiten um einen Dateienmanager zu proggen.
Wegen der Eingabe Aufforderung. Versuche doch das was du machen willst als Parameter in die Eingabeaufforderung zu übergeben. Es gibt aber bestimmt bessere Varianten (kann sie dir allerdings nicht auf Anhieb sagen).
manfred07 - Mo 30.05.05 11:41
Hi cadillecourt,
versuche es mal so.......
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var Pro: String;
begin Pro:='copy C:\*.* D:\'; WinExec(PChar(Pro), SW_RESTORE); |
Gruß Manfred
Moderiert von
Tino: Delphi-Tags hinzugefügt.
alzaimar - Mo 30.05.05 12:54
OH, das wird nix, weil "copy" kein Programm, sondern ein Befehl des CMD.EXE ist.
Wenn Du Kommandos von CMD.EXE ausführen willst, dann musst Du CMD.EXE starten. Gottseidank kann man CMD auch mit ein paar Parametern starten. gib mal "CMD /?" in der Eingabeaufforderung ein.
Es sollte dann so gehen ('CMD.EXE /C copy c:\*.* D:\')
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var Pro: String;
begin Pro:='CMD.EXE /C copy c:\*.* D:\'; WinExec(PChar(Pro), SW_HIDE); |
Allerdings solltest Du vielleicht doch mit FindFirst / FindNext / FindClose einen eigenen rekursiven Kopierer schreiben. Dem kannst du dann noch eine vernünftige GUI mit Fortschrittsbalken, Anzahl der dateien etc. verpassen.
deccer - Mo 30.05.05 13:32
hehe
WinExec() ist "alt" und sollte nicht mehr verwendet werden.
Stattdessen "ShellExecute" aus der Unit ShellApi.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| uses ShellApi;
begin ShellExecute(0, 'open', PChar(sPath + 'programm.exe'), nil, nil, SW_SHOWNORMAL); end; |
die beiden "nil" parameter sind einmal
- parameterliste
- verzeichnis in dem das programm ausgeführt werden soll
also dementsprechend setzen wenn mans braucht (und nicht vergessen nen PChar() drumrum zubaun wenn man string variablen und 'blah' mischt)
mitnem strg+linksklick auf SW_SHOWNORMAL kommst in die Windows.pas zu den konstanten die da noch möglich sind, falls du nen anderen "showmodus" haben möchtest
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
alzaimar - Mo 30.05.05 13:54
@deccer: Na gut, dann eben so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| uses ShellApi;
begin ShellExecute(0, 'open', PChar('CMD.EXE'), PChar('/C Copy c:\*.* d:\'), nil, SW_HIDE); end; |
Is aber egal, weil's um den 'Trick' mit CMD.EXE ging.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!