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