问题标签 [shell32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
140 浏览

c# - How to add reference to IRunnableTask

I need to be able to implement the IRunnableTask interface, and have no idea how. I tried adding reference to C:\Windows\System32\Shell32.dll -- no luck... google to try and find information... nothing around how to import/include in a .net project to access IRunnableTask.

I'm sure this is an easy one for someone that has used this interface before.

0 投票
1 回答
578 浏览

windows - 为什么 Detours 不能再在 Windows 7+ 中挂钩 shell32.dll 函数

在 Windows XP 中,可以使用以下 shell32 挂钩来挂钩资源管理器:

出于某种原因,在 Windows 7 上,即使 DetourAttach 仍然返回成功,这也不再有效。我安装的所有其他钩子(例如在 ntdll.dll 中)仍然有效,但我在 shell32.dll 中创建的钩子不再有效。

我将 Windbg 附加到资源管理器并运行uf shell32!SHFileOperationW它表明该函数确实现在确实跳转到了我的函数:

然而,不知何故,资源管理器跳过了我的弯路,进入了 SHFileOperation 函数的其他部分......

0 投票
3 回答
3179 浏览

c# - 从 Windows 桌面获取选定文件的列表

我正在尝试从 Windows 桌面和资源管理器 Windows 中获取选定文件的列表。要求是我应该能够从活动的资源管理器窗口或桌面检索当前选择。

在浏览了在线资源后,我设法将以下代码放在一起,但它没有提供桌面中选定项目的列表。

除此之外,我尝试了以下操作,但它只是给出了所有打开的资源管理器窗口中所有选定元素的列表,而忽略了桌面。

所以我总是从资源管理器窗口中得到一个列表,即使没有打开资源管理器窗口也没有得到任何结果。当前的技术似乎完全忽略了桌面。

如果有人可以帮助我从当前活动的窗口/桌面获取选定文件的列表,我将不胜感激。

谢谢你。

0 投票
1 回答
980 浏览

.net - Windows Server 2008R2 上任务栏位置的 SHAppBarMessage 问题

我有一个非常奇怪的问题SHAppBarMessage,现在已经尝试了几个小时不同的东西,但我没有得到它。我正在尝试获取任务栏位置。它在 Windows 8 上运行良好,但在 Windows Server 上返回值为SHAppBarMessage.

答案中的以下代码在 Windows 8 上运行良好,但在 Windows 2008R2 上它有一个奇怪的行为。

我完全没有想法。因为它应该按原样工作。但我不知道为什么它不起作用。我错过了什么吗?

眼见为实

0 投票
1 回答
1151 浏览

c++ - 在 C++ 中使用 shell32

我正在尝试使用一些使用IID_IShellDispatchandCLSID_Shell常量的代码。

我的包括:

编码:

上面的最后一行抛出关于未定义引用 CLSID_Shell 和 IID_IShellDispatch 的错误

该代码是 Qt 项目的一部分,因此我使用的是 Qt 项目文件(用于 qmake),并且已将其添加-lshell32LIBS它的部分:

执行的命令是

在win7上使用MinGW

0 投票
1 回答
156 浏览

windows - SW_MAXIMIZED 和无法最大化的应用

我正在使用 ShellExecuteEx 从我自己的应用程序中启动应用程序。我的应用程序的一个功能是允许它启动的应用程序在打开时最大化......这在 99% 的情况下都可以正常工作,因为我可以将SW_SHOWMAXIMIZED标志添加到 SHELLEXECUTEINFO 结构中的 nShow 字段。

现在,有些应用程序不允许自己最大化(标题栏区域的最大化按钮是灰色的)。在这组应用程序中,一些——比如calc.exe——将忽略 SW_MAXIMIZE 标志并以默认大小启动。不幸的是,其他应用程序——比如charmap.exe——无论如何都设法打开最大化(因此看起来很奇怪)。

我正在尝试确定是否(1)这是我必须忍受的那些特定应用程序中的错误,(2)我可以做一些更好的事情来阻止这种情况发生,或者(3)我需要想出一些不明显的解决方法。任何帮助表示赞赏。

0 投票
1 回答
385 浏览

vb.net - 使用 shell32 压缩文件时的 VB.NET System.NullReferenceException

我试图制作一个压缩文件夹的程序,但我不断收到 NullReferenceException 并且它没有创建所需的 zip 文件。我忘记了什么吗?我正在使用 Shell32,zip 子来自 codeproject 教程。无论如何,这里是代码:

0 投票
4 回答
15561 浏览

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

我已经看到GetDetailsOf()用于获取有关外壳项目详细信息的答案,但这些数字始终是神奇的数字。

我查看了FolderItemGetDetailsOf的文档, 但一无所获。(后者中的列表并不适用于所有内容。它们不包括“描述”、“作者”,也不包括回收站删除日期......)

是否有一些方法可以返回项目的可能选项?它在某处列出吗?

0 投票
1 回答
2000 浏览

excel - VBA Shell32 图标

有没有办法将 Shell32 中的图标嵌入到 Access 应用程序中?

理想情况下,我希望将它们存储为图像(可能在 ImageList 中),但这并不重要,只要我可以在应用程序中使用它们。看来以下代码与我想要的很接近,但由于我对 VB 和 API 的了解有限,我无法将其适应 VBA

0 投票
2 回答
1482 浏览

c# - 删除文件夹项

我想删除存储在 USB 闪存驱动器(实际上是 android 设备的 sd 卡)中的文件。

我要求用户将应用程序的文件夹指向 sd 卡内,然后我持有一个Shell32.Folder指向它的对象。

我可以在文件(对象)之间进行迭代FolderItem,但是如何使用Shell32类删除文件?

通常File.Delete(filePath)不起作用,因为它FolderItem.Path是 BSTR 数据类型,所以也许关键是从一种类型转换为另一种类型,但我找不到这样做的方法。

有任何想法吗?

编辑1:

FolderItem.Path数据:

"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_04e8&pid_6860&ms_comp_mtp>-p5100#7&392be4e4&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,SECZ9519043CHOHB,12530364416}\{ 015C008D-013D-0145-D300-D300CB009500}\{015C00EE-013D-0145-0201-37012C010901}\{025901D2-029D-020F-DE01-FE010D02A601}"

这不是File.Delete. 关于如何转换的任何想法?

编辑2:

打开浏览文件夹窗口的方法,用户可以在他的android设备的SD卡中指出应用程序目录,这样我就可以迭代文件夹和文件,并与服务器同步一些数据。由于Win8和Shell32之间的问题,这样做:

使用上述方法,获取文件夹:

我创建一个文件并将其复制到应用程序的“数据”文件夹中,以便设备可以识别同步操作、告诉用户并关闭应用程序:

同步后,我想删除文件,以便应用程序可以正常运行:

如编辑 1file.Path中所述,我要删除的文件具有以下格式:

"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_04e8&pid_6860&ms_comp_mtp>-p5100#7&392be4e4&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,SECZ9519043CHOHB,12530364416}\{ 015C008D-013D-0145-D300-D300CB009500}\{015C00EE-013D-0145-0201-37012C010901}\{025901D2-029D-020F-DE01-FE010D02A601}"

编辑 3:

正如这里所建议的,我尝试使用 P/Invoke 删除文件,但没有成功。

调用方法:

该方法返回false,文件没有被删除。我在事件查看器中寻找关于发生了什么的线索,但什么也没找到。