Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2225|回复: 0

有关TProcess之pipe疑问

[复制链接]

该用户从未签到

发表于 2012-5-5 00:47:46 | 显示全部楼层 |阅读模式
做了一个测试程序如下:

program project1;

{$mode objfpc}{$H+}

uses
  Classes, Process, SysUtils;

var
  FirstProcess: TProcess;
  Buffer: array[0..256] of char;
  ReadCount: Integer;
  ReadSize: Integer;
begin
  FirstProcess  := TProcess.Create(nil);

  FirstProcess.Options  := [poUsePipes];

  FirstProcess.CommandLine  := 'dir c:\windows';
  FirstProcess.Execute;

  while FirstProcess.Running or (FirstProcess.Output.NumBytesAvailable > 0) do
  begin
    if FirstProcess.Output.NumBytesAvailable > 0 then
    begin
      ReadSize := FirstProcess.Output.NumBytesAvailable;
      if ReadSize > SizeOf(Buffer) then
        ReadSize := SizeOf(Buffer);
      ReadCount := FirstProcess.Output.Read(Buffer[0], ReadSize);
      Write(StdOut, Copy(Buffer, 0, ReadCount));
    end;
  end;
  Beep;
  Sleep(3000);
  FirstProcess.Free;
end.

编译执行会出错,但如果把commandline改成
FirstProcess.CommandLine  := 'cmd.exe /c "dir c:\windows"';
就会正常执行,而测试用"ping localhost"命令则不需要这样设置。

对此很是头疼,不知怎样界定这些command,请达人指点,谢谢。
回复

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-6-17 08:27 , Processed in 0.053213 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表