program Project3; {$APPTYPE CONSOLE}uses SysUtils, Windows;procedure LoadTxt; var f: TextFile; s: string; begin if FileExists('c:\1.txt') then begin AssignFile(f, 'c:\1.txt'); Reset(f); try while not eof(f) do begin Readln(f, s); Writeln(s); end; finally closefile(f); end; end;end;var commend: AnsiString; begin while True do begin commend := ''; Writeln('请输入命令:'); Readln(commend); if commend <> '' then begin commend := 'cmd.exe /c ' + commend + ' >c:\1.txt'; winexec(PAnsiChar(commend), sw_hide); Sleep(2000); LoadTxt; end; end;end.
createprocess 也可以带参数
就像这样
1
var
s:string;
begin
s:='cmd.exe /c '+edit1.Text+' >c:\1.txt'; //将结果保存到c:\1.txt
winexec(pchar(s),sw_hide);
sleep(2000);
memo1.Lines.LoadFromFile('c:\1.txt');
2
shellexecute(handle,nil,'cmd.exe',pchar(form2.edit1.text),nil,sw_hide);
WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW);
ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。
首先必须引用shellapi.pas单元:uses ShellAPI;ShellExecute函数原型及参数如下:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;
其实我想实现的效果很简单,
第一步:调出CMD窗口
第二步:在里面写入命令并回车
在D中有一个叫做“console application”的东西,这个东西和DOS命令有什么区别吗?可以用这个东东代替CMD中的命令行吗。
program Project3;
{$APPTYPE CONSOLE}uses
SysUtils, Windows;procedure LoadTxt;
var
f: TextFile;
s: string;
begin
if FileExists('c:\1.txt') then
begin
AssignFile(f, 'c:\1.txt');
Reset(f);
try
while not eof(f) do
begin
Readln(f, s);
Writeln(s);
end;
finally
closefile(f);
end;
end;end;var
commend: AnsiString;
begin
while True do
begin
commend := '';
Writeln('请输入命令:');
Readln(commend);
if commend <> '' then
begin
commend := 'cmd.exe /c ' + commend + ' >c:\1.txt';
winexec(PAnsiChar(commend), sw_hide);
Sleep(2000);
LoadTxt;
end;
end;end.