Delphi 执行控制台(console)程序获取返回结果
来源:互联网 发布:python的语法结构 编辑:程序博客网 时间:2024/06/07 18:40
function GetRunConsoleResult(FileName:String;Visibility:Integer;var mOutputs:string):Integer;var sa:TSecurityAttributes; hReadPipe,hWritePipe:THandle; ret:BOOL; strBuff:array[0..255] of char; lngBytesread:DWORD; WorkDir:String; StartupInfo:TStartupInfo; ProcessInfo:TProcessInformation;begin FillChar(sa,Sizeof(sa),#0); sa.nLength := Sizeof(sa); sa.bInheritHandle := True; sa.lpSecurityDescriptor := nil; if not(CreatePipe(hReadPipe, hWritePipe, @sa, 0)) then begin Result:=-2; //通道创建失败 end; WorkDir:=ExtractFileDir(Application.ExeName); FillChar(StartupInfo,Sizeof(StartupInfo),#0); StartupInfo.cb:=Sizeof(StartupInfo); StartupInfo.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; StartupInfo.wShowWindow:=Visibility; StartupInfo.hStdOutput:=hWritePipe; StartupInfo.hStdError:=hWritePipe; if not CreateProcess(nil, PChar(FileName), { pointer to command line string } @sa, { pointer to process security attributes } @sa, { pointer to thread security attributes } True, { handle inheritance flag } NORMAL_PRIORITY_CLASS, nil, { pointer to new environment block } PChar(WorkDir), { pointer to current directory name, PChar} StartupInfo, { pointer to STARTUPINFO } ProcessInfo) { pointer to PROCESS_INF } then Result := INFINITE {-1 进程创建失败} else begin CloseHandle(hWritePipe); mOutputs:=''; while ret do begin FillChar(strBuff,Sizeof(strBuff),#0); ret := ReadFile(hReadPipe, strBuff, 256, lngBytesread, nil); mOutputs := mOutputs + strBuff; end; Application.ProcessMessages; //等待console结束 WaitforSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, Cardinal(Result)); CloseHandle(ProcessInfo.hProcess); { to prevent memory leaks } CloseHandle(ProcessInfo.hThread); CloseHandle(hReadPipe); end;end;
调用方式:
GetRunConsoleResult(执行文件,SW_SHOWNORMAL,返回字符串); //函数执行成功返回 0
0 0
- Delphi 执行控制台(console)程序获取返回结果
- Delphi 执行控制台(console)程序获取返回结果
- js获取程序执行的时间长短 控制台之console。
- Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
- Console(控制台)程序暂停查看结果方法
- 获取控制台程序(Console)的输出内容
- 执行cmd并返回程序结果
- Java 程序中执行update返回结果
- C程序中如何获取shell命令执行结果和返回值
- Linux C 程序执行 shell 命令并获取返回结果的方法
- Delphi经典执行DOS并返回结果代码(收集的)
- c#.NET 调用命令控制台 并获取执行结果
- 执行控制台程序并且获得它的输出结果
- VC 获取外部程序执行结果
- console控制台程序隐藏窗口
- Delphi中利用管道重定向实现对控制台(Console)程序的操作
- 执行一个 console 程序
- delphi控制台程序
- 类的扩展, 延展
- Halcon模板匹配三
- 端口占用问题
- Unity两个手指放大图片的方法
- Unity串口通讯
- Delphi 执行控制台(console)程序获取返回结果
- 153,改变控件的位置,缩放大小与旋转角度
- 错误ERR_INCOMPLETE_CHUNKED_ENCODING解决方法
- MySQL中函数CONCAT及GROUP_CONCAT
- ETL AUTOMATION介绍
- linux简单易用的看门狗程序
- Unity中UGUI输入信息框
- LeetCode(131)Palindrome Partitioning
- spark Shuffle