C# 读取快捷方式指向的文件

Posted 极简

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 读取快捷方式指向的文件相关的知识,希望对你有一定的参考价值。

        [Flags()]
        public enum SLR_FLAGS
        {
            SLR_NO_UI = 0x1,
            SLR_ANY_MATCH = 0x2,
            SLR_UPDATE = 0x4,
            SLR_NOUPDATE = 0x8,
            SLR_NOSEARCH = 0x10,
            SLR_NOTRACK = 0x20,
            SLR_NOLINKINFO = 0x40,
            SLR_INVOKE_MSI = 0x80
        }
[Flags()]
public enum SLGP_FLAGS { SLGP_SHORTPATH = 0x1, SLGP_UNCPRIORITY = 0x2, SLGP_RAWPATH = 0x4 } [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Unicode)] // Unicode version public struct WIN32_FIND_DATA { public int dwFileAttributes; public FILETIME ftCreationTime; public FILETIME ftLastAccessTime; public FILETIME ftLastWriteTime; public int nFileSizeHigh; public int nFileSizeLow; public int dwReserved0; public int dwReserved1; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH)] public string cFileName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)] public string cAlternateFileName; private const int MAX_PATH = 260; } [ComImport(),InterfaceType(ComInterfaceType.InterfaceIsIUnknown),Guid("000214F9-0000-0000-C000-000000000046")] // Unicode version public interface IShellLink { void GetPath([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile,int cchMaxPath,out WIN32_FIND_DATA pfd,SLGP_FLAGS fFlags); void GetIDList(out IntPtr ppidl); void SetIDList(IntPtr pidl); void GetDescription([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName,int cchMaxName); void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName); void GetWorkingDirectory([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir,int cchMaxPath); void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string pszDir); void GetArguments([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs,int cchMaxPath); void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs); void GetHotkey(out short pwHotkey); void SetHotkey(short wHotkey); void GetShowCmd(out int piShowCmd); void SetShowCmd(int iShowCmd); void GetIconLocation([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath,int cchIconPath,out int piIcon); void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIconPath,int iIcon); void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPathRel,int dwReserved); void Resolve(IntPtr hwnd,SLR_FLAGS fFlags); void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile); } [ComImport(),Guid("00021401-0000-0000-C000-000000000046")] public class ShellLink { } private void Form1_Load(object sender, EventArgs e) { IShellLink vShellLink = (IShellLink)new ShellLink(); UCOMIPersistFile vPersistFile = vShellLink as UCOMIPersistFile; vPersistFile.Load(@"C:\Users\guwei4037\Desktop\Adobe Flash Builder 4.6.lnk", 0); StringBuilder vStringBuilder = new StringBuilder(260); WIN32_FIND_DATA vWIN32_FIND_DATA; vShellLink.GetPath(vStringBuilder, vStringBuilder.Capacity, out vWIN32_FIND_DATA, SLGP_FLAGS.SLGP_RAWPATH); Text = vStringBuilder.ToString(); MessageBox.Show(Text);//result }

 

以上是关于C# 读取快捷方式指向的文件的主要内容,如果未能解决你的问题,请参考以下文章

C#常用代码片段备忘

如何在 C# 中使用命令行参数创建应用程序快捷方式(.lnk 文件)

Perl 如何查看 Windows 快捷方式指向的位置?

VS打包程序制作的快捷方式指向错误的位置(指向安装包文件) 导致每次启动都要windows正在配置

C#:快捷方式和模拟

小工具在新文件夹中打开快捷方式所指向的文件