Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi objShell.Run + objExec.StdOut.ReadAll = Fehler (https://www.delphipraxis.net/117917-objshell-run-objexec-stdout-readall-%3D-fehler.html)

Piro 28. Jul 2008 01:03


objShell.Run + objExec.StdOut.ReadAll = Fehler
 
Delphi-Quellcode:
function InStr(Start: integer; Source: string; SourceToFind: string): integer;
begin
 Result := pos(SourceToFind,copy(Source,Start,Length(Source) - (Start - 1)));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 objShell  : Variant;
 objExec   : Variant;
 objStdOut : Variant;
 strResults : String;
begin
 objShell := CreateOleObject('WScript.Shell');
 objExec  := objShell.Run('ping -n 2 -w 1000 -i 255 '+Edit1.Text, SW_HIDE, True);

 strResults := objExec.StdOut.ReadAll; // Hier kommt der Fehler !!!

 if InStr(0,strResults,'reply from') > 0 then
   ShowMessage(Edit1.Text + ' online')
 else
   ShowMessage(Edit1.Text + ' offline');
end;

end.
Verwende ich "EXEC" um den Befehl abzusetzen, funktioniert alles wunderbar. Nur ich kann das Program nicht versteckt (ohne Dosfenster) ausführen.
Deshalb verwende ich "RUN" aber dann bekommen eine Fehlermeldung wenn ich das Resultat auslesen möchte.
Fehler Meldung:
Zitat:

...Ungültige Variantenoperation...
Wie muss ich "strResults := objExec.StdOut.ReadAll;" umschreiben, damit es funktioniert?

Vielen Dank im voraus.

Sven

Piro 30. Jul 2008 13:38

Re: objShell.Run + objExec.StdOut.ReadAll = Fehler
 
Habe die Antwort selbst gefunden. Geht nicht. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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