问题标签 [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 回答
1357 浏览

ms-office - Internet Shortcut IDList 值解码

我一直在尝试查找有关存储在从 MS-Office for SharePoint 库生成的 url 快捷方式中的值的任何信息。我们正在从 Office 2007 迁移到 Office 365,2007 创建这些链接的功能在 Office 365 中似乎不可用。

如果在另存为对话框中单击 .url 文件时没有 IDList 值,它会将文件名更改为快捷方式。我尝试将 .url 更改为 .lnk 但非办公应用程序无法处理它们。

.url 文件的内容

同一用户重新生成的文件

来自另一个用户的文件的值

我无法弄清楚如何解码这个值,或者我无法弄清楚其中存储了哪些数据。我已经阅读了一堆不同的方法来以编程方式使用 Windows 脚本和 shell 32 在 Powershell 和 C# 包装器中创建快捷方式,C++ 寻找任何信息。我唯一的希望是shell链接也有一个pidl的项目ID列表,但我无法确认这是否相关。

我所知道的是 IDList 可以移动到另一个 .url ,它会带你到原始路径。IDList 的某些部分会根据创建它们的用户和重新创建 url 文件的时间而变化。

Internet 快捷方式 https://msdn.microsoft.com/en-us/library/bb776784(v=vs.85).aspx

外壳链接 https://msdn.microsoft.com/en-us/library/dd891312.aspx

0 投票
1 回答
3321 浏览

vb.net - Visual Basic (vb.net):获取视频文件的详细信息,例如。框架宽度

我正在使用 shell32.dll 来检索文件的扩展属性。我的文本框将显示文件的每个属性(iCollumn -1 到 300),但不会显示 framewidth 或 frameheight(以及许多其他属性)。

有没有办法使用 shell32.dll 获得这些?如果没有,是否有替代方法来获取这些缺失的属性?

注意:我在 Windows 资源管理器中显示了扩展,我的项目引用了 Microsoft shell 控件和自动化。

代码:

输出(为了空间我只显示了没有显示的结果):

0 投票
1 回答
156 浏览

dll - windows pe文件的地址导出表中出现空条目的原因是什么?

我有一个检查 Windows PE 文件的项目。在处理某些文件(例如 User32 和 Shell32)时,我注意到导出地址表中有条目为 0。导出地址表中有一个空 (0) 条目的目的是什么?(条目 0 不会解析为有效的虚拟地址)

仅供参考 - 使用 NikPEViewer 和 Dll Export Viewer 等应用程序根本不会显示这些条目,DumpBin 会显示未包含在导出名称表和序号表中的导出,但它会跳过空条目。

0 投票
1 回答
1073 浏览

c++ - 导出无def文件的序数

我们可以使用def文件导出序数。但是系统dll不使用def文件。仍然shell32.dll有569个序数导出,user32.dll有181个序数导出。

有没有办法在没有def文件的情况下导出序数?

0 投票
1 回答
309 浏览

winapi - 在 Windows 中显示特定于窗口的 JumpList

我的程序在任务栏(不是 MDI)上打开多个窗口。我想显示一个特定于每个窗口的 Jumplist。它是如何完成的?

0 投票
1 回答
347 浏览

c - 为什么 SHGetPathFromIDList 函数导出了 3 次

我知道 shell32.dll 导出两种类型的函数——ANSI 和 UNICODE。(为简单起见,我只讨论接受 CHAR*/WCHAR* 参数的函数。)

例如,ShellMessageBoxA是 ANSI 版本,ShellMessageBoxW而是 Unicode 版本。ShellMessageBox是头文件中定义的宏:

所以ShellMessageBox不作为从 Shell32.dll 导出的函数存在。

但是现在我发现SHGetPathFromIDList导出了三遍:

  • 序数 312 -SHGetPathFromIDList
  • 序数 313 -SHGetPathFromIDListA
  • 序数 314 -SHGetPathFromIDListW

这样做的目的是什么?

0 投票
2 回答
1103 浏览

vba - 如何在 Windows 上的 1 条语句中压缩文件夹内容?

CopyHere我正在尝试使用 Windows shell命令压缩包含子文件夹和项目的文件夹:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ ms723207(v=vs.85).aspx

更新:请注意,更喜欢本机解决方案——这是针对分布式 Excel VBA 工具的,因此捆绑第 3 方文件并不理想。并且,需要同步压缩。

我可以轻松地将文件夹及其内容添加到 zip:

所以我们知道CopyHere可以在 1 条语句中处理文件夹内的多个对象。

问题是,上面的命令将包含文件夹放在 zip 的根目录下,其中的内容。但是,我不想要包含文件夹——只是它的内容。

该文档提到了通配符(选项 128),但是当我使用通配符时,出现错误:

您指定的文件名无效或太长。

也许有一种方法可以使用我上面的第一个命令,然后将 zip 中的项目移动到 zip 的根目录?

循环遍历源文件夹中的每个项目,一次添加一个到 zip 是可以接受的。但是,由于 CopyHere 是异步的,因此如果前一个 CopyHere 未完成,则每个后续 CopyHere 都会失败。没有任何修复适用于此问题:

  • 比较 source-folder 和 destination-zip 中的项目数失败,因为如果 zip 包含一个文件夹,则仅计为 1 个项目(其中包含的项目不计算在内。https://stackoverflow.com/a/16603850/209942

  • 在每个项目之间等待一段时间是可行的,但计时器是不可接受的:它是任意的。我无法提前猜测每个对象的大小或压缩时间。

  • 检查 zip 是否被锁定以供我访问失败。如果我阻塞循环直到文件未被锁定,我仍然会收到文件访问错误。https://stackoverflow.com/a/6666663/209942


更新: VBA 可以同步调用 shell 命令(而不是在 VBA 中创建shell32.shell对象),所以如果 CopyHere 在命令行或 PowerShell 上工作,那可能是解决方案。正在调查...

0 投票
0 回答
1027 浏览

vb.net - 使用 InvokeVerbEx("Print") 在 VB.net 中将文件发送到没有打印机对话框的打印机

我想在没有打印机对话框的情况下将几种类型的文件发送到打印机;

我找到了一个 vbs 脚本,它可以像这样将它翻译成 vb.net;

此错误消息出错了;

在这条线上;MyFile = MyFolder.ParseName(MyPj.FileName)

MyPj.Filename 包含文件夹中文件的名称 (MyPj.Path)。

我也试过这个例子;https://msdn.microsoft.com/en-us/library/windows/desktop/bb774057%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396没有成功。

在我使用它向打印机发送文件之前,但这会显示一个带有“okey”按钮的对话框;

0 投票
1 回答
452 浏览

.net - shell32 copyhere 在 .Net 和 powershell 脚本中都不起作用

有一个powershell脚本可以通过MTP以编程方式在pc和android之间复制文件,请参阅access-file-system-against-mtp-connection,它在powershell控制台下运行时工作,然后我制作了如下脚本:

该脚本在powershell控制台上运行良好,但是当我在cmd下运行它时

powershell -文件 mtpcp.ps1 c:\test\Android\test\

或者

powershell ./mtpcp.ps1 c:\test\Android\test\

它什么也不做(没有显示错误)。

然后我使用 system.Shell32 在 .Net 上实现了相同的功能,CopyHere 功能适用于常规路径c:\,但不适用于 mtp 设备路径,就像 powershell 一样,它在 CopyHere 功能上什么也不做,也没有错误消息出现。

0 投票
1 回答
138 浏览

c# - 如何更改windows回收站属性


在此处输入图像描述

如何获取 recyclebin 的这个属性并使用 C# 切换它。