我们有一个networking驱动器完整的指向文件夹的快捷方式(.lnk文件),我需要在C#Winforms应用程序中以编程方式遍历它们。
我有什么实用的select?
如何以编程方式检测是否在Windows桌面应用程序中启用/禁用了JavaScript? (Webbrowser控件)
“这个文件来自另一台计算机,可能被阻止,以保护这台计算机。” – 如何以编程方式在C#.net中删除此属性?
运行后如何隐藏WinForm?
如何查看exe的SmartScreen声誉得分?
将函数包装到Windows桌面应用程序的最佳做法是什么?
添加IWshRuntimeLibrary作为您的项目的参考。 添加引用,COM选项卡,Windows脚本宿主对象模型。
以下是我如何获得快捷方式的属性:
IWshRuntimeLibrary.IWshShell wsh = new IWshRuntimeLibrary.WshShellClass(); IWshRuntimeLibrary.IWshShortcut sc = (IWshRuntimeLibrary.IWshShortcut)wsh.CreateShortcut(filename);
快捷方式对象“sc”具有TargetPath属性。
使用COM IPersistFile接口加载文件。
对结果执行QueryInterface以将其转换为IShellLink接口。
调用IShellLink :: GetPath
据我所知,你可以使用“添加引用”对话框的.NET生成类符合您的每个接口。
IShellLink接口可以让你操纵.lnk文件,尽管在C#中使用它有点麻烦。
这篇文章有一些代码实现必要的interop gubbins。
更新
你可以从这里的文章中找到代码,但是这个页面在Firefox中似乎不起作用。 它在IE中工作。
我知道这不是正确的方式,并且lnk文件结构可以改变等,但是这是我所做的:
private static string LnkToFile(string fileLink) { string link = File.ReadAllText(fileLink); int i1 = link.IndexOf("DATA "); if (i1 < 0) return null; i1 += 5; int i2 = link.IndexOf(" ",i1); if (i2 < 0) return link.Substring(i1); else return link.Substring(i1,i2 - i1); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。