公司有一个特殊的业务可能会用到这个,至于什么业务就不展开了。本文的内容作为备用方案。
实现思路:
1 获取当前exe程序运行的全路径
2 获取桌面的所有快捷方式
3 遍历快捷方式,获取快捷键方式对应程序的运行路径,并与当前exe程序运行的全路径比较,如果相等,则表示拿到当前exe程序运行的快捷方式
4 把新的程序的运行路径赋值给快捷方式
测试环境:
.net framework 3.5
vistual studio 2017
测试步骤如下:
1 新建控制台程序,名为ApplicationQuickLink
2 添加COM引用:Window Script Host Object Model
3 在Debug目录下新建记事本文件,名为"新建文本文档.txt",并编辑内容如下:
4 新建类,名为"ShortCutHelper" ,并编辑如下:
using IWshRuntimeLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ApplicationQuickLink
{
public class ShortCutHelper
{
/// <summary>
/// 设置当前程序的快捷方式
/// </summary>
/// <param name="newAppName">新的程序名称</param>
public static bool SetApplicationNewQuickNewPath(string newAppName)
{
IWshRuntimeLibrary.IWshShortcut shortcut= GetCurrentApplicationQuickPath();
if (shortcut!=null&& !string.IsNullOrEmpty(shortcut.TargetPath))
{
shortcut.TargetPath = GetExecuteAppPath(shortcut.TargetPath)+ "\\" + newAppName;
shortcut.WindowStyle = 1;//设置运行方式,默认为常规窗口
shortcut.Save();
return true;
}
return false;
}
/// 获取程序的运行路径
/// </summary>
/// <param name="executeFullPath"></param>
/// <returns></returns>
private static string GetExecuteAppPath(string executeFullPath)
{
string []pathArray = executeFullPath.Split('\\');
if (pathArray.Length >= 2)
{
return executeFullPath.Replace(pathArray[pathArray.Length - 1],"");
}
return null;
}
/// <summary>
/// 获取当前应用程序快捷方式
/// </summary>
/// <returns></returns>
private static IWshRuntimeLibrary.IWshShortcut GetCurrentApplicationQuickPath()
{
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
string[] desktopAllLinkArray = Directory.GetFiles(desktopPath, "*.lnk");
if (desktopAllLinkArray != null && desktopAllLinkArray.Length > 0)
{
foreach (var item in desktopAllLinkArray)
{
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShellClass();
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(item);
string currentExcutePath= GetCurrentExecuteFullPath();
if (currentExcutePath.Equals(shortcut.TargetPath))
{
return shortcut;
}
}
}
return null;
}
/// <summary>
/// 获取当前程序运行的全路径
/// </summary>
/// <returns></returns>
private static string GetCurrentExecuteFullPath()
{
return Application.ExecutablePath;
}
}
}
5 编辑主程序如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ApplicationQuickLink
{
class Program
{
static void Main(string[] args)
{
bool setResult= ShortCutHelper.SetApplicationNewQuickNewPath("新建文本文档.txt");
if (setResult)
{
Console.WriteLine("设置成功");
}
else
{
Console.WriteLine("设置失败");
}
Console.ReadLine();
}
}
}
6 生成程序,并为Debug目录下的运行程序ApplicationQuickLink.exe创建桌面快捷方式,如下图:
7 点击桌面的快捷方式实现运行程序,运行结果如下图:
桌面的快捷方式对应的目标程序如下:
点击桌面的快捷方式,可以成功打开Debug目录下的记事本文件"新建文本文档.txt",如下图:
好了,本文的内容到此结束。