[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.这两个大家应该都见 ...
随机推荐
- MVC+EasyUI 菜单导航的实现
一个简单的使用mvc+easyUi 动态菜单显示 直接上代码 前端 function initMenu() { $.get("/Admin/Home/GetNav", functi ...
- 清除系统日志及数据库(sql server)日志最佳实践
在一个项目中遇到的问题:系统日志过大,后来用delete语句删除了(相当的慢),结果数据库日志又变成很大了(差不多10G),所以又得把数据库日志删除. 方法: --备份系统中的部份日志--SELECT ...
- vue.js 2.0开发(4)
使用vue-cli,首先安装: npm install -g vue-cli 安装完了执行vue命令,会出现 vue init <template-name> <project-na ...
- java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)
一.目前的号码段(2016-12-8更新) 二.代码 package com.test; import java.util.regex.Pattern; public class CheckPho ...
- c++ 使用shell命令
#include <iostream> #include <stdio.h> #include <vector> #include <unistd.h> ...
- 数据库—SQL语句
下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DEL ...
- C# 访问MongoDB 通用方法类
using MongoDB.Driver; using System; namespace MongoDBDemo { public class MongoDb { public MongoDb(st ...
- mysql优化笔记
query_cache_size 查询缓存 query_cache_type缓存是否打开 OFF/ON read_buffer_size读缓存SET GLOBAL query_cache_size=1 ...
- 数据库——DQL(语句查询)
查询的基本结构: 概念: 查询(DQL)是数据库中最为常用和复杂的一种SQL结构,学会编写查询SQL是程序员必须具备的能力. 要从数据库中查询数据,我们要使用SQL的SELECT语句.标准SELECT ...
- ThinkPad W520 在 Windows Server 2012 / R2 中安装驱动
1.安装Intel Chipset Device Software (INF Update Utility).2.安装ThinkPad ACPI电源管理驱动.3.安装电源管理软件.4.安装英特尔核芯显 ...