执行命令行, 并获取输出字符(比如OSQL)
直接贴代码了, 没什么好说的, 很简单, 也不需要注释
function DoCMD(ACommand: AnsiString; var ACmdResult: string): Boolean;
var
nStrs: TStringBuilder; {旧版本可以用TStringlist替代}
nHReadPipe, nHWritePipe: THandle;
nSI: STARTUPINFOA;
nLSA: SECURITY_ATTRIBUTES;
nPI: PROCESS_INFORMATION;
nBufferSize, nRBufferSize, nEC: DWORD;
nPH: array[..] of AnsiChar;
begin
Result := False; with nLSA do
begin
nLength := SizeOf(SECURITY_ATTRIBUTES);
lpSecurityDescriptor := nil;
bInheritHandle := True;
end; if not CreatePipe(nHReadPipe, nHWritePipe, @nLSA, ) then
raise Exception.Create('管道创建失败 ' + SysErrorMessage(GetLastError)); try
GetStartupInfoA(nSI);
with nSI do
begin
dwFlags := (STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
wShowWindow := SW_HIDE;
hStdOutput := nHWritePipe;
end; nStrs := TStringBuilder.Create;
try
if not CreateProcessA(nil, PAnsiChar(ACommand), nil, nil,
True, , nil, nil, nSI, nPI) then
raise Exception.Create('进程创建失败 ' + SysErrorMessage(GetLastError));
try
nRBufferSize := ;
repeat
GetExitCodeProcess(nPI.hProcess, nEC);
PeekNamedPipe(nHReadPipe, @nPH, Length(nPH) - , @nBufferSize, nil, nil);
if nBufferSize <> then
begin
ReadFile(nHReadPipe, nPH, nBufferSize, nRBufferSize, nil);
nPH[nRBufferSize] := #;
nRBufferSize := ;
nStrs.Append(nPH);
end;
until nEC <> STILL_ACTIVE;
nPH[nRBufferSize] := #;
nStrs.Append(nPH);
ACmdResult := nStrs.ToString;
Result := True;
finally
CloseHandle(nPI.hThread);
CloseHandle(nPI.hProcess);
end;
finally
nStrs.Free;
end;
finally
CloseHandle(nHReadPipe);
CloseHandle(nHWritePipe);
end;
end;
执行命令行, 并获取输出字符(比如OSQL)的更多相关文章
- Python执行命令行
背景 我们知道,虽然会破坏平台独立性,但是有的时候需要在代码里面调用命令行来获取一些信息,那么了解在 Python 中如何执行命令行至关重要 使用介绍 Python 中使用命令行可以通过 subpro ...
- UNIX环境编程学习笔记(22)——进程管理之system 函数执行命令行字符串
lienhua342014-10-15 ISO C 定义了 system 函数,用于在程序中执行一个命令字符串.其声明如下, #include <stdlib.h> int system( ...
- 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题
Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...
- [delphi]运行cmd命令,并取得输出字符
http://blog.csdn.net/nerdy/article/details/8969189 [delphi]运行cmd命令,并取得输出字符 标签: delphiCMD命令 2013-05- ...
- 【转载】在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...
- 执行命令行并等待完成(使用WaitForSingleObject达到目的)
function TDMDb.WaitExeFinish(const sCmdName: string):boolean; var StartupInfo: TStartupInfo; Process ...
- 如何在sublime编辑器中,执行命令行脚本
我有个愿意,在执行命令行时,不打开那个黑乎乎命令行窗口,如果编辑器内置支持就好了. 打开vs code 和 sublime,分别按快捷键 Ctrl + ·(tab键上面那个键),vs code可以提供 ...
- 在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...
- 通过web php 执行shell脚本,获取的结果与直接在命令行下获取的结果不同。
公司项目中的一项小功能,统计设备的连接数.其中用到shell脚本来获取已连接设备的统计.使用命令 /bin/netstat -an| grep ESTABLISHED | awk '{print $4 ...
随机推荐
- [转]MySQL 最基本的SQL语法/语句
MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下. DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...
- 去哪儿网输入框三种输入方式(selenium webdriver 干货)
在机票预定的页面,输入出发城市和到达城市输入框的时候, 发现直接使用sendkeys不好使, 大部分情况出现输入某城市后没有输入进去, 经过几天的研究,发现可以采取三种方式: 1. 先点击输入框,待弹 ...
- MySQL5.6 新特性之GTID
背景: MySQL5.6在5.5的基础上增加了一些改进,本文章先对其中一个一个比较大的改进"GTID"进行说明. 概念: GTID即全局事务ID(global transactio ...
- istringstream、ostringstream、stringstream 类简介
本文系转载,原文链接:http://www.cnblogs.com/gamesky/archive/2013/01/09/2852356.html ,如有侵权,请联系我:534624117@qq.co ...
- ORA-27101: shared memory realm does not exist
Oracle Error Tips by Burleson Consulting Oracle docs note this about ORA-27101: ORA-27101: shared me ...
- Logistic回归的使用
Logistic回归的使用和缺失值的处理 从疝气病预测病马的死亡率 数据集: UCI上的数据,368个样本,28个特征 测试方法: 交叉测试 实现细节: 1.数据中因为存在缺失值所以要进行预处理,这点 ...
- 参数max_allowed_packet
通信信息包是发送至MySQL服务器的单个SQL语句,或发送至客户端的单一行. 当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误 ...
- MySQL存储过程与存储函数的区别
语法定义上的区别就不说了,说一下其他的.如果有不正确的地方,还请大家指正. 1.总述存储函数和存储过程统称为存储例程(stored routine).两者的定义语法很相似,但却是不同的内容.存储函数限 ...
- 在android studio 中使用applicationid的问题
现在我需要对项目app的某个功能做性能测试,主要测试耗电量的多少. 1.我想到的方式是,我需要在同一台手机测试,同一个应用,需要安装在手机两次,第二次安装不覆盖第一次的安装. 在android stu ...
- [MySQL] Stored Procedures 【转载】
Stored routines (procedures and functions) can be particularly useful in certain situations: When mu ...