WPF程序接收参数启动
每一个WPF应用程序,其实都有一个隐藏的Main函数。如果有的时候我们需要给WPF应用程序传递参数,我们需要自己写一个包含Main函数的类来实现。
首先定义一个MainApp类,这个类中必须有一个带参数的Main(string[] args)函数:
[STAThread]
public static void Main(string[] args){...}
外部传递过来的参数就在string[] args里面,例如传递的参数是字符串“1 2 3”,则args的内容是args[0]="1",args[1]="2",args[2]="3",每个数组元素间是以空格分隔的。
然后,将带有Main函数的MainApp类设置为启动对象,选择当前项目->然后右键->选择属性->应用程序面板,设置启动对象。
这样打开程序,程序就会从MainApp类的Main函数启动,而不是原来隐藏的Main函数。但是这并没有结束,我们接收到参数以后,还需要启动以前的应用程序。
在项目中应该有一个App.xaml和一个App.xaml.cs文件。他们是一个自动生成的Application类,在App.xaml里面设置程序的启动页面StartupUri="Window.xaml",也就是我们原先的程序界面。
我们需要在新的MainApp类的Main函数最后实例化这个App类,然后运行,以启动Window.xaml所定义的窗口。
App app = new App(); app.InitializeComponent(); app.Run();
这样就能启动原来的界面。
Process.StartInfo用来向被调用的进程传递信息
StartInfo.FileName确定调用的进程名称
StartInfo.Arguments传递被调用的进程Main(string [] args)中的args[]字符串数组
写了两个控制台程序
1.被调用的程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Process信息传递1
{
class Program
{
static void Main(string[] args)
{
foreach(string str in args)
{
Console.WriteLine(str);
}
Console.ReadKey();
}
}
}
2 调用被调用程序的程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace Process_信息传递
{
class Program
{
static void Main(string[] args)
{
Process process = new Process();
process.StartInfo.FileName = @"C:\Users\XXX\Desktop\C#\Process信息传递1\Process信息传递1\bin\Debug\Process信息传递1.exe";
process.StartInfo.Arguments = String.Format("大娃 二娃");//Arguments 传递的是Main(string []args)中的字符串数组,通常靠空格分隔字符串
process.Start();
Console.ReadKey();
}
}
}


浙公网安备 33010602011771号