[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.这两个大家应该都见 ...
随机推荐
- error: L6235E: More than one section matches selector - cannot all be FIRST/LAST
解决措施http://blog.csdn.net/chenbang110/article/details/7586244
- Window服务安装方式汇总
一.制作bat文件 1)Install.bat: @echo 安装服务 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil AppS ...
- c++ 一些随笔
1. A region of source code where any use of the unqualified name (that is, as a plain identifier) re ...
- Oracle Hang分析--转载
1. 数据库hang的几种可能性 oracle 死锁 或者系统负载非常高比如cpu使用或其他一些锁等待很高都可能导致系统hang住,比如大量的DX锁. 通常来说,我们所指的系统hang住,是指应用无响 ...
- Druid安装-单机
单机版安装 下载安装包http://static.druid.io/artifacts/releases/druid-0.9.1.1-bin.tar.gz 安装 解压缩 安装zookeeper cu ...
- NSURLConnection使用
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 在MyBook Live上部署svn
一直以来都在用svn管理源代码,美中不足的是由于svn服务器端部署在本地,无法实现在异地迁入迁出程序,因此考虑将svn服务器部署在我的MyBook Live上. 一.部署svn 1.分别执行以下2条命 ...
- shell中判读文件存在的方法
单个文件较简单 if [[ -f filename ]]; then echo exist fi 文件存在并且有内容 if [[ -s filename ]]; then echo exist fi ...
- 《开源安全运维平台OSSIM最佳实践》
<开源安全运维平台OSSIM最佳实践> 经多年潜心研究开源技术,历时三年创作的<开源安全运维平台OSSIM最佳实践>一书即将出版.该书用80多万字记录了,作者10多年的IT行业 ...
- S2SH CRUD 整合
采用的框架 Struts2+Spring4+Hbiernate4. 目录结构 : EmployeeAction: package com.xx.ssh.actions; import java. ...