http://blog.csdn.net/nerdy/article/details/8969189

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

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

演示:

  1. memo1.text := RunDOS('ping www.baidu.com');

 
 

[delphi]运行cmd命令,并取得输出字符的更多相关文章

  1. C语言使用cmd命令并获取输出方法

    转自http://blog.csdn.net/hxh129/article/details/8000205 C语言使用cmd命令并获取输出方法 在实践中,我们有时候需要用C语言来调用cmd的命令,并得 ...

  2. C#隐式运行CMD命令(隐藏命令窗口)

    原文 C#隐式运行CMD命令(隐藏命令窗口) 本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运 ...

  3. SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法

    create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...

  4. Atitit.运行cmd 命令行 php

    Atitit.运行cmd 命令行 php 1. 运行cmd 命令行,调用系统命令的基础 1 1.1. 实际运行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题.程序文件读取编码设置 1 1 ...

  5. windows下cmd命令行显示UTF8字符设置(CHCP命令)

    本文由 www.169it.com 收集整理 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况下 ...

  6. ASP.NET CORE下运行CMD命令

    ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事 ...

  7. java执行cmd命令并获取输出结果

    1.java执行cmd命令并获取输出结果 import java.io.BufferedReader; import java.io.InputStreamReader; import org.apa ...

  8. C# 运行CMD命令

    /// <summary> /// 运行CMD命令 /// </summary> /// <param name="cmd">命令</pa ...

  9. [转]Delphi执行CMD命令

    今天看到有人在问用代码执行CMD命令的问题,就总结一下用法,也算做个备忘. Delphi中,执行命令或者运行一个程序有2个函数,一个是winexec,一个是shellexecute.这两个大家应该都见 ...

随机推荐

  1. SQL数据库添加新账号,只操作指定数据库

    思路: 1.创建数据库服务器登录用户 2.创建指定数据库的用户,并且和服务器用户联系起来 3.给数据库的用户添加角色 代码实现: 1.创建名为login的服务器登录用户dba,尼玛dbpwd,默认数据 ...

  2. linux 出core设置问题

    我所在的环境是RedHat 1.第一步 修改/etc/security/limits.conf添加一行 user为生效的用户 user hard core unlimited 2.第二步 在普通用户的 ...

  3. 分布式ID生成器 zz

    简介 这个是根据twitter的snowflake来写的.这里有中文的介绍. 如上图所示,一个64位ID,除了最左边的符号位不用(固定为0,以保证生成的ID都是正数),还剩余63位可用. 下面的代码与 ...

  4. (Array)121. Best Time to Buy and Sell Stock

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  5. Esfog_UnityShader教程_遮挡描边(实现篇)

     在上一篇中,我们基本上说明了遮挡描边实现的一种基本原理.这一篇中我们将了解一下基于这种原理的具体实现代码.本篇中的内容和前几篇教程相比,相对比较难一些,建议先有一些基本的Unity的C#脚本编程经验 ...

  6. oracle免客户端安装 plsql连接

    开发的过程中,往往没有必要在自己的电脑上安装oracle,也实在太大了. 这里介绍一种使用plsql连接oracle的方法,类似于navicat之连接mysql. 先下载plsql,进行安装,这里提供 ...

  7. cvs update后输出的文件标志 和 update常用的几个参数

    (1)update 和 checkout 在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:       U file        文件按要求从仓库得到更新.用在那些仓库里面 ...

  8. iOS-多线程 ,整理集锦,多种线程的创建

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  9. android 动态设置控件宽高度

    Android 代码里直接使用 setWidth() 和 setHeight()设置宽高度是没用的. 解决办法是 改用setLayoutParams()方法 如设置宽高内容自适应: setLayout ...

  10. 基本变换(读书笔记5 --- Real-Time rendering)

    刚体变换 即变换不改变了被变换顶点之间的距离,以及偏手性(不会让左右手坐标系颠倒). 下面的平移变换.旋转变换即属于刚体变换 平移 从一个位置变到另一个位置可以用平移矩阵T来表示,这个矩阵将一个实体变 ...