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

- 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);
- //设置允许继承,否则在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;
- //使用指定的句柄作为标准输入输出的文件句柄,使用指定的显示方式
- 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;
演示:
- memo1.text := RunDOS('ping www.baidu.com');
[delphi]运行cmd命令,并取得输出字符的更多相关文章
- C语言使用cmd命令并获取输出方法
转自http://blog.csdn.net/hxh129/article/details/8000205 C语言使用cmd命令并获取输出方法 在实践中,我们有时候需要用C语言来调用cmd的命令,并得 ...
- C#隐式运行CMD命令(隐藏命令窗口)
原文 C#隐式运行CMD命令(隐藏命令窗口) 本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运 ...
- SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法
create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...
- Atitit.运行cmd 命令行 php
Atitit.运行cmd 命令行 php 1. 运行cmd 命令行,调用系统命令的基础 1 1.1. 实际运行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题.程序文件读取编码设置 1 1 ...
- windows下cmd命令行显示UTF8字符设置(CHCP命令)
本文由 www.169it.com 收集整理 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况下 ...
- ASP.NET CORE下运行CMD命令
ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事 ...
- java执行cmd命令并获取输出结果
1.java执行cmd命令并获取输出结果 import java.io.BufferedReader; import java.io.InputStreamReader; import org.apa ...
- C# 运行CMD命令
/// <summary> /// 运行CMD命令 /// </summary> /// <param name="cmd">命令</pa ...
- [转]Delphi执行CMD命令
今天看到有人在问用代码执行CMD命令的问题,就总结一下用法,也算做个备忘. Delphi中,执行命令或者运行一个程序有2个函数,一个是winexec,一个是shellexecute.这两个大家应该都见 ...
随机推荐
- BFS与DFS
DFS:使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测. 类似于树的先根遍历深搜例子:走迷宫,你没有办法用分身术来站在每个走过的位置.不撞南山不 ...
- sharedPreferences的用法
做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连 接跟操作等耗时大大影响了程序的效率,因此我们使用键值这 ...
- 用exp导数据时遇到oracle 1455的错误
exp scott/scott@orcl file=d:\impbak\20161214.dmp owner=scott TRIGGERS=n INDEXES=n STATISTICS=none(ow ...
- windows环境PhpStorm中简单使用PHP_CodeSniffer规范php代码
为什么使用PHP_CodeSniffer 一个开发团队统一的编码风格,有助于他人对代码的理解和维护,对于大项目来说尤其重要. PHP_CodeSniffer是PEAR中的一个用PHP5写的用来检查嗅探 ...
- 尚学堂Spring视频教程(五):Spring AOP
在第一节中,我们自己模拟了一个Spring,实现一个保存用户的操作,假如现在有一个需求,在保存的时候记录日志,该怎么做呢? 暂且将记录日志操作就简单的变为在保存用户前输出一句话“save start. ...
- 部署Service Manager 2012遇到的2个问题
上周装了个Service Manager 2012学习,以便完善System Center整个解决方案,在部署期间遇到2个问题,花了我不少时间解决.一.安装时提示“执行自定义操作时失败”每当到了安装的 ...
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
- 4、IMS
链:1:http://www.cnblogs.com/gnuhpc/archive/2012/12/11/2813494.html [笔记] 1.<计算机网络(第五版)>P10-15:电路 ...
- 网站压力测试工具webbench使用说明
一.webbench简介 Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.它的帮助文件和文档请到:ww ...
- Sequelize 关系模型简介
Sequelize 关系模型简介 先介绍一下本文用到的术语: 源: 调用 sequelize 中关系方法的调用者 目标: 调用 sequelize 中关系方法中的参数 比如, User.hasOne( ...