C# 读取快捷方式指向的文件 已知一个指向一个txt文本的开解方式,我怎么通过读取快捷方式指向的文本内容呢??我的目的不是创建一个快捷方式,我是想通过一个快捷方式访问目标文件C#快捷方式读取快捷方式读取文本 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考,可以实现你的要求。[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);// } 复制粘贴会吗?把main方法里面的lnk换成你的,试一试。 请高手们说说Task和Thread的区别 请问这是什么原因? 想用visual studio2008开发一个网站,用C# 如何取得EXCEL列名 C# winform窗体如何在视频上透明的问题 继承中方法表的问题 c#.NET安装部署Framerwork问题? DataGridView排序问题 接收邮件的问题,2天了还没解决,急,请大家帮忙 socket问题,求助高手,解决后立即给分 ASP.NET(C#),怎么给SQL数据库插入空值? 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
{ 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);//
}
复制粘贴会吗?把main方法里面的lnk换成你的,试一试。