Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi shellexecute mit pipes im command (https://www.delphipraxis.net/78582-shellexecute-mit-pipes-im-command.html)

r2c2 7. Okt 2006 10:09

Re: shellexecute mit pipes im command
 
Willst du jetzt n Konsolenprog schreiben oder eins starten?

ersteres geht ganz einfach: Deitei-->Neu-->Andere-->Konsolenanwendung (oder so ähnlich...)

letzteres: CreateProcess nehmen(Verwendung bitte selbst im PSDK nachgucken). Diese Funktion gibt IMHO n Handle zurück. Dieses Handle übergibtst du ner Funktion KillProcess. N Codeschnipsel dafür müsstest du leicht finden können...

mfg

Christian

marabu 7. Okt 2006 10:19

Re: shellexecute mit pipes im command
 
Hallo Enrico,

Zitat:

Zitat von gigo02
die batch beendet sich nicht wenn ich das programm schliesse

der Befehlsstapel muss mit EXIT verlassen werden...

Grüße vom marabu

Christian Seehase 7. Okt 2006 12:36

Re: shellexecute mit pipes im command
 
Moin Enrico,

dem Problem mit der limitierten Länge von Stringliteralen kannst Du auch durch + begegnen:

'max. 255 Zeichen' + 'max. 255 Zeichen' + ...

gigo02 7. Okt 2006 13:04

Re: shellexecute mit pipes im command
 
hi, so also ich habe das jetzt folgendes

Delphi-Quellcode:
var
  Form2: TForm2;
  ProcessInfo: TProcessInformation;
  StartupInfo: TStartupInfo;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  FillChar(StartupInfo, SizeOf(TStartupInfo),0);
  StartupInfo.cb := SizeOf(TStartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_HIDE;
  if CreateProcess( nil,
                    PChar(Edit1.Text),
                    nil,
                    nil,
                    False,
                    NORMAL_PRIORITY_CLASS,
                    nil,
                    PChar('C:\'),
                    StartupInfo,
                    ProcessInfo) then begin
                    Showmessage('Prossess gestartet');
                    End else ShowMessage('Fehler');
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
CloseHandle(ProcessInfo.hProcess);
end;
nur das beenden klappt nicht wirklich, der prozess läuft weiter :(

r2c2 7. Okt 2006 13:25

Re: shellexecute mit pipes im command
 
Nimm nicht CloseHandle, sondern MSDN-Library durchsuchenTerminateProcess.

Is nur schnell rausgesucht. Nicht weiter mit beschäftigt... Hab das aber auch noch nie gemacht...

Korrigiert mich also, wenn ich Blödsinn geredet hab...

mfg

Christian

Christian Seehase 7. Okt 2006 14:11

Re: shellexecute mit pipes im command
 
Moin Enrico,

Du musst dabei allerdings berücksichtigen, dass Du mit TerminateProcess den Prozess nicht sauber beendest, sondern abschiesst.

r2c2 7. Okt 2006 14:15

Re: shellexecute mit pipes im command
 
Zitat:

Zitat von Christian Seehase
Du musst dabei allerdings berücksichtigen, dass Du mit TerminateProcess den Prozess nicht sauber beendest, sondern abschiesst.

Kann man ne laufende Batch eigentlich sauber beenden?

mfg

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr.
Seite 2 von 2     12   

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