Delphi2015 hat folgendes geschrieben : |
Delphi-Quelltext 1:
| ShellExecute(Handle, 'open', PChar('cmd.exe'), PChar('/k ping'), PChar(Edit1.Text + ' -t -l'), nil, SW_SHOW); |
Habs mal so Versucht, kommt aber die Fehlermeldung:
[Error] Unit1.pas(29): Incompatible types: 'Integer' and 'Pointer' |
Siehst du, mit Quelltext lässt sich auch sagen was eigentlich dein Problem an der Stelle ist.
Hier findest du die Doku zu ShellExecute:
msdn.microsoft.com/e...53%28v=vs.85%29.aspx
Du siehst dort (in Delphi selbst ja auch) die Funktionsparameter.
Für die Kommandozeilenparameter gibt es dort einen einzigen Funktionsparameter. Du hast hier aber die Kommandozeilenparameter auf zwei verschiedene Funktionsparameter aufgeteilt. Damit übergibst du
PChar(Edit1.Text + ' -t -l') als Arbeitsverzeichnis und nil als Anzeigekommando (aber die Typen sind nicht kompatibel, nil ist ein Pointer, der Funktionsparameter aber ein Integer). Und danach ist ein Funktionsparameter zu viel.
Richtig sieht es so aus:
Delphi-Quelltext
1:
| ShellExecute(Handle, 'open', PChar('cmd.exe'), PChar('/k ping ' + Edit1.Text + ' -t -l'), nil, SW_SHOW); |
So packst du alle Kommandozeilenparameter für die cmd.exe in einen Funktionsparameter als PChar und übergibst alles in diesem einen Funktionsparameter.
ABER der Aufruf des ping Befehls ist noch falsch. -l gibt die Größe des Sendebuffers an, diese fehlt dahinter aber noch.
Narses hat folgendes geschrieben : |
Mal ne andere Frage: warum muss es denn unbedingt eine Konsole sein? Man kann von Delphi aus die ICMP-Echo-API auch direkt ansprechen.  |
Deinen entsprechenden Thread mit Unit + Demo hättest du ja ruhig auch gleich verlinken können:
www.entwickler-ecke....iewtopic.php?t=53259