小编yoz*_*zey的帖子

如何从GUI应用程序向控制台应用程序发送命令

我有一个控制台应用程序,我从GUI应用程序启动.控制台应用程序获取文件名的参数以进行解析和处理.目前我能够捕获其输出并将其显示在GUI应用程序中,但我希望能够向其发送命令以便控制甚至停止其执行.

如何向控制台应用程序发送命令或字符串或任何内容,最好使用我打开的管道来读取其输出?

const
  CReadBuffer = 2400;
var
  saSecurity: TSecurityAttributes;
  hRead: THandle;
  hWrite: THandle;
  suiStartup: TStartupInfo;
  piProcess: TProcessInformation;
  pBuffer: array[0..CReadBuffer] of AnsiChar;
  dRead: DWord;
  dRunning: DWord;
  dWritten: DWord;
  Command: String;
  BytesLeft: Integer;
  BytesAvail: Integer;
begin
  saSecurity.nLength := SizeOf(TSecurityAttributes);
  saSecurity.bInheritHandle := True;
  saSecurity.lpSecurityDescriptor := nil;

  if CreatePipe(hRead, hWrite, @saSecurity, 0) then
  begin
    FillChar(suiStartup, SizeOf(TStartupInfo), #0);
    suiStartup.cb := SizeOf(TStartupInfo);
    suiStartup.hStdInput := hRead;
    suiStartup.hStdOutput := hWrite;
    suiStartup.hStdError := hWrite;
    suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
    suiStartup.wShowWindow := SW_HIDE;
    Command := 'messageparser.exe c:\messagefile.msg';
    UniqueString(Command);
    if CreateProcess(nil, …
Run Code Online (Sandbox Code Playgroud)

delphi console

9
推荐指数
1
解决办法
6174
查看次数

Delphi中MainForm的OnShow事件中的ExitProcess

我有一个应用程序,在启动时检查一些条件,并在主窗体的OnShow事件中启动外部程序.问题是如果启动外部程序时出错,我希望应用程序立即终止.但是有一个问题,因为EurekaLog捕获了我的异常并以某种方式通过否定所有调用Application.Teminate和任何其他正常关闭方法来中断消息循环.

所以这是我的问题,当这种情况存在时,ExitProcess是否是立即终止我的应用程序的最佳途径?

delphi winapi

8
推荐指数
1
解决办法
1961
查看次数

标签 统计

delphi ×2

console ×1

winapi ×1