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(); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!