如何获取与文件类型关联的图标路径和索引?

2024-05-07

给定一个文件类型(例如.txt)我怎样才能得到:

  • path
  • index

文件类型的关联图标路径和索引,例如:

我想转换.txt into:

  • Path: %SystemRoot%\system32\imageres.dll
  • Index: -102

有了这些信息,我就可以提取图标(例如使用SHDefExtractIcon).

背景

Windows 中的每种类型的文件都在注册表中注册。当图标与文件关联时,它被指定为Path包含图标的文件以及图标资源的索引(如果索引为负,则作为资源 ID)。

Using .txt以文件为例,关联的默认图标 is:

%SystemRoot%\system32\imageres.dll,-102

提取关联图标

首先是Win API函数提取关联图标 https://msdn.microsoft.com/en-us/library/windows/desktop/ms648067(v=vs.85).aspx:

检索文件中找到的索引图标或关联的可执行文件中找到的图标的句柄。

这个想法是,你将路径和索引传递给它,它就会为你获取图标:

String iconPath = "%SystemRoot%\system32\imageres.dll";
Word iIcon = -102;

HICON ico = ExtractAssociatedIcon(0, iconPath, iIcon);

只有当你已经know您想要的图标的路径和索引。

幸运的是,提取关联图标也能够tell图标文件的路径和索引:

如果该函数无法从该文件获取图标句柄,并且该文件具有关联的可执行文件,它将在该可执行文件中查找图标。

在这种情况下正确调用该函数有点棘手,因为它会修改您提供的缓冲区(如果您没有将缓冲区填充得足够长,则会导致缓冲区溢出):

String iconPath = "C:\Example.txt" + StringOfChar(\0, 32767); //pad the InOut buffer
Word iIcon = 0;

HICON ico = ExtractAssociatedIcon(0, iconPath, iIcon);
DestroyIcon(ico);

当函数返回时:

  • iconPath: %SystemRoot%\system32\imageres.dll
  • iIcon: -102

为什么我不直接使用HICON由 ExtractAssociatedIcon 返回?因为 ExtratAssociatedIcon 不允许我指定我想要的图标的大小。它返回“Shell 大图标”,仅此而已。

此外,ExtractAssociatedIcon 可以执行按文件类型查找的英勇努力的唯一方法是如果文件actually存在。如果指定的文件不存在(它不存在 - 因为没有foo.txt),函数失败。

SHDef提取图标

Enter SHDef提取图标 https://msdn.microsoft.com/en-us/library/windows/desktop/bb762149(v=vs.85).aspx. It 能够提取我想要的任何大小的图标 https://blogs.msdn.microsoft.com/oldnewthing/20140501-00/?p=1103,你只需要把它传递给path and index图标资源:

String iconFile = "%SystemRoot%\system32\imageres.dll";
Int32 iIndex = -102;
HICON hLargeIcon;

if (SHDefExtractIcon(iconFile, iIndex, 0, out hLargeIcon, null, 256) == S_OK)
   return hLargeIcon

唯一的问题是我必须获得关联的path and index已经有文件类型了。和SHDef提取图标,不像提取关联图标,不会为您执行英勇的查找。

为此,我必须自己执行查找;这是我的问题。

越野车注册表洞穴探险

我的第一次尝试是读取对方的文件关联契约 https://blogs.msdn.microsoft.com/oldnewthing/20031226-00/?p=41343。我知道默认图标是如何注册的,我可以反向操作。

  • 转换.ext至相关的ProgID:

    HKEY_CLASSES_ROOT/.ext
        (default) = [ProgID]
    
  • 查找DefaultIcon在下面[ProgID]

    HKEY_CLASSES_ROOT/[progID]/DefaultIcon
        (default) = [path],[index]
    

就我而言:

HKEY_CLASSES_ROOT/.txt
   (default) = txtfile

HEKY_CLASSES_ROOT/txtfile/DefaultIcon
   (default) = "%SystemRoot%\system32\imageres.dll,-102"

这是后面代码使用的方法这接受了 https://stackoverflow.com/a/272044/12597Stackoverflow 对同一个问题的回答:

  • 将 ext 转换为 progID
  • 查找 progID 的 DefaultIcon 键

