Autor Beitrag
Guenni_d
Hält's aus hier
Beiträge: 8


D6 Pers
BeitragVerfasst: Sa 31.01.04 18:03 
Hallo zusammen,
hab da ein Problemchen beim ausführen von nem Windows System Tool, und zwar NETSH.

ausblenden 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 user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconDeCodeGuru: Topic verschoben
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 31.01.04 18:20 
C.\lan.txt
Richtig tippen musst du schon.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 31.01.04 18:25 
Noch nie von Multifunktionstools gehört? :mrgreen:
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Sa 31.01.04 18:30 
haben wollen. :dance2:
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Guenni_d Threadstarter
Hält's aus hier
Beiträge: 8


D6 Pers
BeitragVerfasst: 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:

ausblenden volle Höhe 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);

//  lpDirectory := PChar(StartInString);
    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 user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.02.04 11:01 
Starte anstelle des Programms mal den Kommandozeilenprozessor "cmd.exe":
ausblenden 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
ausblenden Quelltext
1:
cmd /?					

eintippen.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Guenni_d Threadstarter
Hält's aus hier
Beiträge: 8


D6 Pers
BeitragVerfasst: 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