先新建乙個工程。新增控制項
timer1 //用於獲取命令輸入後的返回資訊
edit1 //用於輸入命令
memo1 //用於顯示
如下圖:
我們用createprocess函式來建立乙個cmd程序,如下
//建立cmd 程序 並且執行 edit1.text 命令
createprocess(nil, pchar(edit1.text), @security, @security, true,normal_priority_class, nil, nil, startupinfo, processinfo);
用terminateprocess 來釋放cmd程序如下
terminateprocess(processinfo.hprocess, 0); //關閉cmd程序
用readfile 來讀取命令返回資訊 如下
readfile(pipe, buffer[0], readbuffer, bytesread, nil); //讀取返回資訊
好了,我們來看看 關鍵的 建立cmd程序函式
varsecurity: tsecurityattributes;
startupinfo: tstartupinfo;
begin
with security do begin
nlength := sizeof(tsecurityattributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
createpipe(readout, writeout, @security, 0);
createpipe(readin, writein, @security, 0);
fillchar(startupinfo, sizeof(startupinfo), #0);
startupinfo.cb := sizeof(startupinfo);
with startupinfo do
begin
hstdoutput := writeout;
hstdinput := readin;
hstderror := writeout;
dwflags := startf_usestdhandles + startf_useshowwindow;
wshowwindow := sw_hide;
end;
//建立cmd 程序 並且執行 edit1.text 命令
createprocess(nil, pchar(edit1.text), @security, @security, true,normal_priority_class, nil, nil, startupinfo, processinfo);
end;
獲取命令返回函式
varbuffer: pchar;
bytesread: dword;
readbuffer: cardinal;
begin
result := '';
if getfilesize(pipe, nil) = 0 then exit;
buffer := allocmem(readbuffer + 1);
repeat
bytesread := 0;
readfile(pipe, buffer[0], readbuffer, bytesread, nil); //讀取返回資訊
if bytesread > 0 then
begin
buffer[bytesread] := #0;
oemtoansi(buffer, buffer);
result := string(buffer);
end;
until (bytesread < readbuffer);
freemem(buffer);
end;
執行結果如下:
Delphi執行CMD命令
delphi中,執行命令或者執行乙個程式有2個函式,乙個是winexec,乙個是shellexecute。這兩個大家應該都見過,其中,winexec比較簡單,可以直接執行乙個外部程式,shellexecute則更高階一些,除了可以執行外部exe,還可以執行特殊命令。下面我們就分別舉例子說明 我們先來...
C 獲取CMD命令輸出的字元
system ping www.baidu.com 將在螢幕上輸出輸出之後該怎麼獲取輸出的字元呢?答案是使用popen 函式 file popen const char command const char type 函式原型 popen 函式的作用是建立乙個管道,system命令執行後只會在螢幕輸...
檔案許可權的獲取,cmd命令 Takeown
takeown f a r d y 強制將當前目錄下的所有檔案及資料夾 子資料夾下的所有者更改為管理員組 administrators 命令 cacls d documents t g administrators f 將所有d documents目錄下的檔案 子資料夾的ntfs許可權修改為僅管理員...