Entwickler-Ecke

Windows API - windows script host plopt immer auf


pc-crack - Mo 05.07.10 21:50
Titel: windows script host plopt immer auf
Ich möchte auf die windowskonsole zugreifen aber immer wenn ich das mache plopt die Konsole. Weiß jemand wie ich das ändern kann?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
uses IWshRuntimeLibrary_TLB;
var  sh    : IWshShell3;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SH := CoWshShell.Create;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Prog  : IWshExec;
begin
  Prog  := sh.Exec('netsh wlan show interfaces');
  Memo1.Clear;
  Memo1.Lines.add(Prog.StdOut.ReadAll);
  if (Memo1.Lines[19][29] = '%'then
    begin
        Prog  := sh.Exec('');
        Prog.StdOut.ReadAll;
    end;
end;


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


jaenicke - Mo 05.07.10 22:40

Wenn du nur auf die Konsole zugreifen willst, was machst du denn da mit dem Scripting Host? :shock:

Wie wäre es ganz simpel mit CreateProcess und Pipes?
http://www.delphi-treff.de/tipps/system/prozesse/ausgabe-der-konsole-in-meinem-programm-anzeigen/

Und wenn du die Ausgabe live haben willst gibt es TDosCommand:
http://maxxdelphisite.free.fr/doscmd.htm

Ja, und in deinem Fall kannst du auch einfach die API nutzen, dann kannst du dir das Parsen der Ausgabe sparen...


pc-crack - Di 06.07.10 21:56

Ich hab es versucht aber ich bekomme immer nur chinesische Zeichen...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
var
  LogIn : TDosCommand;
  WLan  : TDosCommand;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WLan.CommandLine := 'ping 127.0.0.1';
  WLan.Execute;
end;

procedure TForm1.OnNewLine(Sender: TObject; NewLine: string; OutputType: TOutputType);
begin
  Form1.Memo1.Lines.Add(NewLine);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  WLan := TDosCommand.Create(self);
  LogIn:= TDosCommand.Create(self);
  WLan.OnNewLine := OnNewLine;
end;


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


elundril - Di 06.07.10 21:59

welche Delphi-Version verwendest du denn?

ich schätze nämlich das du Delphi2009 oder Delphi2010 verwendest (welches Unicode unterstützt) und die Komponente TDosCommand das aber nicht kann.

lg elundril


pc-crack - Mi 07.07.10 21:09

Delphi 2009


wie kann ich den text den lesbar machen?


jaenicke - Mi 07.07.10 21:29

Ich habe die Komponente TDosCommand vor einer Weile kurz auf Delphi 2009 angepasst, da ist nicht viel zu tun gewesen. Im Anhang die angepasste Version für Delphi 2009.


pc-crack - Do 08.07.10 09:11

jetzt klappt es...


Danke