1. //转自http://www.oschina.net/code/snippet_136241_3980
  2.  
  3. 1 procedure CheckResult(b: Boolean);
  4. begin
  5. if not b then
  6. raise Exception.Create(SysErrorMessage(GetLastError));
  7. end;
  8.  
  9. function RunDOS(const CommandLine: string): string;
  10. var
  11. HRead, HWrite: THandle;
  12. StartInfo: TStartupInfo;
  13. ProceInfo: TProcessInformation;
  14. b: Boolean;
  15. sa: TSecurityAttributes;
  16. inS: THandleStream;
  17. sRet: TStrings;
  18. begin
  19. Result := '';
  20. FillChar(sa, sizeof(sa), );
  21. //设置允许继承,否则在NT和2000下无法取得输出结果
  22. sa.nLength := sizeof(sa);
  23. sa.bInheritHandle := True;
  24. sa.lpSecurityDescriptor := nil;
  25. b := CreatePipe(HRead, HWrite, @sa, );
  26. CheckResult(b);
  27.  
  28. FillChar(StartInfo, SizeOf(StartInfo), );
  29. StartInfo.cb := SizeOf(StartInfo);
  30. StartInfo.wShowWindow := SW_HIDE;
  31. //使用指定的句柄作为标准输入输出的文件句柄,使用指定的显示方式
  32. StartInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
  33. StartInfo.hStdError := HWrite;
  34. StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); //HRead;
  35. StartInfo.hStdOutput := HWrite;
  36.  
  37. b := CreateProcess(nil, //lpApplicationName: PChar
  38. PChar(CommandLine), //lpCommandLine: PChar
  39. nil, //lpProcessAttributes: PSecurityAttributes
  40. nil, //lpThreadAttributes: PSecurityAttributes
  41. True, //bInheritHandles: BOOL
  42. CREATE_NEW_CONSOLE,
  43. nil,
  44. nil,
  45. StartInfo,
  46. ProceInfo);
  47.  
  48. CheckResult(b);
  49. WaitForSingleObject(ProceInfo.hProcess, INFINITE);
  50.  
  51. inS := THandleStream.Create(HRead);
  52. if inS.Size > then
  53. begin
  54. sRet := TStringList.Create;
  55. sRet.LoadFromStream(inS);
  56. Result := sRet.Text;
  57. sRet.Free;
  58. end;
  59. inS.Free;
  60.  
  61. CloseHandle(HRead);
  62. CloseHandle(HWrite);
  63. end;

[转]Delphi调用cmd并取得输出文本的更多相关文章

  1. [转]Delphi调用cmd的两种方法

    delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...

  2. [delphi]运行cmd命令,并取得输出字符

     http://blog.csdn.net/nerdy/article/details/8969189 [delphi]运行cmd命令,并取得输出字符 标签: delphiCMD命令 2013-05- ...

  3. .net 代码调用cmd执行.exe程序,获取控制台输出信息

    使用.net core 对老项目升级, .net core 使用TripleDES.Create() 加密众iv字节限制 与 framework中的不同, 新项目还需要兼容老项目版本,还不想通过web ...

  4. [DEBUG] java中用Runtime调用python 简单程序输出null

    今天需要在java中调用python脚本,首先考虑的是java自带的Runtime 在ubuntu和win10下分别测试,发现win10报错 java源代码 @Test public void tes ...

  5. C#程序调用cmd执行命令

    对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝.我自己测试整理了一下. 代码: string str = Console.ReadLine(); Syste ...

  6. Delphi 调用netsh命令修改IP地址

    Delphi 调用netsh命令修改IP地址 先介绍一下Netsh命令的使用方法: 在这里跟大家介绍几个简单的指令 1.Show IP 1.1Cmd Mode 直接在cmd下面输入 netsh int ...

  7. C#程序调用cmd执行命令(转)

    C#通过程序来调用cmd命令的操作 string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Diagnos ...

  8. delphi调用外部程序打开文件

    delphi调用外部程序打开文件 ShellExecute的各种用法 一.利用系统默认的邮件收发器发送电子邮件 Uses ..., ShellAPI; Var lpHwnd: HWND; lpOper ...

  9. C#程序调用cmd.exe执行命令

    代码部分 using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Wi ...

随机推荐

  1. 机器学习--DIY笔记与感悟--①K-临近算法

    ##“计算机出身要紧跟潮流” 机器学习作为如今发展的趋势需要被我们所掌握.而今我也需要开始learn机器学习,并将之后的所作所想记录在此. 今天我开始第一课--K临近算法. 一.k-临近的基础概念理解 ...

  2. bzoj 3714: [PA2014]Kuglarz【最小生成树】

    参考:https://blog.csdn.net/aarongzk/article/details/48883741 没想到吧.jpg 来自题解: "如果用sum[i]表示前i个杯子底球的总 ...

  3. css覆盖select样式并添加小箭头

    .select { border-radius: 5px; border: 1px #F4A627 solid; -webkit-appearance: none;//清除默认样式 backgroun ...

  4. Activiti6.0教程 Eclipse安装Activiti Diagram插件(一)

    最近这段时间打算出一个Activiti6.0的详细教程,Activiti作为一个流行的开源工作流引擎,正在不断发展,其6.0版本以API形式提供服务,而之前版本基本都是要求我们的应用以JDK方式与其交 ...

  5. Centos 下php安装配置xdebug扩展

    2018年05月02日 19:54:42 杨汉松 阅读数:44   1.下载安装xdebug 获取xdebug wget http://www.xdebug.org/files/xdebug-2.3. ...

  6. OpenCV+VS开发环境配置

    最近跑C程序,头文件中用到了OpenCV中的文件,找了很多篇OpenCV+VS的环境配置,发现如下这篇写的最为详细,特转载来自己的博客中留存,并附上原博客地址如下 OpenCV学习笔记(一)——Ope ...

  7. [Usaco2006 Jan] Dollar Dayz 奶牛商店

    Description 约翰到奶牛商场里买工具.商场里有K(1≤K≤100).种工具,价格分别为1,2,-,K美元.约翰手里有N(1≤N≤1000)美元,必须花完.那他有多少种购买的组合呢? Inpu ...

  8. [BUG]Dreamweaver6做网页的一个图片文字不清晰的问题

    自己用Dreamweaver6做一个网页,使用PS做图片,为了节约下载流量,我把图片裁剪为GIF格式,通过系统自带的图片浏览器和美图看看,图片上的文字都是清晰的. 我把图片加载进入DW中后,在DW界面 ...

  9. js连续赋值,你理解了吗

    看一道有意思的题,也许你会自信满满地写下答案,会是正确的吗? }; var b = a; a.x = a = {n: }; console.log('a',a); console.log('b',b) ...

  10. .NET 几种数据绑定控件的区别

    GridView 控件 GridView 控件以表的形式显示数据,并提供对列进行排序.分页.翻阅数据以及编辑或删除单个记录的功能. 特征:一行一条记录,就像新闻列表一样:带分页功能. DataList ...