相关疑难解决方法(0)

如何使用Delphi获取与文件扩展名相关联的程序名称?

我需要获取当前与当前用户的文件扩展名相关联的程序的名称.如果右键单击文件并选择属性,那么我需要的是"打开方式"行右侧的程序名称.

例如,对于".xls",我希望能够得到答案"Microsoft Office Excel",或者用户拥有的任何程序作为打开.xls文件的默认程序.

我已经确定它并不像进入HKEY_CLASSES_ROOT并选择它那么容易,因为它也可以在HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER或HKEY_USERS中指定.

也许我需要知道的是Windows用来确定这个以及如何到达每个位置的啄食顺序.当然,执行此操作的Windows API调用将是理想的.

这是一个类似的问题: 如何使用Delphi从文件扩展名获取图标和描述?但是这个问题只回答了如何获得扩展的描述和相关程序的图标.我找不到扩展它的方法来获取相关程序的名称.

我正在使用Delphi 2009,需要一个适用于Windows XP,Vista和7的解决方案.


谢谢大家的答案.

我认为可执行文件的名称毕竟不在注册表中.在广泛浏览了将提供名称的Windows API之后,我找不到一个.

我认为Mef的答案是最好的.从程序可执行文件中包含的信息中获取可执行文件的名称.

windows delphi registry file-type file-association

9
推荐指数
4
解决办法
1万
查看次数

如何获取与文件类型关联的图标?

我有一个表单在TabControl中显示文件信息,我希望页面在其选项卡中有文件的图标.如何获取与文件类型关联的图标?

我更喜欢不涉及在注册表中查找内容的解决方案,但如果这是唯一的方式那么就是这样.

c# icons file-association

7
推荐指数
2
解决办法
8875
查看次数

如何在Windows Vista和7中检索Windows资源管理器使用的文件预览?

我正在开发一个Delphi文档管理应用程序,所以我给用户一些类似于Windows资源管理器的功能.

我想知道是否有办法获取Windows资源管理器使用的预览.例如,Windows资源管理器为pdf文档创建一个小缩略图,并在用户选择查看"大图标"时显示它.有没有办法检索该预览?

MyTImage := GiveMePreviewForFile('C:\Test\File.pdf');
Run Code Online (Sandbox Code Playgroud)

delphi native-methods

4
推荐指数
1
解决办法
3296
查看次数

通过文件扩展名获取扩展名和图标的最快方法?

有几种方法可以获取给定扩展的描述和默认图标(没有完整路径),例如"*.doc"我想获得"Microsoft Word文档"和相关图标,您认为这将是最快的以下之一:

  1. 搜索注册表:

    • 在注册表中,转到"HKCR.{extension}",读取默认值(让我们称之为文件类型)
    • 在"HKCR {filetype}\DefaultIcon"中,读取默认值:这是图标文件的路径(或图标容器文件,如带有嵌入图标资源的.exe)
    • 如果需要,请使用从首先提到的文件中提取图标资源的首选方法.
  2. 调用API ShGetFileInfo.我相信这有点慢.

  3. 根据Rob的说法,这里:如何使用Delphi从文件扩展名中获取图标和描述?

将IExtractIcon接口称为"更灵活,更高效"的替代方案.但它建议的顺序是使用IShellFolder接口,然后调用GetUIObjectOf获取文件的IExtractIcon接口,然后调用GetIconLocation和Extract来检索图标的句柄.(但是这个方法无法读取扩展描述?)

由于速度非常重要,因为我需要读取系统中所有文件类型的信息.

非常感谢你!

windows-shell

0
推荐指数
1
解决办法
2424
查看次数