Entwickler-Ecke
Windows API - Shell Execute und Parameter
Guenni_d - Sa 31.01.04 18:03
Titel: Shell Execute und Parameter
Hallo zusammen,
hab da ein Problemchen beim ausführen von nem Windows System Tool, und zwar NETSH.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| SEInfo: TShellExecuteInfo; ExitCode: DWORD; ExecuteFile, ParamString, StartInString: string; begin ExecuteFile:='c:\Windows\Calc.exe'; FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile); lpParameters := PChar('-c interface ip dump >C.\lan.txt'); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or Application.Terminated; ShowMessage('NETSHterminated'); end else ShowMessage('Error starting NETSH'); end; |
Der Code funktioniert so weit, nur die Umleitung der Ausgabe will net fuinktionieren.
Das heisst, wenn ich die Kommandozeile manuell in ner Dos box aufrufe, dann geht es, aber nicht aus Delphi heraus. Da wird netsh aufgerufen mit den parametern, aber die Ausgabe erfolgt einfach nur auf dem Bildschirm.
Jemand ne Idee?
Gruss Günter
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
Moderiert von
DeCodeGuru: Topic verschoben
Delete - Sa 31.01.04 18:20
C.\lan.txt
Richtig tippen musst du schon.
MSCH - Sa 31.01.04 18:22
wenn schon, denn schon, NetSH und nicht Calc. Wäre mir neu wenn der Taschenrechner NetSH versteht :-)
grez
msch
Delete - Sa 31.01.04 18:25
Noch nie von Multifunktionstools gehört? :mrgreen:
MSCH - Sa 31.01.04 18:30
haben wollen. :dance2:
msch
Guenni_d - So 01.02.04 01:43
Titel: ooops
soo spät wars doch gar net...grins.
Also erst mal sorry...aber hab mit dem Calc nebenbei rumgespielt , nach dem netsh den kompletten parameterteil net richtig kapiert. Und beim posten den Quellcode nicht getestet, sonst hätt ich es auch bemerkt. dummdidumm...
aber das Problem bleibt bestehen..
deshalb hier noch mal der Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| var lantxt: textfile; line: string;
SEInfo: TShellExecuteInfo; ExitCode: DWORD; ExecuteFile, ParamString, StartInString: string; begin ExecuteFile:='NETSH';
FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle; lpFile := PChar(ExecuteFile);
Paramstring:='-c interface dump >c:\lan.txt'; lpParameters := PChar(ParamString);
nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or Application.Terminated; ShowMessage('NETSH terminated'); end else ShowMessage('Error starting NETSH!'); |
Sooo.. nun dürfts besser sein, grins. Aber vielleicht nun jemand ne Idee was ich falsch mache?
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
Delete - So 01.02.04 11:01
Starte anstelle des Programms mal den Kommandozeilenprozessor "cmd.exe":
Delphi-Quelltext
1: 2: 3:
| SEInfo.lpFile := 'cmd.exe'; SEInfo.lpParameters := '/c netsh.exe -c interface dump > c:\lan.txt'; SEInfo.nShow := SW_HIDE; |
Dann klappt´s auch. Der Parameter "/c" am Anfang gehört zu "cmd.exe" und sorgt dafür, dass der Befehl ausgeführt und CMD dann beendet wird. Ansonsten einfach mal
eintippen.
Christian S. - So 01.02.04 12:01
Hallo, Guenni_d!
Bitte benutze demnächst die Delphi-Tags. Durch die Delphi-Tags wird der Code mit Syntax-Highlighting angezeigt und ist somit sehr viel übersichtlicher.
Viele Dank!
Peter
Guenni_d - So 01.02.04 13:06
Titel: Viiiiieeellllennn Dank
danke für die schnelle Hilfe...naja die Lösung hatte ja nix mit Delphi zu tun...aber perfekt wenn man hier trotzdem Hilfe findet...
Und werd in Zukunft hoffentlich besser und richtiger Posten.
Grüssle Günter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!