问题标签 [shell32.dll]

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 回答
333 浏览

c# - C# - new Shell32() 抛出异常?

我需要在我的 C# 应用程序中使用 Shell32 来创建一个 lnk 文件。

我将 shell32.dll 添加到我的引用中并尝试编译这个单一的代码行:

我得到了一个InvalidCastException

错误代码:'HRESULT: 0x80004002 (E_NOINTERFACE))。

我应该如何使用 Shell32.Shell?

0 投票
1 回答
386 浏览

excel - 创建 Shell32.dll 对象时出现 VBA 运行时错误 429

我正在尝试编写一个 VBA 函数,它将获取特定已打开 IE 窗口的句柄。经过一番谷歌搜索后,我找到了以下代码:-

此代码在我的计算机上运行良好,但是当我在客户端的 Citrix 环境中部署该工具时,我在第 3 行收到错误“ActiveX 组件无法创建对象”

我在谷歌和基础上做了一些研究,在 Citrix 管理员的帮助下 - 技术支持人员将 windows/system32 文件夹中的 shell32.dll 文件替换为新的副本并重新注册。

完成此操作后,我希望代码运行良好,但我仍然收到相同的运行时错误 429“ActiveX 组件无法创建对象”。

请如果有人可以帮助我了解需要做什么才能使代码正常工作。提前致谢。

普雷曼舒

0 投票
1 回答
60 浏览

vb.net - PickIconDlg 不允许路径长于初始路径设置

我需要允许用户选择一个图标,所以我从 shell32 实现了 PickIconDlg 函数。问题是,如果用户选择的路径比我声明的初始路径长,则结果值是用户选择的路径被截断为初始路径的长度。

例如,如果我将初始路径设置为“C:\Windows\System32\shell32.dll”并且用户选择“C:\Users\Public\Documents\TheIcons\Library.dll”,则更新后的字符串值返回为“C:\Users\Public\Documents\TheIc”(即用户选择路径的前 31 个字符,因为初始路径是 31 个字符长)。

我尝试调整传递给 PickIconDlg 的“nMaxFile”值,据我所知,它应该设置路径变量的最大长度。这似乎没有什么不同。

我希望字符串变量 iconfile 包含用户选择的完整路径,因为它的长度小于定义的最大 50 个字符。相反,如上所述,仅返回路径的一部分。

0 投票
0 回答
197 浏览

c# - 文件类型返回空字符串

我正在尝试使用 c# 获取文件类型名称(如文件夹、位图图像、文本文件等)。

由于特权原因,我不想从注册表中获取。

我从网上找到了这个方法。

它适用于获取文件图标(SHGFI_LARGEICON,SHGFI_SMALLICON)

但是这个方法总是返回空白szTypeName

我尝试了不同的组合但相同。

我的系统是 Windows 10 EE

0 投票
0 回答
41 浏览

windows-10 - 如何在上下文菜单中为本地化的 MUI 字符串添加下划线访问键?

我正在添加以下注册表项,以便将关闭选项添加到桌面上下文菜单:

由于我使用的是 shell32.dll 的本地化字符串(十六进制扩展为“@%SystemRoot%\system32\shell32.dll,-33280”),因此只需放置一个与号(“&”或“&”)不起作用并打破了整个名字。

顺便说一句,我有另一个代码片段,我已经修改为使用 MUI,它自动使用下划线访问密钥,即使我不知道为什么:

0 投票
1 回答
88 浏览

windows - 是否有像 ExtractIconEx 这样的函数,但用于内存数据而不是文件

zserge/tray项目中,windows的tray_update函数中,该ExtractIconEx函数用于构造图标句柄( HICON icon)。该函数tray->icon作为第一个参数传递,它是一个指向.ico文件的字符串。

我的问题是,是否有使用变量数据获取图标句柄的函数(即将文件的二进制.ico文件存储在数组中)?

将文件数据存储在数组中的示例:

0 投票
1 回答
201 浏览

command-line - 使用 shellexecuteW 的控制台输出

我正在使用 shell32.dll 中的 ShellExecuteW:

int value= ShellExecuteW(0, "open", "C:\test.bat", strParameters, "", 1);

批处理文件运行一个似乎打开但返回错误的 java 应用程序,并且控制台窗口很快关闭。

我想从控制台捕获错误。我尝试在批处理文件中的命令末尾添加以下重定向:

我希望这些常用命令能够工作,但它们都不会导致在 output.txt 中写入任何内容。我在这里做错了什么?

我正在使用 Metatrader5(MQL5 语言)从中调用 shellexecuteW。

谢谢您的回复。

0 投票
0 回答
45 浏览

c# - 如何获取 Shell32.Folder.GetDetailsOf(vItem, iColumn) 方法的最大索引(最大 iColumn)?

目前,我使用GetDetailsOf获取属性列表,如下所示:

但在这种情况下:163 处的索引是空的,因此我上面的代码将从 163 开始丢失。

所以也许我会使用幻数 310 作为最大索引,但这并不可靠,如果在其他计算机中,最大索引是 320 怎么办?那么有什么方法可以获得 GetDetailsOf 的最大索引吗?

0 投票
0 回答
84 浏览

windows - 如果资源管理器重新启动,IShellWindows::FindWindowSW 为桌面返回 S_FALSE

我有一个程序将命令行传递给资源管理器进程以在用户的​​非提升桌面上下文中执行。这样做的一部分需要使用 IShellWindows::FindWindowSW 来搜索桌面窗口,如Windows 7 SDK 中的ExecInExplorer 示例所示。

如果由于某种原因资源管理器重新启动(例如“退出资源管理器”并重新启动 [2])并且旧资源管理器实际上并未退出,则 FindWindowSW 为桌面窗口返回 S_FALSE。在这种情况下,新的资源管理器进程拥有桌面,而旧进程(应该已经终止)不拥有。我怀疑 FindWindowSW 只搜索旧的资源管理器进程。

如果有多个资源管理器正在运行,是否有任何方法可以在所有资源管理器中搜索 IDispatch 到桌面?

[2]:(有时我在开发时会“退出资源管理器”(按住 CTRL+SHIFT 并右键单击开始菜单的空白部分),然后从命令提示符处重新启动它。尽管退出,偶尔也会出现资源管理器(即任务栏消失)实际上并没有终止,这意味着当我再次启动资源管理器时,会运行多个资源管理器。仍在运行的旧资源管理器不是可用于显示文件夹的单独进程。我没有办法重现这个,这似乎是任意的。)

0 投票
0 回答
14 浏览

c# - IShellDispatch.BrowseForFolder 的 iOptions 参数不起作用

我使用Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder)Shell32.dll 创建文件夹选择对话框。

根据文档,Options参数是

一个包含方法选项的整数值。这可以是零,也可以是 BROWSEINFO 结构的 ulFlags 成员下列出的值的组合。

我查看了 BROWSEINFO 结构并尝试为该参数传递不同的参数。包括“1”、“2”、“10”和“0x00000001”、“0x00000002”和“0x00000010”。

但是对话框中没有任何变化,选项应该代表的也没有发生。

我是否传递了错误的论点,或者是否有其他一些决定性因素来决定选项的表现方式?