已知一个指向一个txt文本的开解方式,我怎么通过读取快捷方式指向的文本内容呢??我的目的不是创建一个快捷方式,我是想通过一个快捷方式访问目标文件C#快捷方式读取快捷方式读取文本

解决方案 »

  1.   

    参考,可以实现你的要求。[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);//
            }
      

  2.   


    复制粘贴会吗?把main方法里面的lnk换成你的,试一试。