Assuming the ext exists, and the progID exists, and the DefaultIcon exists, and the path exists, and i can parse the path, it's an incorrect unsupported answer. There are edge cases that the accepted code does not handle1.

我想要 Windows API支持的执行映射的方法.ext to

  • path
  • index

SH获取文件信息

有一个方便的功能SH获取文件信息 https://msdn.microsoft.com/en-us/library/windows/desktop/bb762179(v=vs.85).aspx。它很方便,因为文件名不需要actually exist https://blogs.msdn.microsoft.com/oldnewthing/20040601-00/?p=39073。如果你通过了SHGFI_USEFILEATTRIBUTES标志,它的意思是:

不要访问磁盘。假设文件/目录存在,并且其文件属性是我作为 dwFileAttributes 参数传递的内容。无论它是否实际存在,都执行此操作。

这很好:

SHELLFILEINFO sfi;
DWORD res = SHGetFileInfo("foo.txt", 
      FILE_ATTRIBUTE_NORMAL,
      ref shellFileInfo,
      sizeof(shellFileInfo),
      SHGFI_ICON | SHGFI_LARGEICON | SHGFI_SHELLICONSIZE | SHGFI_USEFILEATTRIBUTES);

if (res <> 0)
   return shellFileInfo.hIcon;

唯一的问题是我无法指定我想要的图标大小。我受限于图标的大小shell决定it想要使用。

提取图像

提取图像 https://msdn.microsoft.com/en-us/library/windows/desktop/bb761848(v=vs.85).aspx很好:

  • 它可以返回关联图标的[路径]、[索引]
  • 我可以指定所需的尺寸

不幸的是,它需要一个实际存在的文件(它必须是exists在 shell 命名空间中)。当我只有一个文件类型时我无法使用提取图像

IT缩略图提供程序

IT缩略图提供程序 https://msdn.microsoft.com/en-us/library/windows/desktop/bb774614(v=vs.85).aspx随 Windows Vista 一起推出,是现代的替代品提取图像:

视窗VistaIThumbnailProivder 是 Vista 中的新增功能,它取代了 IExtractImage。 Vista仍然支持提取图像 https://msdn.microsoft.com/en-us/library/windows/desktop/bb761848(v=vs.85).aspx但缺乏返回图像类型(Alpha 或非 Alpha)的能力。

IThumbnailProvider 还允许我提供所需的图标大小。出色的!

IT缩略图提供程序通常要求 shell 命名空间中存在一个文件。但这只是因为 Shell API 是获取 ahold(“绑定”)的唯一受支持的方法。IT缩略图提供程序由文件类型公开的 shell 接口。

幸运的是,我可以执行与上面使用的相同的可怕黑客操作,并手动抓取注册表:

HKEY_CLASSES_ROOT/.ext/ShellEx/[InterfaceID]
   (default) = [ClassID]

如果不存在:

HKEY_CLASSES_ROOT/.ext
   (default) = [ProgID]

HKEY_CLASSES_ROOT/[ProgID]/ShellEx/[InterfaceID]
   (default) = [ClassID]

就我的情况而言.avi file:

HKEY_CLASSES_ROOT/.avi/ShellEx/{e357fccd-a995-4576-b01f-234630154e96}
   (default) = "{9DBD2C50-62AD-11D0-B806-00C04FD706EC}"

现在我带着一个去参加比赛CLSID!

不幸的是事情到此结束了,因为IT缩略图提供程序需要一个文件。更准确地说,它需要IInitializeWithStream.

我没有流。我没有文件。我只有文件类型的概念。

关联查询字符串

Perhaps 关联查询字符串 https://msdn.microsoft.com/en-us/library/windows/desktop/bb773471(v=vs.85).aspx可以帮我?我实际上不知道——这是一个野兽般的函数。我对此一无所知。

问题

给定文件类型(例如“x.txt”),我如何获取关联的图标:

  • path
  • index

所以我可以提取我自己想要的大小的图标(可能使用 SHDefExtractIcon)?

