Jak przejąć kontrolę nad programem "cmd.exe"

0

Witam,

Mam taki problem:
jak z poziomu Delphi lub C++ uruchomić program "cmd.exe" (win-konsola) i następnie przejąć kontrolę nad jego wejściem i wyjściem?

Np. w polu typu TEdit wpisuję "dir", klikam na przycisk, i wynik działania tego polecenia otrzymuję np. w kontrolce TMemo.

WAŻNE jest, żeby program "cmd.exe" nie był każdorazowo uruchamiany i zamykany przy wywołaniu polecenia. To ma być jedna sesja. Uruchamiam CMD, wydaje różne polecenia, otrzymuje wyniki i na końcu zamykam CMD.

Przeszukałem całe Google. Znalazłem opisy funkcji WinAPI i typowe przykłady ich zastosowania, ale mój problem jest nietypowy :-(

Pozdrawiam i bardzo proszę o pomoc

0

Kiedyś też się nad tym męczyłem, ale udało mi się wykombinować...
Wystarczy użyć komponentu DosCommand.
potem wystarczy wstukać w programie cosik takiego:

TForm1.OnCreate:

DosCommand1.CommandLine := 'cmd.exe';
DosCommand1.Execute;

TForm1.Button1Click:
Command1.SendLine(Edit1.Text, True);
Jeszcze trzeba wyjście przekierować do Memo. W zdarzeniu TDosCommand1.OnNewLine wpisujesz to:
Memo1.Lines.Add(NewLine);

Z Editcie wpisujesz polecenia, buttonem je wysyłasz, wyjście na Memo...

0

Dzięki! :-) O coś takiego mi właśnie chodziło
Pozdrawiam!

0
guillain napisał(a)

Wystarczy użyć komponentu DosCommand.

A skąd go wziąć mistrzu 8-O ?

0

pierwsza pozycja w googlach:
http://www.google.pl/search?hl=pl&q=TDosCommand&lr=

a jakbyś sobie jeszcze nie dał rady...
http://maxxdelphisite.free.fr/dn.php3?id=3

0

OK, przepraszam. A co do wątku to warto by jeszcze dodać, że można wynik każdej komendy przekierowywać do pliku:
dir > "C:\plik.txt" a potem wczytać:

Memo1.Lines.LoadFromFile('C:\plik.txt');

"Każdy problem da się rozwiązać na: 0,1,2 lub nieskończoność sposobów" - Ja :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1