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


     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:Usersguwei4037DesktopAdobe 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
            }
  • 相关阅读:
    Android游戏开发:游戏框架的搭建(4)
    Android游戏开发:游戏框架的搭建(2)
    android之HttpURLConnection
    Android游戏开发:游戏框架的搭建(3)
    Socket连接与HTTP连接
    Java初级优化
    Android文件操作总结
    android GC内存泄露问题
    Java高级优化技术
    JAVA中三种URL连接方法
  • 原文地址:https://www.cnblogs.com/guwei4037/p/5592328.html
Copyright © 2020-2023  润新知