问题标签 [windows-shell]

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 投票
3 回答
200 浏览

php - 描述中给出的代码是否可以在 Windows 系统中执行?

给出的代码在 Windows 系统中是可执行的吗?因为它似乎是 Linux 命令

编辑 我正在执行以下代码,但我没有得到我所期望的..

0 投票
1 回答
93 浏览

windows-shell - 如果没有 Windows Shell,无线连接将无法工作

我们在 Windows XP 上运行专用应用程序并禁用 shell 以防止用户访问 Windows 功能。当我们切换到无线网络时,卡在我们启动 shell 之前无法工作。有没有办法让它在没有外壳的情况下工作?

0 投票
2 回答
1049 浏览

c++ - 从 Windows 卸载时如何从其他用户帐户中删除 ProgID?

我一直在研究“现代 Windows c++ 应用程序应如何注册其文件类型”与 Windows(请参阅C++:如何为我们的应用程序正确注册和注销文件类型关联(以编程方式))。

在梳理了有关该主题的各种 MSDN 文章后,总结如下

  1. 安装程序(提升)应该注册全局 ProgID HKLM\Software\Classes\my-app.my-doc[.version](例如 HKLM\Software\Classes\TextPad.text)
  2. 安装程序还为其文档类型(例如 .myext)配置默认关联,并将其指向上述 HKLM 中的全局 ProgID。
    注意:此处应提供用户界面以允许用户接受所有默认关联,或自定义应设置的关联。
  3. 运行标准(未提升)的应用程序应提供一个 UI,以允许当前用户设置他们的个人关联,如安装程序中可用的那样,除了这些关联存储在 HKCU\Software\Classes 中(每个用户,而不是每个机器) .
  4. 然后,UN-installer 负责删除所有已注册的 ProgID(但应该不理会实际的文件关联,因为 Windows 足够聪明,可以处理指向丢失 ProgID 的关联,这是 MSDN 指定的所需行为)。

因此,该架构对我来说听起来很合理,除非我考虑 #4:为给定用户帐户运行提升的卸载程序如何删除在步骤 #3 中为其他用户创建的任何每个用户 ProgID?

据我了解,即使在提升模式下,卸载程序也无法进入另一个用户的注册表配置单元并删除项目?或者可以吗?它是否必须首先加载每个给定的用户配置单元?这里有什么规则?

感谢您提供的任何见解!

编辑:请参阅下面的解决方案(我的问题是建立在混乱中)

0 投票
1 回答
469 浏览

c++ - 对于 MDI 应用程序,应该做什么来代替 ddeexec?

我们一直在使用 ddeexec 注册表项来处理从资源管理器打开设计。

MSDN(大约 2/3 进入文章)表明 ddeexec 已被弃用,应用程序应改用 IDropTarget。

我不清楚的是这实际上应该如何工作..

例如,如果我有用于处理 .foo 文件的 Foo.exe,那么注册表是什么样的?

如果命令设置为明显:

然后 Foo.exe 每次用户双击时启动,或者从上下文菜单中选择打开 .foo 文件。

但是,这意味着为用户尝试启动的每个文件启动一个单独的 Foo.exe 实例。呸。

我当然可以编写自定义代码以某种方式将文件名从 Foo.exe 的第二个实例传递回 Foo.exe 的第一个实例,然后退出......但是我正在编写相当多的自定义代码。

DDE 过去通过要求已经运行的 Foo.exe 的第一个实例打开指定的文件来优雅地(足够)处理这个问题。这使得 MDI 应用程序可以轻松地巧妙地处理打开多个文档,其中每个文档都是在 Foo.exe 的一个实例中打开的。

如果不推荐使用 DDE,那么首选机制是什么?我们的应用程序作为 MDI 应用程序更有意义 - 我们当然不希望 Foo.exe 运行多个实例(这只会惹恼我们的用户)。我当然不想编写一个新的 Foo-Shim.exe 来查找 Foo.exe 的真实实例,并使用一些自定义机制将打开的文件名传递给它。(我不能只为此目的使用 Foo.exe,因为 Foo.exe 很大,加载速度很慢,并且需要一个按实例计数的激活安全代码,因此如果您在您的最大并发用户限制)。


我在 IDropTarget 中看不到任何看起来与这种(常见)场景有很大关系的东西。

有谁知道MS在这里的意图是什么?

