delphi 獲取cmd命令返回並顯示(筆記)

2021-07-14 00:22:11 字數 2061 閱讀 4477

先新建乙個工程。新增控制項

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許可權修改為僅管理員...