XE版本 运行cmd命令,并取得输出字符
来源:互联网 发布:巫师3年度版ps4pro优化 编辑:程序博客网 时间:2024/04/29 18:59
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: TStartupInfoA; 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 := CreateProcessA(nil, // lpApplicationName: PChar PAnsiChar(AnsiString(CommandLine)), // lpCommandLine: PAnsiChar 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');
D7改为
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);
XE强制 AnsiChar
0 0
- XE版本 运行cmd命令,并取得输出字符
- [delphi]运行cmd命令,并取得输出字符
- [delphi]运行cmd命令,并取得输出字符
- java运行cmd命令并显示输出信息的例子
- delphi7下运行CMD命令并获取输出
- Java运行cmd命令并显示输出信息
- C++获取CMD命令输出的字符
- winform运行后台运行cmd并实时输出运行信息
- xe cmd
- python执行系统命令并取得输出内容
- GO语言运行cmd命令逐行实时输出执行过程
- GO语言运行cmd命令逐行实时输出执行过程
- C语言使用cmd命令并获取输出方法
- C语言使用cmd命令并获取输出方法
- WinForm调用CMD命令并实时输出结果到TextBox
- JAVA中调用CMD命令,并输出执行结果
- C语言使用cmd命令并获取输出方法
- CMD命令字符
- web语义化
- 可扩展Web架构与分布式系统
- 第三章的员工打卡
- org.apache.ibatis.executor.ExecutorException: No constructor found in com.contentsales.meta.User
- 【4Large-Style】前端框架设计——Button 的设计思路
- XE版本 运行cmd命令,并取得输出字符
- iOS 图片压缩 —— HERO博客
- 什么是线程安全和线程不安全
- mysql安装问题
- RESTful API 设计指南
- SSH添加互信
- 考研初试总结
- hibernate操作数据库遇到问题的时候检查主键生成策略
- 鸟哥的Linux私房菜学习笔记--shell入门