快捷方式在win32上应用的非常之多,比如某个软件安装完毕后会创建一些快捷方式
到特定目录下,那么在.NET上我并未发现有什么托管类可以操作快捷方式,那么我们
using System;
using System.IO;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
CreateShortCut( // 创建快捷方式
@"C:\Users\windo\Desktop\ican.lnk",
@"%HOMEDRIVE%/Program Files\Internet Explorer\IEXPLORE.EXE",
AppDomain.CurrentDomain.BaseDirectory,
@"%HOMEDRIVE%/Program Files\Internet Explorer\IEXPLORE.EXE, 0",
"CTRL+ALT+Z"
);
}
public static readonly Guid CLSID_WshShell = new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8");
public static string GetShortCutTarget(string lnk) // 取快捷方式目标
{
if (lnk != null && File.Exists(lnk))
{
dynamic objWshShell = null, objShortcut = null;
try
{
objWshShell = Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_WshShell));
objShortcut = objWshShell.CreateShortcut(lnk);
return objShortcut.TargetPath;
}
finally
{
Marshal.ReleaseComObject(objShortcut);
Marshal.ReleaseComObject(objWshShell);
}
}
return string.Empty;
}
public static bool CreateShortCut(string lnkFileName,
string targetPath,
string arguments,
string remark,
string workingDirectory,
string iconLocation,
string hotKey
)
{
if (lnkFileName != null && lnkFileName.Length > 0)
{
dynamic objWshShell = null, objShortcut = null;
try
{
objWshShell = Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_WshShell));
objShortcut = objWshShell.CreateShortcut(lnkFileName);
objShortcut.WindowStyle = 1;
objShortcut.Hotkey = hotKey; // 热键
objShortcut.TargetPath = targetPath; // 目标文件
objShortcut.Arguments = arguments; // 参数
objShortcut.Description = remark; // 备注
objShortcut.WorkingDirectory = workingDirectory; // 起始位置
objShortcut.IconLocation = iconLocation; // 图标位置
objShortcut.Save();
return true;
}
finally
{
Marshal.ReleaseComObject(objShortcut);
Marshal.ReleaseComObject(objWshShell);
}
}
return false;
}
}
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号