WPF程序接收参数启动

每一个WPF应用程序,其实都有一个隐藏的Main函数。如果有的时候我们需要给WPF应用程序传递参数,我们需要自己写一个包含Main函数的类来实现。

首先定义一个MainApp类,这个类中必须有一个带参数的Main(string[] args)函数:

1
2
[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所定义的窗口。

1
2
3
App app = new App();
app.InitializeComponent();
app.Run();

这样就能启动原来的界面。

Process.StartInfo用来向被调用的进程传递信息

StartInfo.FileName确定调用的进程名称

StartInfo.Arguments传递被调用的进程Main(string [] args)中的args[]字符串数组

写了两个控制台程序

1.被调用的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 调用被调用程序的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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();
}
}
}

 

posted @   多见多闻  阅读(1234)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示