Ma może ktoś pomysł jak zróbić wiersz poleceń w konsoli 32 bitowej w Delphi??
Chodzi mi o zrobienie takiego czegoś jak command.com tylko, że w Delphi żeby działało tylko pod Windows'a.
Jak ktoś ma źródełka w delphi albo C++ to pardzo proszę.
Ma może ktoś pomysł jak zróbić wiersz poleceń w konsoli 32 bitowej w Delphi??
Chodzi mi o zrobienie takiego czegoś jak command.com tylko, że w Delphi żeby działało tylko pod Windows'a.
Jak ktoś ma źródełka w delphi albo C++ to pardzo proszę.
w dziale download znajduje sie moj komponencik symulujacy konsole (CmdEdit)
moze ci sie przyda :)
Niestety nie przyda się wcale :(
Muszę to zrobić w aplikacji konsolowej (okienku konsolowym), a nie na formularzu z komponentami :(
to może skorzystaj z funkcji System() z FAQ
i daj taki kod:
var
S: string;
begin
repeat
ReadLn(S);
WriteLn(System(S));
until False;
end;
Oj jednak to też mi się nie przyda, bo uruchamiane aplikacje dosowe mają być uruchamiane w mojej konsoli i te programy mają opcje tak jak np. quizy gry itp. a nie tylko wywołanie z parametrem.
Po prostu chcę zrobić identyczny command.com tylko że w delphi. (jako aplikacja konsolowa)
To może funkcje System() wymień na coś takiego:
function ConExec(Cmd: string): Boolean;
var
SI: TStartupInfo;
PI: TProcessInformation;
Buf: array[0..8191] of Char;
begin
Result := False;
Cmd := '%ComSpec% /c ' + Cmd;
ExpandEnvironmentStrings(@Cmd[1], Buf, SizeOf(Buf));
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW;
SI.wShowWindow := SW_HIDE;
if CreateProcess(nil, Buf, nil, nil, True, 0, nil, nil, SI, PI) then
begin
WaitForSingleObject(PI.hProcess, INFINITE);
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
Result := True;
end;
end;
To będzie uruchamiać w konsoli...
Dzięki za rady, ale tu chodzi o coś więcej niż wyświetlanie danej aplikacji dosowej, ale także reagowanie na klawisze dla niej. Także obsługa komendy cd dir itp. muszą działać.
Chyba nie znajdę odpowiedzi :( bo zadałem takie pytanie na kilku angielskich i niemieckich forach w tym na torry.
Nie rozumiem w czym problem?!
Taki program jest stosunkowo prosty do napisania, chociaż na pewno czasochłonny.
Aplikacja konsolowa (File->New->Other->Console Application).
Wykorzystujesz Write, Writeln, Read, Readln itp.
Np:
Write('Wpisz polecenie>'); Readln(s);
s := Trim(s);
if (UpperCase(Copy(s, 1, 2)) = 'CD') and (Copy(s, 3, 1) = ' ') then
begin
sDir := Copy(s, 4, Length(s));
sDir := ExpandFileName(sDir);
// należałoby jeszcze sprawdzić, czy sDir = '..' lub sDir = '.' itd., itp. ......
if not DirectoryExists(sDir) then JakaśProceduraTypu_ShowError
else ChDir(sDir);
end;
Po prostu odczytujesz (najlepiej w pętli warunkowej, której zakończenie może nastąpić np. przez wpisanie przez użytkownika słowa EXIT) dane podane przez użytkownika, analizujesz łańcuch (rozdzielasz na polecenie i parametry), sprawdzasz, czy wszystkie dane są prawidłowe i wykonujesz odpowiednią operację lub wyświetlasz error.
Jeśli chcesz kilka dodatkowych "funkcji konsolowych" (np kolory) ściągnij moduł Crt (http://www.jack1024.private.pl/downloads/download.php?cat=delphi&f=Crt.pas).