问题标签 [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 投票
2 回答
720 浏览

c# - 在以编程方式编译的程序中引用 shell32.dll?

我需要在我的程序中使用 shell32 来创建快捷方式。

这是我的代码:

这样做,我得到一个错误:

元数据文件 C:\Windows\System32\Shell32.dll 无法打开。试图加载格式不正确的程序。

搜索时什么也没找到..我什至不确定要搜索什么:/

我该怎么做呢?

0 投票
4 回答
6788 浏览

c# - c# Shell32 zip/unzip code,CopyHere 不工作

我在使用 Shell32 CopyHere 方法时遇到了一些问题。

首先,我从这个页面工作:http: //www.codeproject.com/Tips/257193/Easily-zip-unzip-files-using-Windows-Shell32

我希望用 C# 重写类似的东西,因为我几乎没有在 VB.NET 中工作过。

我正在传递一个输入目录 i ,其中包含一个文本文件作为我的测试。在底部,我看到它实际上是在抓取我的文件,我写了 input.Items() 的计数并得到 1,所以我认为它看到的是我的目录,其中包含一个文本文件。但是,虽然我的代码可以很好地创建空 zip 文件,并且至少从该控制台输出看来是在抓取我的文件,但它实际上并没有将任何内容复制到 zip 文件中。没有错误被抛出,就好像什么都没发生一样。

我使用 Shell32 方法的方式有问题吗?

编辑:

抱歉响应缓慢,我正在尝试使用 DJ Kraze 提出的一些代码。

为了澄清一些事情,不幸的是我不能使用第三方工具,而且我使用的是 .NET 4.0。我将尝试听取 DJ 的建议,看看我是否可以让 VB 版本正常工作或他好心发布的 C#。

感谢大家的帮助。

0 投票
1 回答
619 浏览

c# - 文件图标的当前覆盖

我已经在互联网上搜索了大约 5 个小时,如果我能找到这个问题的答案,我会被诅咒的。在我的旅程中,我发现这个问题在多个地方都没有得到解答。

我愿意使用任何可以产生与文件当前图标叠加层远程相关的信息的语言。下面的图片展示了我正在谈论的叠加层。

同步

完全的

0 投票
1 回答
1189 浏览

vb.net - 用于 vb.net 的 Shell32 文件提取器脚本

我正在编写一个用于分发的 vb.net 脚本,但我遇到了问题。该脚本无法使用 COM 引用的 Shell32 库提取 zip 文件而不触发防病毒,因为我正在构建一个 exe。我想知道是否有人知道在 vb.net 中提取文件的更好方法,或者仅仅是防病毒软件不会删除我的脚本的方法,因为这将是一个分布式程序。

禁用防病毒软件不是解决方案,因此不建议这样做。

0 投票
0 回答
140 浏览

com - 使用 SHGFI_ICON 时 SHGetFileInfo 导致堆损坏

当我为正在测试的进程启用页面堆时,它会触发访问冲突,这表明在调用 SHGetFileInfo 时发生了某种类型的堆损坏。

调用堆栈的顶部显示 msvcr90!wcspbrk 并向下显示 ole32 中与 COM 相关的项目,直到到达 shell32,我们调用 SHGetFileInfo。

从我在网上发现的情况来看,使用 shell32 的一个常见问题是没有首先调用 CoInitialize/CoInitializeEx,但此时已经调用了 CoInitializeEx(),并且在下面的代码之前立即调用它只会返回 S_FALSE。

下面的代码在我们的 DLL 中,它是从 .NET 调用的(代码用于检索用于特定文件的图标):

(其中 logfile.txt 是我根驱动器上的随机文本文件)

为简单起见,我已将第一个参数硬编码到我机器上的文件中。

我使用的是 64 位 Windows 操作系统,但代码在 32 位上下文中运行。如果我使用 SHGetFileInfo 的窄版本,我会得到相同的结果。

如果我为我的进程禁用页面堆,则没有问题。

当我不使用标志 SHGFI_ICON 时,问题不会发生。

编辑:@HansPassant 要求我添加一个可复制的示例,这是一个指向 Visual Studio 2010 Win32 控制台应用程序的链接,演示了该问题:示例

0 投票
0 回答
584 浏览

.net - PortableDeviceApiLib 的 VS/.Net 互操作类型库加载失败

这是关于 Windows 窗体应用程序、.Net 4.0、Visual Studio 2010。

我的成像应用程序使用生成的互操作库使用 PortableDeviceApiLib 和 PortableDeviceTypesLib。当引用 PortableDevice 类型时,这会导致类型信息加载失败,除非我专门为 x86 构建。但是,在 x86 中,我的 Shell32.dll 中的 DLLImports 在程序终止时会导致运行时“堆栈不平衡”错误;这种不平衡不会发生在其他构建中,例如 AnyCPU。

同一机器应用程序上的另一个 Windows 窗体应用程序与 PortableDeviceApiLib 没有显着问题,但它不使用 Shell32.dll。

使用非 x86 构建我的成像应用程序会导致 VS 警告有关“MIDL”与“x86”不兼容可能导致运行时失败。

另一个问题是我使用C# 中枚举 Windows 便携设备中的建议 来反编译、编辑和重新编译 Interop.PortableDeviceApiLib.dll 以允许枚举多个便携设备。这似乎不会影响类型库加载失败。

我通常将 AnyCPU 用于 .Net 应用程序,包括 Forms 和 WPF。我可以尝试有关构建设置的任何其他想法吗?

0 投票
1 回答
91 浏览

.net - Option Strict Late Binding 错误问题

选项 Strict 给我一个Late Binding错误,我总是将对象转换为正确的类型,但在这种特定情况下,我不知道如何转换该对象。

警告出现在指令中Shell.ToggleDesktop()

这是代码:

0 投票
1 回答
423 浏览

c# - String retrieved as shell32 GetDetailsOf never '=='s hard coded string that appear the same. Unable to parse with DateTime.Parse

My real aim is to DateTime.Parse a date string from Shell32 GetDetailsOf Extended date field. While furthering my debuging, I simply created a string that appears the same and DateTime is able to parse it. When I view the 2 strings in Memory, they appear different.

The first few Bytes only.....

s > 4c 22 2e 63 16 00 00 00 0e 20 39 00 2f 00 0e 20 35 00 2f

q > 4c 22 2e 63 11 00 00 00 39 00 2f 00 35 00 2f 00 32 00 30

Is there a way to format the string so that I am able to parse it with DateTime.Parse?

0 投票
1 回答
903 浏览

java - 在 windows 上对接一个 java 应用程序 jna

我正在尝试构建一个 Windows 可停靠应用程序,该应用程序保留屏幕的一部分以防止其他应用程序显示在该空间中。

我尝试使用 JNI 和 JNA。上面的代码显示了我已经走了多远。

执行时,会显示框架,但不会打印错误或提示我做错了什么。

请注意,我刚开始使用 JNA,我可能会犯新手错误。随意将它们吸出来。

0 投票
0 回答
717 浏览

c# - 复制文件时如何显示标准进度对话框?

Windows 在复制文件时有一个很好的对话框,它显示了进度。当我从 C# 复制文件时,我想重新使用这个对话框。我可能需要一些 P/Invoke 调用,有人可以告诉我怎么做吗?

我知道在VisualBasic命名空间中,该My.Computer.FileSystem.CopyDirectory函数也提供了一个我可以从 C# 中使用的对话框,但该对话框与真实的对话框略有不同。