c# 设置winform程序为默认打开软件 在运行中获取参数
2016-08-20 00:22
656 查看
1.右键→打开方式→选择默认程序→选择winform程序
2.修改Program.cs
判断注册的事件是否存在,如果不存在则运行实例,并把参数传入MainForm里,如果存在则把参数写到txt文件中,然后发事件,退出
3.MainForm.cs
当收到第二个进程的通知时,读取txt中参数(MP3路径),显示窗体
4.打完收工
2.修改Program.cs
判断注册的事件是否存在,如果不存在则运行实例,并把参数传入MainForm里,如果存在则把参数写到txt文件中,然后发事件,退出
using Microsoft.Win32; using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Windows.Forms; namespace SimpleMusicPlayer { static class Program { public static EventWaitHandle ProgramStarted; /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { // 尝试创建一个命名事件 bool createNew; ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "MyStartEvent", out createNew); // 如果该命名事件已经存在(存在有前一个运行实例),则发事件通知并退出 if (!createNew) { // 先写一些数据到txt中,以便传递给前一个运行实例 //Registry.SetValue(@"HKEY_CURRENT_USER\Software\MyMusic", "", string.Join(",", args)); string fileName = Application.StartupPath + "\\args.txt"; StreamWriter sw = new StreamWriter(fileName, false); sw.WriteLine(args[0]);//开始写入值 sw.Close(); ProgramStarted.Set(); return; } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm(args.Length==0?null:args[0])); } } } }
3.MainForm.cs
当收到第二个进程的通知时,读取txt中参数(MP3路径),显示窗体
public MainForm(string param) { InitializeComponent(); if (param != null) setFileName(param); ThreadPool.RegisterWaitForSingleObject(Program.ProgramStarted, OnProgramStarted, null, -1, false); } private void setFileName(string param) { //通过参数(mp3文件路径)获取mp3信息 } // 当收到第二个进程的通知时,显示窗体 private void OnProgramStarted(object state, bool timeout) { if (this.InvokeRequired) { this.Invoke(new WaitOrTimerCallback(OnProgramStarted), state, timeout); } else { string param = getArgs(Application.StartupPath + "\\args.txt"); if (param != null) setFileName(param); this.WindowState = FormWindowState.Normal; } } //读取txt文件中参数 private string getArgs(string fileName) { if (File.Exists(fileName)) { //存在 StreamReader stream = new StreamReader(fileName, Encoding.UTF8); string str = stream.ReadLine(); stream.Close(); return str; } else { return null; } }
4.打完收工
相关文章推荐
- C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板
- c# winform 获取当前程序运行根目录,winform 打开程序运行的文件夹
- C# 设置程序开机自动运行/设置&获取程序的安装路径
- c# winform 获取当前程序运行根目录
- 微信小程序不获取用户直接打开默认设置地图
- c# winform将打开的程序置于后台运行的代码
- c# winform 获取当前程序运行根目录 (转)
- C# Winform程序如何获取运行路径, 控制台也可以
- c#WinForm 程序单实例运行并打开前一个实例(Mutex+API)
- C# WinForm 获取当前程序运行根目录
- 在C#中如何获取系统中所安装的所有软件信息,还有如何打开系统中某个程序
- c# winform 获取当前程序运行根目录
- c# winform 获取当前程序运行根目录
- 两个小知识:C#如何设置开机启动时自动执行程序|C# WinForm打开超链接
- c# winform程序如何获取命令行带参数启动时的参数
- C# Winform程序如何获取运行路径
- c# winform 获取当前程序运行根目录
- c# winform 获取程序是否在运行、关闭在运行的程序
- C# winform 判断程序是否已经在运行 判断程序是否已经打开
- c# winform 获取当前程序运行根目录