脚注

1 exefile and %1


答案是我非常接近:

  • Use SHGetFileInfoSHGFI_ICONLOCATION标记以获取默认图标Path and Index
  • Use SHDefExtractIcon提取默认图标Path,Index达到所需的尺寸

或者用函数形式:

HICON GetFileTypeDefaultIcon(String filename, Int32 iconSizePx)
{
    //Filename is anything like "a.txt", "foo.xml", "x.zip"
    //The file doesn't have to exist, but it can't be an invalid 
    //filename (e.g. "???.txt" is no good)

    //Use SHGetFileInfo to get the path and index of our file type's icon
    SHFILEINFO sfi;

    //SHGFI_IconLocation means get me the path and icon index
    //SHGFI_UseFileAttributes means the file doesn't have to exist
    DWORD_PTR res := SHGetFileInfo(
            filename,
            FILE_ATTRIBUTE_NORMAL,
            ref sfi,
            sizeof(sfi),
            SHGFI_ICONLOCATION or SHGFI_USEFILEATTRIBUTES);

   if (res = 0) //"nonzero if successful"
      return 0;

   //The path and index are stuffed into the ShellFileInfo structure
   String iconPath := sfi.szDisplayName;
   Int32 iconIndex := sfi.iIcon;

   //Now that we know the path and index, we can use SHDefExtractIcon
   HICON largeIcon;
   iconSizePx = iconSizePx and 0xFFFF; //preferred large icon size is in LOWORD 16-bits

   HRESULT hr := SHDefExtractIcon(iconPath, iconIndex, 0, 
      out largeIcon, null, iconSizePx); 
   if (hr <> S_OK) 
      return 0;

   return largeIcon;
}

停止对外壳对象进行拼写检查

I also 发现有一个 20 年前的 Windows 函数 https://stackoverflow.com/questions/23633246/how-to-get-the-ipreviewhandler-for-a-file-extension可以执行 shell 扩展的注册表爬行。它还处理我错过的情况 - 因为这是规范正确的方法。

只是为了记录和解释 shell 类:

文件类型有一个ShellEx钥匙,与{guid}子项。每个{guid}键代表一个特定的接口ID.

有许多可与文件类型关联的标准 shell 接口:

  • {BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}提取图像
  • {953BB1EE-93B4-11d1-98A3-00C04FB687DA}提取图像2
  • {e357fccd-a995-4576-b01f-234630154e96}IT缩略图提供程序
  • {8895b1c6-b41f-4c1c-a562-0d564250836f}IPReviewHandler

例如,如果我想找到clsid of the IT缩略图提供程序与一个相关联.jpg文件,我会查看:

HKEY_CLASSES_ROOT/.jpg/ShellEx/{e357fccd-a995-4576-b01f-234630154e96}
   (default) = [clsid]

但这并不是我唯一能看的地方。我还可以查看:

HKEY_CLASSES_ROOT/.jpg
   (default) = jpgfile
HKEY_CLASSES_ROOT/jpgfile/ShellEx/{e357fccd-a995-4576-b01f-234630154e96}
   (default) = [clsid]

但这并不是我唯一能看的地方。我还可以查看:

HKEY_CLASSES_ROOT/SystemFileAssociations/.jpg/ShellEx/{e357fccd-a995-4576-b01f-234630154e96}
   (default) = [clsid] 

但这并不是我唯一能看的地方。我还可以查看:

HKEY_CLASSES_ROOT/SystemFileAssociations/jpegfile/ShellEx/{e357fccd-a995-4576-b01f-234630154e96}
   (default) = [clsid]

但这并不是我唯一能看的地方。如果我认为该文件是图像,我还可以查看:

HKEY_CLASSES_ROOT/SystemFileAssociations/image/ShellEx/{e357fccd-a995-4576-b01f-234630154e96}
   (default) = [clsid]

我是如何找到这些地点的?我是否只遵循记录和支持的位置?不,我使用进程监视器监视资源管理器,因为它正在寻找一个IT缩略图提供程序.

