当前位置:编程学习 > C#/ASP.NET >>

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

已知一个指向一个txt文本的开解方式,我怎么通过读取快捷方式指向的文本内容呢??我的目的不是创建一个快捷方式,我是想通过一个快捷方式访问目标文件 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);//
        }
--------------------编程问答-------------------- 楼上的看不懂啊 --------------------编程问答--------------------
引用 2 楼 heiyedebing 的回复:
楼上的看不懂啊


复制粘贴会吗?把main方法里面的lnk换成你的,试一试。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,