Tag: shell32

C#Visual Studio 2008对system32.dll的引用……怎么样?

我需要参考system32 / shell32.dll,因为我使用一些shell函数来读出回收站。 我尝试了“添加引用 – > COM – > Microsoft Shell控件和自动化”和“添加引用 – >浏览—> [直接转到system32 / shell32.dll]。两者都添加了shell32引用到我的引用但是当我查看属性时,我看到引用的路径如下所示:“C:\ Users \ Tim \ Documents \ Visual Studio 2008 \ Projects \ Wing \ FileWing \ obj \ Debug \ Interop.Shell32.dll” … 我不会将此\ obj \ Debug \ path部署到我的安装程序。 那么如何直接引用最终用户shell32.dll呢? 有办法吗? 为什么VS2008会创建这条奇怪的路径? 我可以更改此路径,以便它不会位于此奇怪的子文件夹中吗? 嗯。 好的,重新访问PInvoke后,我确信我不太明白: – / 让我举例说明我需要处理的代码。 我正在挖掘回收箱并寻找我想要恢复的物品。 有没有办法不通过PInvoke进行战斗来完成这项工作? […]

使用Shell32进行P / Invoke,绕过Interop.Shell32.dll生成

所以我使用以下代码将每个扩展文件属性转储到调试控制台… ShellClass shellClass = new ShellClass(); Folder dir = shellClass.NameSpace(Path.GetDirectoryName(sFilePath)); FolderItem item = dir.ParseName(Path.GetFileName(sFilePath)); for (int i = 0; i < 267; i++) { System.Debug.WriteLine(dir.GetDetailsOf(item, i)); } 由于Shell32是一个非托管库,我不能直接在程序中嵌入DLL资源,它必须生成一个互操作助手DLL。 任何人都知道Shell32中的这些函数的DLLImport命令行来绕过整个生成的互操作DLL? 我检查了pinvoke.net,在Shell32条目下,他们要么没有我想要的东西,要么它没有被命名为我所期待的。 如果无法使用DLLImport来实现这一点,那么是否有人知道使用托管DLL提取有关文件的所有扩展属性的方法,或者至少有一种方法可以在我不需要生成帮助DLL并要​​求安装程序与我正在开发的应用程序? 谢谢你!

再次引用shell32,C#Visual Studio

嗯。 好的,重新访问PInvoke后,我确信我不太明白: – /(刚问过这个问题 ) 让我举例说明我需要处理的代码。 当我使用“添加引用 – > COM – > Microsoft Shell控件和自动化”时它可以正常工作……但遗憾的是它在我的项目中放置了一个如下所示的引用:“C:\ Users \ Tim \ Documents \ Visual Studio 2008 \项目\翼\ FileWing \ OBJ \调试\ Interop.Shell32.dll” 我正在挖掘回收箱并寻找我想要恢复的物品。 有没有办法不通过PInvoke来完成这项工作? 或者获取对system32 / shell32.dll的引用,它允许我在运行时使用此代码? private void recoverRecyclerBinEntry(string fileName, int size) { try { Shell Shl = new Shell(); Folder Recycler = Shl.NameSpace(10); // scans through […]

如何通过CLSID在C#中实例化COM对象?

如果我的术语已经关闭,请原谅我,因为这对我来说是一个有点未知的领域。 我有一个程序需要创建FolderShortcut 。 Microsoft有关于如何使用C ++创建它的文档 ,我正在尝试将方向转换为C#。 指令声明需要使用CLSID_FolderShortcut作为参数调用CoCreateInstance函数,我推断它意味着它实例化COM对象。 该对象的CLSID是{0AFACED1-E828-11D1-9187-B532F1E9575D} 。 我尝试从COM选项卡添加对Shell32.dll的引用,但是FolderShortcut对象没有出现在Intellisense中(也许它不在typelib中?)。 我还想过做一个DLLImport ,但是,当然,这只能让我访问函数,而不是对象。 要在.Net中访问此对象,我需要做什么?

在C#中使用SHAssocEnumHandlers

我正在努力在C#中调用WinAPI SHAssocEnumHandlers。 using System; using System.Runtime.InteropServices; namespace AssocHandlerTest { [Flags] public enum ASSOC_FILTER { ASSOC_FILTER_NONE = 0x0, ASSOC_FILTER_RECOMMENDED = 0x1 }; [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid(“F04061AC-1659-4a3f-A954-775AA57FC083”)] public interface IAssocHandler { int GetName([Out, MarshalAs(UnmanagedType.LPWStr)] out string ppsz); int GetUIName([Out, MarshalAs(UnmanagedType.LPWStr)] out string ppsz); int GetIconLocation([Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszPath, [Out] out int pIndex); int IsRecommended(); int MakeDefault([In, MarshalAs(UnmanagedType.LPWStr)] […]

Shell32.Folder.GetDetailsOf(..,..)有哪些可用选项?

我已经看到使用GetDetailsOf()来获取有关shell项目的详细信息的答案,但数字总是神奇的数字。 我查看了FolderItem和GetDetailsOf的文档但没有找到任何内容。 (后者中的列表并非适用于所有内容。它们不包括“描述”,“作者”,也不包括回收站删除日期…) 是否有一些方法可以返回项目的可能选项? 它被列在某个地方吗?

从.NET Windows服务调用Shell32.dll

我有一个.NET 4.0库,它使用Shell32和Folder.GetDetailsOf()从WTV文件中获取元数据。 我已成功使用它与控制台和Windows窗体应用程序没有问题。 但由于某种原因,从.NET 4.0 Windows服务调用组件时,启动Shell类的调用会导致COM错误。 库中失败的代码: Shell32.Shell shell = new Shell(); 错误: 无法将“System .__ ComObject”类型的COM对象强制转换为接口类型“Shell32.Shell”。 此操作失败,因为IID为“{286E6F1B-7113-4355-9562-96B7E9D64C54}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULTexception:0x80004002(E_NOINTERFACE)) 。 我阅读了我的公寓线程,COM Interops,动态,PIA等等,但是我找到的解决方案没有解决问题。 它必须是来自另一个无法看到Interop的线程的调用。 请帮忙 :)

如何在C#应用程序中使用Shell32?

为了使Shell32工作,我应该在C#应用程序中包含哪些内容? 编辑: 我的应用程序无法识别shell32。 我应该包括哪些参考或库? 我想要做的是: Shell32.Shell shell = new Shell32.Shell(); 我得到的是一个错误: 错误1找不到类型或命名空间名称’Shell32’(您是否缺少using指令或程序集引用?)