2010-05-22 221 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的東西來反彙編代碼並將其複製到你的程序中(不推薦),但是你必須檢查如果您不擁有相關的可執行文件,那麼這樣做是合法的。