http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3884|回复: 4

[其他] C#注册表带命令行自启动方法的实现

[复制链接]
发表于 2015-8-20 19:48:08 | 显示全部楼层 |阅读模式
1金钱
带命令行的自启动怎么实现呢。我需要传入参数给From1,来判断程序是自启还是手动双击启动的。来实现,如果是自启动的话,就自动最小化Form1. 如果不是的话,就正常模式弹出Form1.

static void Main(string[] args)   
{               
                        bool ret;
                        System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out ret);
                        if (ret)
                        {
                                Application.EnableVisualStyles();
                                System.Windows.Forms.Application.DoEvents();           
                                if (args.Length == 1)
                                        Application.Run(new Form1(args[0]));//如果有参数则传入
                                
                                else Application.Run(new Form1());  
                                mutex.ReleaseMutex();
                        }
。。。。。。。。。。。。。。。
}
我在VS中设置的命令行参数


注册表添加自启动,路径里面我这样子写的:


实际注册表中的效果是:


但经过测试,重启了windows,程序成功启动了,为何没有参数传入呢。
按道理单步调试的时候是有值进来了的。自启动是没有参数传进来的。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-8-21 08:06:05 | 显示全部楼层
我只是路过打酱油的。
回复

使用道具 举报

发表于 2015-8-21 08:44:28 | 显示全部楼层
学习了。
回复

使用道具 举报

 楼主| 发表于 2015-8-23 07:17:33 | 显示全部楼层

C#winform 判断是开机启动还是双击手动启动。如果是开机自启动,则窗体最小化,如果是双击启动则正常显示窗体。总算自己搞定了。具体的办法,加入命令行参数到注册表启动项里面。
添加注册表命令行启动.jpg

[C#] 纯文本查看 复制代码
private void SetAutoStar()
		{
			try
			{
				string filepath = Assembly.GetExecutingAssembly().Location;
				string runName = Path.GetFileNameWithoutExtension(filepath);

				RegistryKey hkml = Registry.LocalMachine;
				RegistryKey runKey = hkml.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
				
				runKey.SetValue("xcgk", "\"" + filepath + "\" -AutoRun");
				runKey.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message);
			}

		}


判断启动方式:
判断启动方式.jpg
[C#] 纯文本查看 复制代码
string AutoRun = "";

			try
			{
				AutoRun=Environment.GetCommandLineArgs()[1];//以此判断是否自动开机或者手动启动。

			}
			catch 
			{
				
				
			}
if (AutoRun !="")//如果是从注册表启动,则开机启动之后最小化
			{
				this.WindowState = FormWindowState.Minimized;
				
			}else
			{
				return;
			}



回复

使用道具 举报

发表于 2015-8-24 11:29:04 | 显示全部楼层
你有没有办法做到以服务的方式启动特定的程序呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-5 10:44

© 2014-2021

快速回复 返回顶部 返回列表