从exe文件运行方法

时间:2010-05-22 11:31:41

标签: process exe system.diagnostics

我需要从exe文件中调用一个方法

 ProcessStartInfo startInfo = new ProcessStartInfo(@"exeParser.exe");

        startInfo.WindowStyle = ProcessWindowStyle.Normal;
        startInfo.CreateNoWindow = false;
        startInfo.RedirectStandardOutput = true;
        startInfo.UseShellExecute = false;


        startInfo.Arguments = ??

我不知道如何调用方法并传递参数

请帮忙吗?

可执行文件是我的,但我在使用Web应用程序中的内容时遇到问题,所以我认为将其称为进程更好

由于

2 个答案:

答案 0 :(得分:1)

可执行文件只有一个通常称为“Main”的入口点。

要调用特定方法,应用程序必须为方法名称及其参数公开命令行参数(或多个)。这意味着更改应用程序以解释这些参数并调用适当的方法。

您需要修改“exeParser”以接受参数,然后对这些参数采取行动。

例如,您可以添加:

  

\ method [name] \ arguments [1],[2],[3]

然后解析它以获取名称和参数列表。

如果您只有一两种方法,则可以对开关进行硬编码:

switch (methodName)
{
     case "add":
         result = this.Add(arg1, arg2);
         break;
     case "subtract":
         result = this.Subtract(arg1, arg2);
         break;
     default:
         break;
}

如果您有更多或想要使代码更通用,那么您需要使用反射来获取方法并调用它。

答案 1 :(得分:0)

除非方法在程序集中公开,否则不能。

当然,如果可执行文件是一个没有混淆的.NET .exe,那么大概你可以使用像Reflector之类的东西来反汇编代码并在你的程序中复制它(不推荐),但你必须检查合法性如果您不拥有相关的可执行文件,请执行此操作。