0 投票
1 回答
203 浏览

contextmenu - 如何在窗口自定义 ShellExtension 弹出菜单项中设置菜单帮助文本

我需要设置我的 shell 上下文菜单弹出菜单项的菜单帮助文本,就像 winzip shellContext 菜单一样。我试过 IContextMenu_GetCommandString 但它只是为我的主弹出菜单的子菜单设置菜单帮助。请帮助我,让我知道如何为我的主弹出菜单设置菜单帮助?

谢谢

0 投票
2 回答
877 浏览

delphi - 如何在 Windows Vista 和 Windows 7 上获取控制面板类别(组)

有没有办法使用 shell 获取 Windows Vista 和 Windows 7 上的控制面板类别列表?

有没有办法使用 shell 使用锥形名称来确定小程序分配给哪个类别?

比如Microsoft.Mouse是属于哪个类别的?

我有一些代码可以很好地显示从 Vista Classic 未分组列表中的 TListView 中的外壳获得的控制面板小程序名称。

我想尝试在 TListView 中对小程序名称进行分组,类似于 Vista 中按类别分组的控制面板经​​典。

账单

0 投票
1 回答
908 浏览

delphi - 对 Windows 资源管理器等 shell 项目进行排序

我正在德尔福制作面包屑棒,但在对面包屑下拉列表进行排序时遇到了一些问题。

奇怪的是,即使是 Vista 在展示这些项目时也不会随之而来。

我尝试了很多方法来弄清楚什么是系统文件夹、什么是 zip 文件以及什么是普通文件夹。这似乎是一项容易的任务,但到目前为止我还没有找到任何好的方法。

一种方法是使用 TSHFileinfo 中的 TypeDisplayName 但这些是本地化名称,因此我不能确定它们在每种语言中的顺序是否正确。

这是我用来填充菜单的代码:

有关如何获得正确排序顺序的任何解决方案?奇怪的是,在 TSHFileInfo 的 dwAttributes 中没有办法判断一个文件夹是否是系统文件夹。

感谢 Keith Giddings,我设法提出了这个解决方案:

罗伊·M·克莱弗

0 投票
3 回答
3631 浏览

c++ - IShellLink::SetIconLocation 将我的图标路径转换为错误的 %Program Files%

有谁知道如何纠正这种行为?

目前,当我们的安装程序安装我们的应用程序时,它会获得一个IShellLink,然后使用我们的快捷方式图标(在开始菜单和桌面中)所需的数据加载它,然后使用IPersistFile::Save写出快捷方式。

问题是通过IShellLink::SetIconLocation为图标指定的路径被转换为使用%ProgramFiles%...这...对于 x64,是错误的。

我注意到许多其他 32 位软件在 x64 下都失败了 - 但后来我假设他们自己使用%ProgamFiles%作为 .lnk 创建代码中的文字元素。但是,似乎是IShellLink迫使此错误存在,并且我没有解决方法(或者可能是 shell 中的链接属性编辑器负责该问题并且底层链接正常)。

一些谷歌搜索没有任何结果......有没有其他人遇到过这个或知道如何强制 x64 窗口不搞砸的文章/示例?

澄清示例:

将产生一个具有正确图标的快捷方式,但是当您在快捷方式属性页面中按“更改图标”时,将报告“Windows 找不到文件 %ProgramFiles%\Acme\Prog.exe”。)

0 投票
1 回答
4194 浏览

wpf - 如何从我的 WPF 应用程序访问 Windows 文件预览图标

我在一个目录中有一堆图片和视频,需要在 WPF 应用程序中显示,我正在考虑将 Win7 大图标本身显示为预览图像。因为这将节省我从视频文件中抓取适当帧的工作,因为 Windows 已经很好地完成了这项工作。有任何代码片段可以访问这个 Shell Icon 图像数据吗?

0 投票
4 回答
5255 浏览

c# - C#:如何使用 SHOpenFolderAndSelectItems

有人可以举例说明如何使用C#中的 shell 函数SHOpenFolderAndSelectItems吗?我不太了解如何使用这些功能,也无法在pinvoke.net上找到它... =/

假设我有三个文件称为

  • X:\Pictures\a.jpg
  • X:\Pictures\s.jpg
  • X:\Pictures\d.jpg

然后我想用,打开X:\Pictures文件夹并选中。a.jpgs.jpgd.jpg