从控制台应用程序返回一个字符串

我真正想做的就是这个

static string Main(string[] args) 

但这不起作用,你唯一的选择是voidint 。 那么,有什么不同的方法可以返回我需要返回给调用应用程序的字符串?

背景

我需要编写一个专门设计用于从另一个应用程序调用的控制台应用程序

 Process.Start("MyCode.exe -Option 12aaa1234"); 

该调用程序如何接收从该可执行文件返回的字符串?

研究

据我所知,此时我唯一的选择是让调用应用程序在启动之前将监听流附加到流程的标准输出流,并使用Console.Out.Write从里面发送“return”可执行文件。 这实际上是这样做的唯一方法,还是我可以使用不同/更好的东西?

这实际上是这样做的唯一方法,还是我可以使用不同/更好的东西?

这不是唯一的方法,但它是最常见的。

其他选项将涉及某种forms的进程间通信 ,这可能会对单个字符串进行更多的开发工作。

请注意,如果调用应用程序是.NET应用程序, 并且您可以控制这两个应用程序,那么编写类库而不是控制台应用程序可能更有意义。 这将允许您将代码完全分开,但让可执行文件“调入”您的库以获取字符串数据。

想法1:

使用MyCode.exe创建一个加密的文本文件,该文件保存在指定的路径中,然后可以在当前应用程序中解密并读取。

在应用程序:“MyCode.exe”中,添加以下代码:

 public void ReturnToOther() { string ToReturn = "MyString"; System.IO.File.WriteAllText("Path", Encrypt(ToReturn)); } public String Encrypt(string ToEncrypt) { string Encrypted = null char[] Array = ToEncrypt.ToCharArray(); for (int i = 0; i < Array.Length; i++) { Encrypted += Convert.ToString(Convert.ToChar(Convert.ToInt32(Array[i]) + 15)); } return Encrypted; } 

在您正在制作的应用程序中:

 public void GetString() { string STR = Decrypt(System.IO.File.ReadAllText("Path")); Console.WriteLine("The string is: {0}", STR); } // If you want to keep this running before the file exists, use this: /* public void GetString() { for(int i = 0; i > -1; ++i) { if(System.IO.File.Exists("Path")) { string STR = Decrypt(System.IO.File.ReadAllText("Path")); Console.WriteLine("The string is: {0}", STR); break; } else { //Do something if you want } } } */ public String Decrypt(string ToDecrypt) { string Decrypted = null char[] Array = ToDecrypt.ToCharArray(); for (int i = 0; i < Array.Length; i++) { Decrypted += Convert.ToString(Convert.ToChar(Convert.ToInt32(Array[i]) - 15)); } return Decrypted; } 

想法2:

使用TCP将字符串上传到端口,例如LocalHost(127.0.0.1),然后使用TCP侦听器接收正在开发的应用程序上的字符串

关于TCP的文章 - http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx

希望这可以帮助 :)

编辑:

看看套接字: http : //msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx