1.右键→打开方式→选择默认程序→选择winform程序

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[]);//开始写入值
sw.Close(); ProgramStarted.Set();
return;
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm(args.Length==?null:args[]));
} } }
}

3.MainForm.cs

当收到第二个进程的通知时,读取txt中参数(MP3路径),显示窗体

     public MainForm(string param)
{
InitializeComponent(); if (param != null)
setFileName(param); ThreadPool.RegisterWaitForSingleObject(Program.ProgramStarted, OnProgramStarted, null, -, 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程序为默认打开软件 在运行中获取参数的更多相关文章

  1. window 下Notepad++设置为文本文件的默认打开程序失败

    1.右键Notepad++的可执行程序,选择"属性"  -- "兼容性" , 设置Notepad++以管理员的身份运行 2.打开Notepad++ ," ...

  2. 不能设置sublime text作为默认打开程序

    删除 HKEY_CURRENT_USER\Software\Classes\Applications下的Sublime_Text.exe项.你就发现可以设置为默认打开方式了

  3. Windows中与系统关联自己开发的程序(默认打开方式、图标、右击菜单等)

    1. 默认打开方式 1.1. 代码支持 在Windows下,某个特定后缀名类型的文件,如果要双击时默认用某个程序(比如自己开发的WinForm程序)打开,代码中首先肯定要支持直接根据这个文件进行下一步 ...

  4. 程序ajax请求公共组件app-jquery-http.js中url参数部分的项目应用

    结合微信登录以及微信支付的案例:= =||| (案例比较奇葩复杂) 简述项目流程: 1.获取用于公众号支付的openid(公众平台):在微信内置浏览器中打开网页链接,刚进入页面就通过微信公众平台获取该 ...

  5. h5与小程序互相跳转,传参和获取参数

    1.h5跳转到小程序 首先引入js文件 <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js">< ...

  6. C# winform应用程序仅能打开一个进程运行

    判断程序是否已经运行,使程序只能运行一个实例: 方法1: //这种检测进程的名的方法,并不绝对有效.因为打开第一个实例后,将运行文件改名后,还是可以运行第二个实例. private static bo ...

  7. winform程序限制只能打开一个进程

      有很多方案,先来最傻瓜式的  : static class Program     {         /// <summary>         /// 应用程序的主入口点.     ...

  8. 设置Android程序的默认安装位置

    修改 AndroidManifest.xml 文件: <manifest xmlns:android="http://schemas.android.com/apk/res/andro ...

  9. 设置Qt程序在Windows开机后自动运行

    (转自:http://blog.csdn.net/weiren2006/article/details/7443362) 主要原理是修改Windows的注册表来实现的,Qt的QSettings提供了访 ...

随机推荐

  1. Scalaz(24)- 泛函数据结构: Tree-数据游览及维护

    上节我们讨论了Zipper-串形不可变集合(immutable sequential collection)游标,在串形集合中左右游走及元素维护操作.这篇我们谈谈Tree.在电子商务应用中对于xml, ...

  2. 泛函编程(37)-泛函Stream IO:通用的IO处理过程-Free Process

    在上两篇讨论中我们介绍了IO Process:Process[I,O],它的工作原理.函数组合等.很容易想象,一个完整的IO程序是由 数据源+处理过程+数据终点: Source->Process ...

  3. Node.js包

     1.app.js 2.m_p包下package.json 3.index.js  入口模块

  4. JPA persistence

    Play provides a set of very useful helpers to simplify the management of your JPA entities. Note tha ...

  5. 为友盟消息推送开发的PHP SDK(composer版):可以按省发Android push

    一直以来APP希望按省市县推送Android push,只能自己分析用户经纬度,打tag发送. 现在终于有服务商提供了. 友盟消息推送 可以“按省推送”,很方便. 我为友盟做了PHP SDK(comp ...

  6. Javascript获取随机数

    <script type="text/javascript"> function getRandom(n,m){ var n=Number(n); //强制转换成数字 ...

  7. Click Magick – 下一代点击跟踪和链接管理

    Click Magick 是新一代的广告跟踪和链接管理系统,让每一个点击都能给你带去更多的利润.它是专门设计来跟踪所有类型的点击计费广告,包括从谷歌,必应和 Facebook 的 PPC 广告,就好像 ...

  8. 如何停止CSS3的动画?

    前言 我们在移动端一般使用zepto框架,与其说zepto是jquery的轻量级替代版,不如说是html5替代版我们在js中会用到animate方法执行动画,这个家伙可是真资格的动画,完全是css一点 ...

  9. Navigator对象、Screen对象

    Navigator对象:         Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象:   Navigator对象集合:plugins[] 返回对 ...

  10. jQuery原型方法.pushStack源码分析

    这次分析的方法跟前面不同,虽然pushStack也是原型方法之一,但是我们几乎从不用在页面调用,在参考手册里面也没有这个方法的使用说明,但是这个方法还是非常重要的,在使用很多jQuery的其他方式都会 ...