2010-05-22 114 views
0

我需要从一个exe文件从运行exe文件

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

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


     startInfo.Arguments = ?? 

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

任何帮助,请的方法?

的可执行文件是我的,但我使用的Web应用程序的东西有问题,所以我认为这将是更好地称呼其为一个过程

感谢

+0

我已经编译了我的最后一个.exe文件已经很多年了,所以我可能是错的,但这甚至有可能吗?我真的不这么认为。 – 2010-05-22 11:33:41

+0

我也不知道:/ – Lilz 2010-05-22 11:34:07

回答

1

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

要调用特定的方法,应用程序将不得不公开一个方法名称及其参数的命令行参数(或多个参数)。这意味着改变应用程序来解释这些参数并调用适当的方法。

您需要修改“exeParser”来接受参数,然后对这些参数进行操作。

例如你可以添加:

\方法[名] \参数[1],[2],[3]

然后分析该得到的名称和参数列表。

如果你只有一个或两个方法,你可以硬编码开关:如果你有更多或想使代码更通用的,那么你就需要使用反射来获取方法

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

和叫它。

+0

这就是我想要做的事。我试图从项目中调用这个exe文件。发送参数并获得结果。 – Lilz 2010-05-22 11:39:05

+0

@Lily - 那么你需要找出'exeParser'接受的参数。你有任何文件吗? – ChrisF 2010-05-22 11:42:03

+0

我自己创造了它,所以我可以让它接受任何东西。我使用它为Proxem Antelope api 我不知道如何返回结果,因为main将只返回void – Lilz 2010-05-22 11:48:27

0

你不能,除非方法在程序集中公开暴露。当然,如果这个可执行文件是一个未被混淆的.NET.exe,那么你可能会使用类似Reflector的东西来反汇编代码并将其复制到你的程序中(不推荐),但是你必须检查如果您不拥有相关的可执行文件,那么这样做是合法的。