delphi获取DOS命令行输出函数 运行CMD命令并获取结果
procedure TForm1.Button4Click(Sender: TObject);
var
hReadPipe,hWritePipe:THandle;
si:STARTUPINFO;
lsa:SECURITY_ATTRIBUTES;
pi:PROCESS_INFORMATION;
mDosScreen:String;
cchReadBuffer:DWORD;
ph:PansiChar;
fname:PChar;
i,j:integer;
str,TEMP,ip:string;
K:Integer;
begin
Memo1.Clear;
fname:=allocmem(255);
ph:=AllocMem(5000);
lsa.nLength :=sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor :=nil;
lsa.bInheritHandle :=True;
try
try
if CreatePipe(hReadPipe,hWritePipe,@lsa,0)=false then
begin
ShowMessage('Can not create pipe!');
exit;
end;
fillchar(si,sizeof(STARTUPINFO),0);
si.cb :=sizeof(STARTUPINFO);
si.dwFlags :=(STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
si.wShowWindow :=SW_HIDE;
si.hStdOutput :=hWritePipe;
StrPCopy(fname,'ping baidu.com');//执行命令
if CreateProcess( nil, fname, nil, nil, true, 0, nil, nil, si, pi) = False then
begin
ShowMessage('can not create process');
FreeMem(ph);
FreeMem(fname);
Exit;
end;
while(true) do
begin
if not PeekNamedPipe(hReadPipe,ph,1,@cchReadBuffer,nil,nil) then break;
if cchReadBuffer<>0 then
begin
if ReadFile(hReadPipe,ph^,4096,cchReadBuffer,nil)=false then break;
ph[cchReadbuffer]:=chr(0);
if ph<>'' then Memo1.Lines.Add(ph);
end
else if(WaitForSingleObject(pi.hProcess ,0)=WAIT_OBJECT_0) then break;
Application.ProcessMessages;
Sleep(100);
end;
ph[cchReadBuffer]:=chr(0);
if ph<>'' then Memo1.Lines.Add(StringReplace(ph,#13#10,'',[rfReplaceAll]));
CloseHandle(hReadPipe);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(hWritePipe);
FreeMem(ph);
FreeMem(fname);
except
end;
finally
end;
end;
delphi获取DOS命令行输出函数 运行CMD命令并获取结果的更多相关文章
- Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
该代码片段来自于: http://www.sharejs.com/codes/delphi/8999,发现好多代码,想用的时候找不到,记录一下备用 function RunDosCommand(Com ...
- [delphi]运行cmd命令,并取得输出字符
http://blog.csdn.net/nerdy/article/details/8969189 [delphi]运行cmd命令,并取得输出字符 标签: delphiCMD命令 2013-05- ...
- jmeter命令行模式运行,实时获取压测结果
jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script. ...
- Atitit.运行cmd 命令行 php
Atitit.运行cmd 命令行 php 1. 运行cmd 命令行,调用系统命令的基础 1 1.1. 实际运行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题.程序文件读取编码设置 1 1 ...
- C#隐式运行CMD命令(隐藏命令窗口)
原文 C#隐式运行CMD命令(隐藏命令窗口) 本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运 ...
- 在命令行中运行eclipse中创建的java项目
在命令行中运行eclipse中创建的java项目 博客分类: java相关 javaeclipse命令行 由于项目要求,需要对eclipse中的项目进行打包,似的可以在客户机上不装eclipse的情 ...
- Oracle安装后命令行中运行sqlplus / as sysdba出现错误ora-01031:insufficient privileges
Win10安装Oracle后命令行中运行sqlplus as sysdba出现错误ora-01031insufficient privileges的解决方法 情景描述 错误样例 错误分析 解决方法 情 ...
- ThinkPHP3.1.2 使用cli命令行模式运行
ThinkPHP3.1.2 使用cli命令行模式运行 标签(空格分隔): php 前言 thinkphp3.1.2 需要使用cli方法运行脚本 折腾了一天才搞定 3.1.2的版本真的很古老 解决 增加 ...
- 如何使用命令行直接运行PHP脚本程序
在我的博客里有一些文章是和解码或者处理文件有关,其中有些自动化工作比较简单,使用了一些PHP程序来编写处理,这样写起程序来也比较快,因为是纯过程的任务,不想用C#来处理. 写完PHP的脚本程序后,保存 ...
- 命令行编译运行Java
首先要安装JDK,然后设置环境变量Path,添加C:\Program Files (x86)\Java\jdk1.8.0_66\bin 然后建立一个名为j.java的文件,里面加入如下代码: publ ...
随机推荐
- IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的
1.引言 好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程. 文章中,我将从如 ...
- [密码管理/信息安全] KeePass Java 客户端 : KeePassJava2
序:续<KeePass:密码管理工具> [密码管理/信息安全] 密码管理工具:KeePass vs LastPass vs 1Password - 博客园/千千寰宇 [推荐] 概述 Kee ...
- zsh 切换root用户后,命令执行后要卡顿2s左右
在 oh-my-zsh 进入 包含 git 仓库目录时,会变的比平时慢/卡顿 原因是因为 oh-my-zsh 要**获取 git 更新信息 ** **解决办法: ** 设置 oh-my-zsh 不读取 ...
- ABAP配置:OY01 定义国家/地区
配置:OY01 定义国家/地区 事务代码:OY01 配置路径: SPRO-ABAP平台-常规设置-设置国家-定义国家/地区 配置路径截图: 配置描述: 国家是SAP里面一个非常重要的概念,SAP国家概 ...
- Springboot 整合 xxl-job
前言 很久很久以前写过好几篇关于定时任务的使用系列的文章: 这一篇是最简单的,就是单纯跑跑定时任务,那你看这篇就行,没必要用xxljob(因为xxljob要跑服务端,然后自己服务作为客户端接入): 文 ...
- Loadrunner11压测场景时最多跑5000个Vuser的问题解决办法
当我在用Loadrunner11压测场景时,设置Start Vusers是10000个.但实际运行是发现大约跑到5000个左右,后面的基本都是异常.如图: 查看Vusers运行详情: Error... ...
- 路由协议过程概述--ospf-01
路由是数据通信网络中最基本的要素.路由信息就是指导报文发送的路径信息,路由的过程就是报文转发的过程. 根据路由目的地的不同,路由可划分为: 网段路由:目的地为网段,IPv4地址子网掩码长度小于32位或 ...
- TiDB体系架构
本文分享自天翼云开发者社区<TiDB体系架构>,作者:x****n 如图所示,TiDB体系中三大组成部分:PD.TiDB Server.TiKV 1.PD:负责产生全局的TSO时间.控制R ...
- 绝了,一招解决DeepSeek 提示“服务器繁忙,请稍后再试” 卡顿问题!(保姆级教程)
大家好,我是狂师. 现在 AI 圈里讨论最多的话题就是:"国产之光DeepSeek了". 但用过的人也知道,是真的卡.动不动就提示:"服务器繁忙,请稍后再试" ...
- flutter-TextField垂直居中
decoration: InputDecoration( contentPadding: EdgeInsets.symmetric(vertical: 0), // border: InputBord ...