AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Delphi Programm, im hintegrund cmd-befehle
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Programm, im hintegrund cmd-befehle

Ein Thema von Eppos · begonnen am 7. Dez 2007 · letzter Beitrag vom 23. Jan 2008
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#31

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 7. Dez 2007, 19:25
Zitat von DeddyH:
Wenn der Rückgabewert von ShellExecute > 32 ist, hat die Ausführung an sich funktioniert, sofern ich die Hilfe richtig lesen kann.
ja das ausführen der cmd hat ja funktioniert... was ihr wollt ist die ausgabe der cmd, nicht die ausgabe von shellexecute
du musst halt die ausgabe der cmd zu deinem programm umlenken, dann kannst du nachschauen ob das funktioniert hat.

edit:

schau dir mal das hier an:
Delphi-Quellcode:
procedure CaptureDos(command: String; Stringsp: TStrings);
const
  CaptureBufferSize = 2500;
var
  SecAttrib : TSecurityAttributes;
  ReadPipe,writePipe : THandle;
  Startup : TStartUpInfo;
  ProcessInfo : TProcessInformation;
  CaptureBuffer : Pchar;
  BytesRead : DWord;
  WaitHandle : DWord;
begin
  Stringsp.clear;
  With SecAttrib do
    begin
      nlength := SizeOf(TSecurityAttributes);
      binherithandle := true;
      lpsecuritydescriptor := nil;
    end;
  if Createpipe (ReadPipe, writePipe, @SecAttrib, 0) then
    begin
      CaptureBuffer := AllocMem(CaptureBufferSize + 1);
      FillChar(Startup,Sizeof(Startup),#0);
      Startup.cb := SizeOf(Startup);
      Startup.hStdOutput := writePipe;
      Startup.hStdInput := ReadPipe;
      Startup.dwFlags := STARTF_USESTDHANDLES +
                             STARTF_USESHOWWINDOW;
      Startup.wShowWindow := SW_HIDE;

      if CreateProcess(nil, PChar(command), @SecAttrib, @SecAttrib, true,
                       NORMAL_PRIORITY_CLASS, nil, nil, Startup, ProcessInfo) then
        begin
          repeat
            WaitHandle := WaitForSingleObject( ProcessInfo.hProcess,100);
            Application.ProcessMessages;
          until (WaitHandle <> WAIT_TIMEOUT) or application.terminated;
          if not application.terminated then
            Repeat
              BytesRead := 0;
              ReadFile(ReadPipe,CaptureBuffer[0],CaptureBufferSize,BytesRead,nil);
              CaptureBuffer[BytesRead]:= #0;
              OemToAnsi(CaptureBuffer,CaptureBuffer);
              Stringsp.Text := Stringsp.Text+String(CaptureBuffer);
            until (BytesRead < CaptureBufferSize);
        end else Stringsp.add('Fehler!');
      FreeMem(CaptureBuffer);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(ReadPipe);
      CloseHandle(writePipe);
    end else Stringsp.add('Konnte Dos Kommando nicht starten, Fehler: #'
                          +inttostr(getlasterror));
end;
ist aber glaub ich auch mit sichtbarem fenster
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#32

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 7. Dez 2007, 19:27
Damit bist Du nun aber ein paar Posts zu spät
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#33

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 7. Dez 2007, 20:19
Zitat von DeddyH:
Damit bist Du nun aber ein paar Posts zu spät
wollt nur mal anmerken

Zitat von dominikkv:
ist aber glaub ich auch mit sichtbarem fenster
haha pustekuchen... das ist genau das was du suchst
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#34

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 10. Dez 2007, 11:59
coole Procedure, aber ich bekomme einen Fehler wenn ich das ausführen möchte:

Delphi-Quellcode:
  CaptureDos('/C del C:\test.exe', Memo1.Lines );

// das funktioniert auch nicht...

  CaptureDos('del C:\test.exe', Memo1.Lines );
  

// er schreibt in beiden fällen, in die Memo, "Fehler!"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#35

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 10. Dez 2007, 12:01
Memo.Lines ist auch eine Property, welche du nicht als Var-Parameter übergeben kannst.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#36

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 10. Dez 2007, 12:10
Ich frage mich nur die ganze Zeit, wieso er nicht einfach DeleteFile bemüht, anstatt mit DOS-Befehlen herumzuhantieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#37

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 10. Dez 2007, 12:11
warum schreibt er es dann in die Memo rein?

@DeddyH
weil ich auch noch andere befehle absätzen möchte...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#38

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 10. Dez 2007, 12:12
Zitat von Eppos:
@DeddyH
weil ich auch noch andere befehle absätzen möchte...
Und auch für die wird es wahrscheinlich entsprechende Methoden geben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#39

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 10. Dez 2007, 12:39
ja das glaube ich alles,

aber bei 100 verschiedenen befehlen, aht man warscheinlich 500 Zeilen Quellcode!
  Mit Zitat antworten Zitat
aegidos

Registriert seit: 30. Okt 2007
40 Beiträge
 
Delphi 2007 Professional
 
#40

Re: Delphi Programm, im hintegrund cmd-befehle

  Alt 21. Jan 2008, 11:41
Hallo,
Ich habe ein Problem mit CreateProcess.
Mein Programm ließt eine Batch-Datei aus und startet dann jede Commandozeile in einem eigenen Prozess.
Die Befehle in der Batch:
Delphi-Quellcode:
rm %umg_variab%\protocol.xml
%umg_variab%\altovaXSLT2.exe -xml %umg_variab%\protocol.log -xsl %umg_variab%\protocol.xslt -out %umg_variab%\protocol.xml
Auf meinem EntwicklungsPC wird meine protocol.xml auch gelöscht und eine neue Protocol.xml aus dem Logfile erstellt. Wenn ich meine Anwendung auf einem anderen PC laufen lasse bekomme ich eine Fehlermeldung bei dem CreateProcess und zwar: eine Dialogbox :"Systemfehler. Code: 5. Zugriff verweigert ".

Was ich ausschließen kann:
-Umgebungsvariable nicht gesetzt
-Keine OpenUserrechte auf Festplatte
-Datei nicht vorhanden

Muss ich irgendwas auf dem PC installieren? Das Framework 1.1 ist auf dem Ziel PC Installiert und sonst auch die gleiche Software nur die Delphi 7 IDE fehlt, also kann ich nicht debuggen.

Delphi-Quellcode:
if not CreateProcess(
    nil,
    //PChar(CommandLine),
    PChar(strDummy),
    nil,
    nil,
    True,
    ProPri, // and CREATE_NEW_CONSOLE,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
//in strdummy steht genau eine Zeile aus der oben genannten Batch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 06:28 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