使用动态参数调用可执行文件

本文关键字:调用 可执行文件 参数 动态 | 更新日期: 2023-09-27 18:25:37

我正在调用Unity项目中的可执行文件。可执行文件包含一个与计时器一起工作的功能(预定义的时间,例如10秒)。我想要的是稍微改变一下功能,而不是用定时器来运行,以向.exe提供一个布尔标志作为输入,用它我可以继续执行或停止可执行文件。但是,要做到这一点,我必须向.exe提供动态输入。有可能做到吗?如果可能的话,我怎么能在不花费大量系统资源的情况下做到这一点?

编辑:

void record(){
    string[] args = { path, dataDir, Date+"''", name, surname };
    System.Diagnostics.Process.Start(execDir, String.Join(" ", args));  
}

OnGUI代码:

if (GUI.Button (new Rect (150,250, 100, 50), "RECORD")) {
    record();
}
if (GUI.Button (new Rect (270,250, 100, 50), "STOP")) {
        stop_recording();
}

这个函数记录调用一个可执行文件,该可执行文件将一些内容写入二进制文件。我还有一个"停止"按钮,我想在其中添加标志。当按下按钮时,标志将为true,我想将该值作为参数解析到execDir可执行文件中。

使用动态参数调用可执行文件

我认为您想要做的是将命令传递到运行控制台应用程序上,对吗?

首先,这完全取决于您正在运行的可执行文件。如果可执行文件除了一个简单的"time_to_run"命令行参数之外没有公开任何控件,或者每次运行它时都启动一个新实例,而您没有此可执行文件的源文件或无法编译它,那么您就没有选择了。然而,如果你能接触到来源或自己写的,你可以做很多事情。

应用程序允许以各种方式进行外部控制。

  1. 应用程序可以从流中读取控制信息(stdin、内存映射文件、命名管道等)-如果您有权访问此可执行文件的源代码,您可以让它读取这些源中的任何一个,并解析命令并执行它
  2. 使用跨进程同步对象(如命名事件)来停止/启动特定功能。这些事件的名称可以事先商定
  3. 使控制台应用程序成为单例。虽然这在技术上与2(只允许自己的一个实例)+1(将任何新命令传递给"旧"应用程序)相同,但它允许简单使用,无需任何特殊编程
  4. 使用.NET远程处理
  5. 使用WCF

选择吧!:)