delphi7下运行CMD命令并获取输出_rundos中delphi7 代码找不到文件,但 cmd 命令行可以读取同一文件,-程序员宅基地

技术标签: delphi  

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;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tomyjohn/article/details/44156089

智能推荐

LeetCode 226 翻转-程序员宅基地

文章浏览阅读224次。问题:解题思路:把一个二叉树的 每一个节点的左右子树交换就会得到一个翻转之后的二叉树。解题结果:/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val

2. UE5 RPG使用动画模板创建多个动画蓝图_ue5 使用动画模板-程序员宅基地

文章浏览阅读687次,点赞6次,收藏11次。这里就需要介绍一下动画模板,我们可以将动画蓝图相同的内容放置到一个动画模板内,去修改需求也就不会需要单独的去修改每个动画蓝图。我们制作游戏的时候,角色会根据不同的武器表现出来不同的攻击动画,待机动画以及移动动画。在帧更新里面,获取角色移动组件是否存在,然后获取到角色的这一帧的移动长度,并转换为速度。如果设置的正确,则左侧的模型将会播放动画。到这里,一个简单的动画模板创建完成,接下来,我们将基于这个模版创建动画蓝图使用。在创建指定骨架使用的动画蓝图时,我们需要指定父类使用前面创建的动画蓝图的模板。_ue5 使用动画模板

Socket通信,实现简单的双人聊天功能_react+socket.io怎么进行两台电脑聊天-程序员宅基地

文章浏览阅读478次。Socket通信1.简单介绍学习Socket也只是通过一个小例子学习的,关于Socket原理目前只是了解到是基于TCP协议,关于TCP与UDP协议区别可以去百度详情查一下他们的区别之处,大体上是传输高效与安全方面的区别。2.代码实现关于双人聊天功能实现时候,大体分为一个客户端类,一个服务端类,服务器与客户端之间可以相互发送消息。在客户端和服务端中有监听类和发送类,实现互相之间发送消息。核心代码://监听消息及打印出ObjectInputStream ois = new Obje._react+socket.io怎么进行两台电脑聊天

[Java]JavaWeb学习笔记(尚硅谷2020旧版)_javaweb笔记 尚硅谷-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏32次。 Tomcat JavaWeb相关概念 Web资源的分类 常用的 Web 服务器 Tomcat 服务器和 Servlet 版本的对应关系 Tomcat的使用 下载 Tomcat目录介绍 启动Tomcat服务器方式一 常见启动失败情况 双击 startup.bat 文件出现一个小黑窗口一闪而过 常见JAVA_HOME配置失败情况 启动Tomcat服务器方式二 Tomcat 的停止 修改 Tomcat 的端口号 部暑 web 工程到_javaweb笔记 尚硅谷

linux curl命令_curl 输出到文件-程序员宅基地

文章浏览阅读1.8k次。curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。语法curl(选项..._curl 输出到文件

Flutter 常用插件_flutter 插件集合-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏18次。flutter 常用插件_flutter 插件集合

随便推点

宠物医院电子处方软件操作教程,兽医处方笺范例经验分享-程序员宅基地

文章浏览阅读759次,点赞20次,收藏12次。以下软件操作教程以,佳易王宠物店兽医电子处方管理系统软件为例说明软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载软件基本功能:权限管理,系统设置,开电子处方,处方查询,统计报表软件已内置数据库,可以下Z试用。兽医电子处方开单,使用A5纸打印【可以定制】

第二章 Flink集成Iceberg的集成方式及基本SQL使用_iceberg0.1 hive3.12 flink1.14-程序员宅基地

文章浏览阅读1.6k次。Flink集成Iceberg的集成方式及基本SQL使用_iceberg0.1 hive3.12 flink1.14

网站服务器高主频还是多核心,CPU核心多好还是主频高好?核心多和主频高区别介绍...-程序员宅基地

文章浏览阅读1.2k次。CPU Render,平均:100fps、最低:78fps、最高:148fps《古墓丽影:暗影》的Benchmark程序可以记录处理器渲染性能,所以既然是对比处理器,那么这一项性能就比较关键了。从测试结果可以看到:英特尔十代酷睿平台在CPU Render(渲染)测试中,平均:116fps、最低:63fps、最高:235fps;AMD三代锐龙平台在CPU Render测试中,平均:100fps、最低..._服务器处理大数据是多核好还是高频好

Kaggle 机器学习竞赛冠军及优胜者的源代码汇总_allstate kaggle-程序员宅基地

文章浏览阅读6.7k次。Kaggle 机器学习竞赛冠军及优胜者的源代码汇总_allstate kaggle

2023/9/17 基于pycharm的爬取豆瓣电影250(一)_如何用pycharm找电影-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏16次。最近用一周的时间进行学习,因此特地记录所学知识,并向外输出以此加深自己的印象。_如何用pycharm找电影

【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手_tcp中过滤tcp三次握手-程序员宅基地

文章浏览阅读3.3k次,点赞135次,收藏157次。wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。常用来检测网络问题、攻击溯源、或者分析底层通信机制。_tcp中过滤tcp三次握手

推荐文章

热门文章

相关标签