多媒体软件通用操作(二、生成快捷方式以及延时启动程序)

一般多媒体软件都是需要开机自动启动的,偶尔也会需要用到延时启动,需要等待其他的硬件启动完成后我们的软件再启动,这就需要延时启动,废话不多说,上代码。

/// <summary>
    /// 快捷方式启动操作
    /// </summary>
    public static class StartUpUtil
    {
        static string StartUpPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
        /// <summary>
        /// 创建快捷方式
        /// </summary>
        /// <param name="productName">运行程序的名称</param>
        /// <param name="description">描述</param>
        /// <param name="iconLocation">图标路径</param>
        public static void SetupStartup(string productName, string description = null, string iconLocation = null)
        {
            CreateShortcut(StartUpPath, productName + ".lnk", Environment.CurrentDirectory + "/" + productName + ".exe", description, iconLocation);
        }

        /// <summary>
        /// 删除快捷方式
        /// </summary>
        public static void CancelStartup()
        {
            if (System.IO.File.Exists(StartUpPath + "\\" + Application.productName + ".lnk"))
                System.IO.File.Delete(StartUpPath + "\\" + Application.productName + ".lnk");

        }

        // 每次启动自动检测是否有快捷方式 win环境运行shell:startup可查
        public static void Startup(string productName)
        {
            //拿到电脑开机启动的文件夹
            if (File.Exists(StartUpPath + "\\" + productName + ".lnk"))
            {
                File.Delete(StartUpPath + "\\" + productName + ".lnk");
                CreateShortcut(StartUpPath, productName, System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
            }
            else
            {
                CreateShortcut(StartUpPath, productName + ".lnk", System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
            }
        }
        /// <summary>
        /// 创建快捷方式
        /// </summary>
        /// <param name="direstory">创建路径</param>
        /// <param name="shortcurName">快捷方式的名字</param>
        /// <param name="targetPath"></param>
        /// <param name="description"></param>
        /// <param name="iconLocation"></param>
        /// <returns></returns>
        static bool CreateShortcut(string direstory, string shortcurName, string targetPath, string description = null, string iconLocation = null)
        {
            try
            {
                if (!Directory.Exists(direstory))
                {
                    Directory.CreateDirectory(direstory);
                }

                // 在unity中使用则需下载 Interop.IWshRuntimeLibrary.dll 并放到Plugins文件夹
                string shortscurPath = Path.Combine(direstory, string.Format("{0}", shortcurName + ".lnk"));
                IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
                IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortscurPath); // 创建快捷方式对象
                shortcut.TargetPath = targetPath; // 指定目标路径
                shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath); //设置起始位置
                shortcut.WindowStyle = 1; // 设置运行方式,默认为常规窗口
                shortcut.Description = description; // 设置描述
                shortcut.Arguments = "-popupwindow";//添加命令行全屏 取消状态框
                shortcut.IconLocation = string.IsNullOrEmpty(iconLocation) ? targetPath : iconLocation; //设置图标路径
                shortcut.Save(); // 保存快捷方式
                return true;
            }
            catch
            {

            }

            return false;
        }
        /// <summary>
        /// 创建延时的启动
        /// </summary>
        /// <param name="secondTime"></param>
        public static void CreateProDelayRun(int secondTime = 10)
        {
            //思路为执行bat文件进行延时运行并创建bat文件的快捷方式到系统启动项
            string content = "ping -n "+ secondTime + " 127.1>nul\n";
            content = content + "start \"\" \"" + Application.productName + ".exe\"";
            //将拼写好的bat代码写入到文件内,文件在工程同级文件夹
            string batPath = Environment.CurrentDirectory + "\\" + Application.productName + ".bat";
            File.WriteAllText(batPath, content);
            //创建一个快捷方式在系统启动文件夹没内
            CreateShortcut(StartUpPath, Application.productName, batPath);
        }
    }

后续会将工程打包为package包发出来,有问题可以加我微信S-yu12探讨。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anson_宋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值