zoukankan      html  css  js  c++  java
  • 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
            }
  • 相关阅读:
    今天没有写的,唱首歌吧。。
    UILocalNotification实现本地的闹钟提醒的方法。
    又是动画效果~
    c位运算符
    javascript如何调用objectivec的方法
    在tableview索引中显示搜索符号的方法
    检查数据库|| 复制数据库文件
    往sqlite中写入图片二进制数据及读取源码 for iphone
    [Cocoa]深入浅出 Cocoa 之消息(罗朝辉)
    关于malloc问题的改错笔试常考
  • 原文地址:https://www.cnblogs.com/guwei4037/p/5592328.html
Copyright © 2011-2022 走看看