所以现在我想自己使用标准的 shell 接口来处理文件类型。这意味着我必须抓取这些位置。但为什么要以无记录、不受支持的方式抓取这些位置呢?为何招致愤怒the guy https://blogs.msdn.microsoft.com/oldnewthing/从高处事情 https://www.youtube.com/watch?v=N1tyiWP9MSk? Use 关联查询字符串 https://msdn.microsoft.com/en-us/library/bb773471(v=vs.85).aspx:

Guid GetShellClassIDForFileType(String fileExtension, Guid interfaceID)
{
    //E.g.:
    //   String fileExtension = ".jpg"
    //   Guid   interfaceID   = "{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}"; //IExtractImage

    //The interface we're after - in string form
    String szInterfaceID := GuidToString(interfaceID);

    //Buffer to receive the clsid string
    DWORD bufferSize := 1024; //more than enough to hold a 38-character clsid
    SetLength(buffer, bufferSize);

    HRESULT hr := AssocQueryString(
          ASSOCF_INIT_DEFAULTTOSTAR, 
          ASSOCSTR_SHELLEXTENSION, //for finding shell extensions
          fileExtension, //e.g. ".txt"
          szInterfaceID, //e.g. "{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}"
          buffer,        //will receive the clsid string
          @bufferSize);
   if (hr <> S_OK) 
      return Guid.Empty;

   Guid clsid;
   HRESULT hr = CLSIDFromString(buffer, out clsid);
   if (hr <> NOERROR) 
      return Guid.Empty;

   return clsid;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取与文件类型关联的图标路径和索引? 的相关文章

  • 在 SYSTEMTIME 上执行算术

    我有一个以 SYSTEMTIME 表示的时间值 我想从中添加 减去 1 小时并获取新获得的 SYSTEMTIME 我希望转换应该处理加法 减法或月份更改或 e1 年更改的日期更改 如果有一些 Windows api 在 SYSTEMTIME
  • Bash 参数引号和 eval

    我编写了一个 bash 日志记录库 用我公司当前正在使用的一些复杂脚本来实现 在进行日志调用时 我一直致力于提供调用脚本的脚本文件名 BASH SOURCE 和行号 LINENO 但是 我不想依赖用户或实现脚本来将这两个变量作为参数传递 如
  • 批量获取当前目录,不带盘符

    如何获取当前工作目录并获取没有驱动器号的路径 例如 C testing test test I would like to get in a variable testing test test 如何修剪驱动器盘符 我可以使用获取完整路径
  • 检查 Bash 数组中是否存在元素[重复]

    这个问题在这里已经有答案了 我想知道是否有一种有效的方法来检查 Bash 数组中是否存在元素 我正在寻找类似于我可以在Python中做的事情 例如 arr a b c d if d in arr do your thing else do
  • 如何通过双击图标来执行JAVA程序?

    我写了一个java程序 现在我想在没有 IDE Eclipse 等的情况下打开我的控制台 java 应用程序 只需双击桌面上的可执行版本即可 我已将 java 项目导出为 Runnable JAR 文件 但无法打开 当我尝试使用cmd打开应
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 如何获取subprocess.run启动的进程的pid并杀死它

    我使用的是 Windows 10 和 Python 3 7 我运行了以下命令 import subprocess exeFilePath C Users test test exe subprocess run exeFilePath 使用
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • Nodejs 在 Windows 上找不到已安装的模块

    我现在正在Windows上学习nodejs 使用npm cmd全局安装了几个模块 nodejs找不到已安装的模块 以玉石为例 npm install jade g Jade安装在目录中 C Program Files x86 nodejs
  • Windows 上 PE 文件 (exe) 的最小文件大小是多少?以及最小内存分配? [复制]

    这个问题在这里已经有答案了 Windows 上 PE 文件 exe 的最小文件大小是多少 以及最小内存分配 我 使用 VS 10 附带的 MASM ml exe 和 link exe 组装了以下代码 我不能忽略 kernel32 lib 和
  • 如何计算 WPF 中的非客户端窗口大小?

    WPF 有SystemParameters class http msdn microsoft com en us library system windows systemparameters aspx公开了大量的系统指标 在我的计算机上
  • R 控制台是我的母语,如何将 R 设置为英语?

    我在 Windows 7 上使用 R 显然 R 不知何故发现了我说英语以外的语言的证据 并且顽固地坚持在控制台中以我自己的语言提供输出 由于多种原因 这是不可取的 我希望 R 是英语 什么有效 我能够使用LANGUAGE en作为 R 控制
  • Visual C++ free 和 malloc 的线程安全性?

    有谁知道 free 和 malloc 在 Visual C 2010 上是否是线程安全的 我遇到了奇怪的问题 内存被损坏 我几乎认为这是唯一的可能性 有谁知道安全装置是否可以打开和关闭以及如何打开和关闭 前提是您链接的是线程安全库 http
  • shell解析json并循环输出组合变量

    杰斯克喜欢我之前的话题 https stackoverflow com questions 74063588 shell parsing json contains spaces in string 我知道如何解析带有空格的简单 json
  • 通过 PsExec 在远程计算机中执行批处理文件

    我正在尝试通过 PSExec 在远程 PC 上运行批处理文件 在批处理文件中我刚刚编写了 记事本 下面的 psexec 命令在我的笔记本电脑上运行 但无法在远程 PC 上执行任何操作 我什至没有看到 记事本 在远程计算机的进程列表上运行 c
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 消失的系统托盘图标

    我正在使用 C 在 Visual Studio 2010 中创建系统托盘应用程序 当应用程序启动时 我创建线程和系统托盘图标 该图标显示 但是每当我将鼠标悬停在该图标上时 它就会消失 应用程序仍在运行 即使我单击按钮显示所有隐藏的图标 它也
  • LNK2019:函数 ___tmainCRTStartup 中引用了无法解析的外部符号 _main

    我有以下错误 LNK2019 函数 tmainCRTStartup 中引用了无法解析的外部符号 main 有很多与此错误相关的线程 但这些解决方案都不适合我 而且 没有人解释为什么会出现这个错误 I tried wWinMainCRTSta
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • #*/ 在 UNIX Shell 脚本中使用

    谁能详细说明 在 UNIX Shell 脚本中的工作原理 我已经看到它在 Korn Shell 中的使用 它专门用于删除文件的扩展名 例如 func write app log o 删除状态文件 CIE STATUS FILE 这里假设文件

随机推荐

  • 模拟器中缺少“Web Inspector”设置

    在模拟器上执行 重置所有内容和设置 后 在 safari 中启用 Web 检查器的设置消失了 我不知道如何恢复它 有谁知道如何恢复它 并再次在模拟器中 远程 调试网页 似乎这个选项在模拟设备中不可用 提示 如果您想从桌面 Safari 连接
  • 相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G

    在 Oracle 的 SQL Plus 中 SELECT 的结果以表格方式显示 有没有办法以键值方式显示一行 例如MySQL的 G option http slaptijack com software enabling vertical
  • 是否存在 UTF-8 编码中未使用的字节?

    据我了解 UTF 8 是 ASCII 的超集 因此包括不用于表示可打印字符的控制字符 我的问题是 是否有任何字节 256 个不同的字节 未被 UTF 8 编码使用 我想知道你是否可以转换 编码UTF 8 文本转二进制 这是我的思考过程 我不
  • 所有模型的 SQLAlchemy 事件 after_create

    我正在开发一个项目 需要对创建的每个模型进行通用定制 迄今为止我完成大部分工作的方式是通过模型继承 这是我的代码块 可以为您提供更好的想法 app core dba mixins class AuditExtension MapperExt
  • Bash:查找并连接文件

    我有以下结构 home DIR1 file ab csv DIR2 file cd csv DIR3 file3 ef csv Where file csv包含多行浮点数 每个 DIR 都有不同的浮点数 我想抓取所有的内容file csv文
  • C++11 的 LLVM&Clang 支持

    我有一些为 MS VC 10 编写的代码 我使用 C 11 特别是像这样的表达式 std function
  • Firebase 3.x - Facebook 登录

    InFirebase 2 5 1 我曾经这样做过 而且很有效 IBAction func facebookLoginDidTouch sender AnyObject let facebookLogin FBSDKLoginManager
  • 使用 setcap 功能运行时 JLI_InitArgProcessing 的 Java“符号查找错误”

    我们在服务器上安装了 Java 11 旨在监视网络接口的流量 初始安装后 yum install java 11 openjdk devel x86 64 the java命令对两者都适用root and a 普通用户 但是 我们的 Jav
  • 将画布输出图像调整为特定尺寸(宽度/高度)

    我有一个大画布 5000x5000 我想拍一张照片并在客户端创建一个缩略图 我可以使用捕获图像canvas toDataURL但我该如何调整它的大小 我必须创建一个新的吗
  • 什么是“标量”查询?

    我正在使用 LLBLGEN 其中有一种方法可以将查询作为scalar query 谷歌搜索给了我一个定义scalar sub query 它们一样吗 标量查询是返回由一列组成的一行的查询
  • 当互联网连接丢失时,不间断地读取输入流

    我使用异步任务来下载文件 它正常工作 直到我关闭我的 Android 的 wifi 连接 没有其他互联网连接 下载对话框仍然存在并且没有任何变化 当我检查日志时 我发现输入流的函数 read 不停顿 那么如何检查这个案例呢 这是我的代码 U
  • iPhone UIDatePicker 风格

    有什么方法 技巧可以更改 uiDatePicker 的大小 字体 背景颜色等吗 甚至背景颜色属性也不起作用 并且选择器的默认样式与我的应用程序的设计无关 也许你可以使用 UIPickerView 来代替 我见过人们使用图像作为背景 不过 您
  • 通过 Emacs 评估 ghci 或 Hugs 中的缓冲区

    在 Emacs 中使用 sml mode 我已经能够使用以下命令将缓冲区内容直接发送到较差的 SML 进程C c C b 现在我只想用 Haskell 做同样的事情 Haskell 模式似乎不支持这一点 所以我想知道 使用 Emacs 和
  • 如何删除/统计 s3 存储桶中的对象?

    所以我知道这是一个常见问题 但似乎没有任何好的答案 我有一个桶 里面有大量 我不知道有多少 文件 都在2k一个以内 1 我如何知道我有多少个这些文件没有列出他们 我使用过 s3cmd rb aws s3 和 jets3t 的东西 我能找到的
  • 使用“对多”关系从 NSFetchedResultsController 派生 UITableView 部分

    我的核心数据模型如下所示 article lt gt gt category 是否可以远程使用NSFetchedResultsController生成一个看起来像这样的 UITableView Category 1 Article A Ar
  • 就MVC模式而言,Struts 2中使用的Action是什么?

    在Struts2中 控制器将请求分派给Action Action将其传递给后端逻辑 这可以看作是一个非常大的过程 model 处理请求 JSP代表视图 Struts2中如何定义Action 肯定是not一个看法 是控制器还是模型 Strut
  • Postgres 重叠数组中的一列

    我有一个表 A 其中有一列 col1 其中每个记录都是整数数组 col1 1 2 3 4 1 2 6 7 1 2 3 8 9 我喜欢有一行作为结果 其中包含 col1 中所有数组的重叠或相交 select overlap col1 from
  • jQuery - 解析 JSON 数据 - 变量名称遇到问题

    我第一次深入研究 JSON 数据的使用 不过我有一些使用 jQuery 的经验 我发布到此 URL tumblr api jyoseph com api read json 我想做的是输出返回的 json 到目前为止我所拥有的 docume
  • 在 C/C++ 中使用单个初始化来初始化具有相同值的多个指针

    我想在 C C 中使用单个赋值运算符声明两个或多个具有相同值的指针 以下代码是一个示例 List a NULL List b NULL List c NULL 一行中是否有等效项 编辑 为了澄清 我正在寻找两种语言的答案 我使用 斜杠 来区
  • 如何获取与文件类型关联的图标路径和索引?

    给定一个文件类型 例如 txt 我怎样才能得到 path index 文件类型的关联图标路径和索引 例如 我想转换 txt into Path SystemRoot system32 imageres dll Index 102 有了这些信