zoukankan      html  css  js  c++  java
  • delphi获取DOS命令行输出函数 运行CMD命令并获取结果

    procedure TForm1.Button4Click(Sender: TObject);
    var
    hReadPipe,hWritePipe:THandle;
    si:STARTUPINFO;
    lsa:SECURITY_ATTRIBUTES;
    pi:PROCESS_INFORMATION;
    mDosScreen:String;
    cchReadBuffer:DWORD;
    ph:PansiChar;
    fname:PChar;
    i,j:integer;
    str,TEMP,ip:string;
    K:Integer;
    begin
    Memo1.Clear;
    fname:=allocmem(255);
    ph:=AllocMem(5000);
    lsa.nLength :=sizeof(SECURITY_ATTRIBUTES);
    lsa.lpSecurityDescriptor :=nil;
    lsa.bInheritHandle :=True;
    try
    try
    if CreatePipe(hReadPipe,hWritePipe,@lsa,0)=false then
    begin
    ShowMessage('Can not create pipe!');
    exit;
    end;
    fillchar(si,sizeof(STARTUPINFO),0);
    si.cb :=sizeof(STARTUPINFO);
    si.dwFlags :=(STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
    si.wShowWindow :=SW_HIDE;
    si.hStdOutput :=hWritePipe;
    StrPCopy(fname,'ping baidu.com');//执行命令
    if CreateProcess( nil, fname, nil, nil, true, 0, nil, nil, si, pi) = False then
    begin
    ShowMessage('can not create process');
    FreeMem(ph);
    FreeMem(fname);
    Exit;
    end;
    while(true) do
    begin
    if not PeekNamedPipe(hReadPipe,ph,1,@cchReadBuffer,nil,nil) then break;
    if cchReadBuffer<>0 then
    begin
    if ReadFile(hReadPipe,ph^,4096,cchReadBuffer,nil)=false then break;
    ph[cchReadbuffer]:=chr(0);
    if ph<>'' then Memo1.Lines.Add(ph);  
    end
    else if(WaitForSingleObject(pi.hProcess ,0)=WAIT_OBJECT_0) then break;
    Application.ProcessMessages;
    Sleep(100);
    end;
    ph[cchReadBuffer]:=chr(0);
    if ph<>'' then Memo1.Lines.Add(StringReplace(ph,#13#10,'',[rfReplaceAll])); 
    CloseHandle(hReadPipe);
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
    CloseHandle(hWritePipe);
    FreeMem(ph);
    FreeMem(fname);
    except
    end;
    finally
    end;
    end;
     
  • 相关阅读:
    呵呵

    HDU 1878 欧拉回路
    HDU 3293 sort
    HDU 2714 ISBN
    神秀作偈
    大学之道
    写给自己过去疯狂的一年(2)(写在一个特别的时候)
    这几天我的生活就是这样的
    学习和研究计划
  • 原文地址:https://www.cnblogs.com/windson/p/12505177.html
Copyright © 2011-2022 走看看