Entwickler-Ecke

Dateizugriff - Shell DOS-Befehl ohne Dosfenster


Biarchiv - Do 09.01.03 16:52
Titel: Shell DOS-Befehl ohne Dosfenster
Hallo,

Wie kann ich einen Dosbefehl im Hintergrund von Windows öffnen ohne das kurz
der Dosfeld geöffnet wird?

Brächte auch ein paar Parameter. 3 oder so...

Danke


Pierre - Sa 11.01.03 13:55

Hallo,
kannst Du die Frage anders stellen?
Grundsätzlich kann man nichtsichbare Dinge ohne Fenster machen.
Warum brauchst Du DOS, kann Delphi das nicht, was Du machen willst?
Gruß Pierre


tommie-lie - Sa 11.01.03 14:08

genau.
Erstens wäre es interessant zu erfahren, wie du bisher die Befehle afrufst und was es für Befehle sind. der "del"-Befehl macht zum Beispiel wenig Sinn, weil man das auch anders haben kann, ohne direktes DOS.


Anonymous - Sa 11.01.03 14:58
Titel: Re: Shell DOS-Befehl ohne Dosfenster
Biarchiv hat folgendes geschrieben:
Wie kann ich einen Dosbefehl im Hintergrund von Windows öffnen ohne das kurz der Dosfeld geöffnet wird?


siehe http://www.auq.de/viewtopic.php?t=5197&sid=3b066bc407d9233cb6f506958ea0014b

Statt SW_SHOW in den Beispielen nimmst Du SW_HIDE.

Gruß Tom


Anonymous - Sa 11.01.03 15:22

Pierre hat folgendes geschrieben:
Warum brauchst Du DOS, kann Delphi das nicht, was Du machen willst?


tommie-lie hat folgendes geschrieben:
genau.


Ich würde mal gerne für Biarchiv antworten. Ich weiß zwar nicht, ob er das meint (vielleicht will er wirklich nur "del" ausführen), aber es gibt viele interresante Dosprogramme. Nur als Beispiel: Lame. Eine legales und parametergesteuertes Freeware zum kodieren von mp3 Files. Man kann sich also seinen eigenen Konverter basteln und die Files mit diesem Dosprogramm bearbeiten. Wenn das auch noch im Hintergrund geht, dann um so besser.

Ok, bevor es ein anderer macht,mach ich es selbst. Lame gibt es auch als DLL. Deshalb braucht man die Dosversion nicht. Allerdings geht es darum, daß es andere nützliche Software gibt (die mir gerade nicht einfällt) die es nur als DOS Programm gibt.


Anonymous - Sa 11.01.03 15:27
Titel: Re: Shell DOS-Befehl ohne Dosfenster
Tom hat folgendes geschrieben:
siehe http://www.auq.de/viewtopic.php?t=5197&sid=3b066bc407d9233cb6f506958ea0014b


Kann es sein, daß du mit Windows NT oder ff arbeitest? Soweit ich weiß ist CMD die NT Version von dem 9x COMMAND (oder andersrum).

Deshalb sollte man vor ausführung deines Tip zuerst das BS überprüfen und entweder CMD oder COMMAND benutzen.


Anonymous - Sa 11.01.03 16:41
Titel: Re: Shell DOS-Befehl ohne Dosfenster
Popov hat folgendes geschrieben:
Deshalb sollte man vor ausführung deines Tip zuerst das BS überprüfen und entweder CMD oder COMMAND benutzen.

Einfach die Systemvariable COMSPEC auslesen. Wobei ich nicht weiß, ob die Command.com ähnliche Funktionalitäten hat. Diese Frage stellte sich zumindest in dem anderen Thread nicht. Falls Biarchiv ein 9x-System einsetzt und Probleme auftreten sehen wir weiter.

Gruß Tom


tommie-lie - Sa 11.01.03 17:06

@Popov:
Aus diesem Grund wollte ich ja mehr Infos. Zum Beipsiel, wie er das aufruft. Mit Shellexecute oder anders. Und auch was er aufruft, damit wir evtl ein Pascal/WinAPI-Äquivalent finden können.


Biarchiv - So 12.01.03 11:07

Hallo,

Es geht um den Dos-Befehl:
subst z: c:\test

Also nur rein virtuelles Laufwerk.

sw_hide funktioniert nicht.

Nur wenn ich im reinen Dos den Befehl ausführe dann erscheint
das Laufwerk.
Wenn ich in Delphi das mache und Ausführe passiert nichts.


Anonymous - So 12.01.03 12:11

Extrem wichtig: was für ein Betriebssystem hast du?

Bei solchen Fragen (Dos oder System) immer das Betriebssystem nennen.


tommie-lie - So 12.01.03 14:34

SW_HIDE funktioniert nicht?
Komische Sache.
Unter Widnows98SE geht folgendes ohne Probleme, das Laufwerk erscheint, auch im Explorer und kein DOS-Fenster weit und breit...

Quelltext
1:
2:
  ShellExecute(Handle, 'open', 'C:\windows\command\subst.exe', PChar('z: c:\windows'),
  nil, SW_HIDE);


Ach ja, ShellAPI muss eingebunden sein, dann klappt's auch mit dem ShellExecute. Ansonsten gibt's aber (zumindest bei mir) keine Nebenwirkungen. Auch das "unbind" mit /d funktioniert einfandfrei.