Announcement

Collapse
No announcement yet.

Wie kann ich den Befehl 'command.com /c dir c:\ >> result.txt' VERSTECKT (!!!) ausführen?

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

  • Wie kann ich den Befehl 'command.com /c dir c:\ >> result.txt' VERSTECKT (!!!) ausführen?

    Ich möchte folgenden Befehl versteckt, also auch nicht nur minimiert starten:

    c:\windows\command.com /c dir C:\ >> result.txt

    Alternativ zum Erstellen der result.txt wäre es sogar besser wenn ich die Outputs direkt abfangen könnte.
    Danke schonmal im voraus!!!
    tobi

  • #2
    Hallo Tobias,<p>
    wäre es in Deinem speziellen Falle nicht einfacher, das Directory direkt mit Delphi und den FindFirst und FeindNext Befehlen einzulesen?<p>
    Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Danke fürdie Idee, aber ich möchte auch andere Befehle so ausführen. Deshalb wär ich für nen anderen Vorschlag dankbar

      Comment


      • #4
        Hallo Tobias,

        rufe dir mal die Hilfe zur Fkt. ShellExceute() auf der letzte Parameter legt fest ob das auszuführende Programm
        angezeigt wird (sw_hide) setzen

        Gruß Andr

        Comment


        • #5
          Hallo,

          mit dem folgenden Beispiel kann ich unter Windows NT den Output des Aufrufs <b>netstat</b> in die TMemo-Instanz meiner eigenen Anwendung umleiten. Allerdings verwende ich dazu eine temp. Datei, die als Ziel für die StdOut (Standard-Ausgabe) definiert wird. Beim Aufruf ist kein weiteres Fenster sichtbar:
          <pre>
          procedure TForm1.Button1Click(Sender: TObject);
          var
          aSA : TSecurityAttributes;
          aSI : TStartupInfo;
          aPI : TProcessInformation;
          szTemp : array[0..199] of Char;
          FName : String;
          hLogFile : THandle;
          dwExit : DWORD;
          begin
          FillChar(aSA, SizeOf(aSA), #0);
          aSA.nLength := SizeOf(aSA);
          aSA.bInheritHandle := True;
          // temp. Dateinamen für Output generieren
          FillChar(szTemp, SizeOf(szTemp), #0);
          GetEnvironmentVariable(PCHar('TEMP'), szTemp, 180);
          FName := szTemp + '\netstat.txt';
          // Output-Datei öffnen
          hLogFile := CreateFile(PCHar(FName), GENERIC_WRITE or GENERIC_READ,
          FILE_SHARE_READ or FILE_SHARE_WRITE,
          @aSA, CREATE_ALWAYS, 0, 0);
          // Standard-Output in Datei umleiten
          GetStartupInfo(aSI);
          aSI.dwflags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
          aSI.wShowWindow := SW_Hide;
          aSI.hStdOutput := hLogFile;
          aSI.hStdError := hLogFile;
          if CreateProcess(nil,PChar('netstat'), nil, nil, True,
          NORMAL_PRIORITY_CLASS,
          nil, nil, aSI, aPI) then
          begin
          repeat
          Application.ProcessMessages;
          GetExitCodeProcess(aPI.hProcess, dwExit)
          until dwExit <> STILL_ACTIVE;
          CloseHandle(aPI.hThread);
          CloseHandle(aPI.hProcess);
          CloseHandle(hLogFile);
          end
          else
          Abort;

          Memo1.Lines.LoadFromFile(FName);
          DeleteFile(FName);
          end;
          </pre&gt

          Comment


          • #6
            hallo zusammen,

            wie kann man denn den Aufruf realisieren, ohne eine Temp datei anlegen zu müssen? Ich würde auch gerne den output direkt abfangen wollen, z.B. in einer Variablen...Danke schonmal im voraus!!!

            Wag

            Comment

            Working...
            X