防止从命名管道启动弹出窗口

时间:2017-08-03 21:32:09

标签: pipe adb freepascal

我有一个运行'via'管道的cmd,就像这样创建:

  console:=TProcess.Create(Nil);
  console.Commandline:='cmd.exe';
  console.Options:=[poUsePipes,poNoConsole,poStderrToOutPut];
  console.CurrentDirectory:=apppath+'data\';
  console.ShowWindow:=swoHIDE;
  console.execute;

现在,我的问题是我正在使用cmd通过adb(这是另一个命令行工具)向Android设备发送命令。 当cmd窗口本身被隐藏时,每个adb调用都会创建新的控制台窗口,该窗口会在自动关闭后立即生成 如何完全隐藏所有这些窗口?

1 个答案:

答案 0 :(得分:2)

每次执行adb.exe时,如果cmd.exe尚未调用,则需要启动cmd.exe的新实例。因此,对于您正在尝试的内容,只需运行cmd.exe 一次并保持会话打开,然后使用{{}通过现有STDIN管道向其写入命令(如ADB命令) 1}}属性。

更好的是,您可以直接在自己的代码communicating over a TCP/USB connection to the device itself中实现ADB协议。那么你根本不需要运行TProcess.Input

或者,为了使事情变得更简单,您可以将adb.exe作为本地服务器运行,然后communicate with it over a TCP connection而不是adb.exe。这是cmd.exe在作为客户端运行时在内部执行的操作。