pc蛋蛋主页
正安在线
资讯?#34892;?/span>
您的位置:正安在线首页 > 资讯杂文 > 编程开发 >

delphi7下运行CMD命令并获取输出

        本站所有文字、图片、视频,版权均属原作者所有,如有侵权或争议请联系管理员删除。已授权本站的内容,在使用时必须注明“来源:正安在线或正安论坛”,违者将依法追究相关责任。

  1. procedure CheckResult(b: Boolean);
    begin
      if not b then
        raise Exception.Create(SysErrorMessage(GetLastError));
    end;
      
    function RunDOS(const CommandLine: string): string;
    var
      HRead, HWrite: THandle;
      StartInfo: TStartupInfo;
      ProceInfo: TProcessInformation;
      b: Boolean;
      sa: TSecurityAttributes;
      inS: THandleStream;
      sRet: TStrings;
    begin
      Result := '';
      FillChar(sa, sizeof(sa), 0);
    //设置?#24066;砑坛校?#21542;则在NT和2000下无法取得输出结果
      sa.nLength := sizeof(sa);
      sa.bInheritHandle := True;
      sa.lpSecurityDescriptor := nil;
      b := CreatePipe(HRead, HWrite, @sa, 0);
      CheckResult(b);
      
      FillChar(StartInfo, SizeOf(StartInfo), 0);
      StartInfo.cb := SizeOf(StartInfo);
      StartInfo.wShowWindow := SW_HIDE;
    //使用指定的句柄作为标准输入输出的文件句柄,使用指定的?#20801;?#26041;式
      StartInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
      StartInfo.hStdError := HWrite;
      StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); //HRead;
      StartInfo.hStdOutput := HWrite;
      
      b := CreateProcess(nil, //lpApplicationName: PChar
        PChar(CommandLine), //lpCommandLine: PChar
        nil, //lpProcessAttributes: PSecurityAttributes
        nil, //lpThreadAttributes: PSecurityAttributes
        True, //bInheritHandles: BOOL
        CREATE_NEW_CONSOLE,
        nil,
        nil,
        StartInfo,
        ProceInfo);
      
      CheckResult(b);
      WaitForSingleObject(ProceInfo.hProcess, INFINITE);
      
      inS := THandleStream.Create(HRead);
      if inS.Size > 0 then
      begin
        sRet := TStringList.Create;
        sRet.LoadFromStream(inS);
        Result := sRet.Text;
        sRet.Free;
      end;
      inS.Free;
      
      CloseHandle(HRead);
      CloseHandle(HWrite);
    end;

责任编辑: admin
文章关键词:

你看到此篇文章的感受是:

您可能?#34892;?#36259;的文章
掌上正安 关于我们 业务联系 版权声明 友情链接
pc蛋蛋主页 分分快三大小单双必中技巧 三肖六码3肖6码中特 北京pk10走势下载 黑客为什么不攻击赌博 三公游戏单机版下载 重庆时时历史开奖走势 重庆福彩欢乐生肖走势图 篮球即时比分直播 好运来计划官网苹果 定位软件下载