如何将命名参数列表传递给打开的 Windows 窗体应用程序
Posted
技术标签:
【中文标题】如何将命名参数列表传递给打开的 Windows 窗体应用程序【英文标题】:How to pass named parameter list to an opening windows form application 【发布时间】:2013-04-17 02:12:23 【问题描述】:我有一个 Windows 窗体应用程序 让我们称之为B 现在我有另一个应用程序。让我们称之为A
A 将 B 作为一个新进程启动 现在我想将命名参数列表传递给 B 并在 B 中使用它们 我该怎么做?
我的意思是示例参数列表
job:"computer engineer",age:"32",experience:"3 years"
这些参数列表也应该是可选的。有时我可能会传递 5 个参数,有时是 0
我将如何在 B 应用程序启动时读取这些参数
那么这样做的方法是什么?谢谢
c#
【问题讨论】:
【参考方案1】:假设您使用 Process.Start 调用您的“B”进程,以下应该可以工作:
System.Diagnostics.Process.Start(string fileName, string arguments)
并且您的“B”进程主线程应该接受一个数组来容纳可能的参数,然后您可以对其进行迭代。
static void Main(string[] args)
//your code to decipher arguments here
【讨论】:
是的,我将使用进程启动。但我怎样才能将它们读取为命名参数? 我不确定这里的最佳做法,但也许这个建议可以激发更好的响应或让您开始走上正确的道路。如果您将参数作为字符串传递(例如“job: CE”“age: 32”“exp: 3 years”),那么您可以运行一个 switch 语句来评估字符串的前三个字符以将其指向正确的方向。显然这不是最优雅的解决方案(它迫使您在与实际参数相同的字符串中硬编码 3 个字母代码),但它有可能实现您的目标。 您的 switch 语句需要进入一个循环,该循环遍历您的数组以解析每个参数。【参考方案2】:我可以想到两种方法。
首先是使用命令行参数。如果您将进程(从命令行)称为:
your.exe -job "computer engineer" -age 32 -experience "3 years"
然后,您可以通过在进程的启动选项中设置arguments
在您的代码中复制它。然后,您必须设置您的流程来查找所有这些标志,记住它们都可以是可选的,等等。
第二个选项(这更灵活一点)是创建一个文件来保存您传递的值,并从您启动的进程中读取它。您可以制作此 XML 或直接值。
编辑:这是第一个选项的示例
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "your exe path";
startInfo.Arguments = "your argument list";
p.StartInfo = startInfo;
p.Start();
我不想告诉你如何格式化你的参数字符串;这应该由您决定。但是,我会推荐a library 使用它可能会使接收端的解析更容易一些。
【讨论】:
我将使用这个来启动:System.Diagnostics.Process.Start。你能在你的帖子中举个例子吗谢谢 @MonsterMMORPG 查看我的编辑,并查看库链接以获取解析参数的一些帮助。以上是关于如何将命名参数列表传递给打开的 Windows 窗体应用程序的主要内容,如果未能解决你的问题,请参考以下文章