ExtractAssociatedIcon 返回 null

2023-12-09

我正在使用ExtractAssociatedIcon检索文件图标的方法。我的希望是检索用户在资源管理器窗口中看到的相同图标。

    public static Icon GetIcon(string fileName) 
    {
        try
        {
            Icon icon = Icon.ExtractAssociatedIcon(fileName);
            return icon;
        }
        catch
        {
            return null;
        }
    }

这在 99% 的情况下都有效。但是,如果用户链接到共享路径上的文件,例如\\SOME_SERVER\my documents\this file.pdf它返回 null。它因文件路径不是有效路径的错误而落入“陷阱”。

它是一个有效的 URI(我已验证该文件存在、可读等),但不是带有 X:\some\folder 表示法的有效完全限定驱动器路径。

如果有的话,我该如何解决这个问题?

Thanks.

重新更新


(评论变成后 - CTIP)

查看链接在这里这最终导致P/Invoke.net使用以下代码:

[DllImport("shell32.dll")]
static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath, out ushort lpiIcon);

[DllImport("shell32.dll")]
static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);

_

ushort uicon;
StringBuilder strB = new StringBuilder(YOUR_FILE_PATH);
IntPtr handle = ExtractAssociatedIcon(this.Handle, strB, out uicon);
Icon ico = Icon.FromHandle(handle);

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

ExtractAssociatedIcon 返回 null 的相关文章

随机推荐

  • jQuery 原型冲突

    我使用prototype和script aculo us的组合在我的asp net页面中实现灯箱效果 我的页面中还包含jquery 我的页面中有几个DIV标签 但是在将prototype文件包含在我的页面头部 我无法使用 jquery 读取
  • 使用 DocuSign REST API 获取/设置模板字段

    我在 DocuSign 沙箱中创建了一个测试模板 为与另一个系统进行一些自动化做准备 我正在尝试填充这些自定义字段 因为需要包含动态输入的数据 到目前为止 我在身份验证 创建基于模板的 信封 或分配角色方面没有遇到任何问题 我可以毫无问题地
  • 在 Domino Java 代理中使用枚举单例编码模式

    这是我尝试运行的非常简化的 Lotus Domino Java 代理代码 import lotus domino enum SingletonTest INSTANCE public void helloWorld System out p
  • Class#getClassLoader 什么时候返回 null?

    假设我有一些 Java 代码 public class Widget whatever 以及一些类加载的代码Widget ClassLoader widgetLoader Widget class getClassLoader Can wi
  • Angular2 使用对象数组排序管道

    如何使用对象数组在 angular2 中制作排序管道 原始问题 我有一个 TODO 列表 Todo 我想在每次进行一些更改时对其进行排序 我希望已完成的待办事项显示在列表底部 Todo 对象有一个名为 completed 的属性 它存储一个
  • 如何在 vbscript 中解压受密码保护的文件?

    我对 VBScript 还很陌生 我对我想要实现的目标做了一些广泛的研究 甚至找到了该怎么做的例子 但无法让它正常工作 在我的完美世界中 我需要解压缩从第三方供应商发送到文件夹的所有压缩文件 将解压缩的文件导入到不同的文件夹中 然后删除压缩
  • 读取缓冲的二进制文件(带查找)

    假设我需要读取巨大的整数二进制文件 一个方便的方法是 FileInputStream fi new FileInputStream file BufferedInputStream bi new BufferedInputStream fi
  • 查找当前 EntityManagerFactory 的当前持久化单元

    我注意到打电话createEntityManagerFactory null 将使用配置文件中的默认持久性单元 PU 有时 类路径在部署时真的很混乱 我真的很想查看给定 EntityManagerFactory 的当前 PU 的名称 有什么
  • 使用discord.py 让机器人响应图像

    使用discord py 进行机器人编码的新手 正如标题所示 我希望有人能告诉我如何让机器人响应某人发送的图像 无论是从互联网粘贴还是从计算机上传 当然 您可以使用 attachments client event async def on
  • 我需要一个正则表达式将美国电话号码转换为链接

    基本上 输入字段只是一个字符串 人们以各种格式输入电话号码 我需要一个正则表达式来查找这些数字并将其转换为链接 输入示例 201 555 1212 201 555 1212 201 555 1212 555 1212 这就是我想要的 a h
  • socket.error: [Errno 48] 地址已在使用中

    我正在尝试从 mac 终端使用 python 设置服务器 我导航到文件夹位置并使用 python m SimpleHTTPServer 但这给了我错误 socket error Errno 48 Address already in use
  • 使用 Gspread 在文件夹中创建电子表格

    我无法找到有关如何使用 Gspread 在某个 Google Drive 目录中创建 GSheet 的任何文档 我检查了文档并查看了一些后端代码 我目前正在使用下面的代码来创建电子表格 worksheet sh add worksheet
  • 如何将Asterisk服务器与外部关系数据库(例如mysql)集成?

    我的目标 客户端 SIP电话 我使用3CX电话 拨号到asterisk服务器 asterisk然后连接外部关系数据库 与asterisk服务器不在同一位置 如果数据库响应某些内容 asterisk服务器播放语音文件 预定义的 gsm 文件
  • 传递 URL 中包含“%”的参数?

    例如 在传递我的网址时something 8000 something jsp param1 update param2 1000 param3 SearchString param4 3 我收到以下错误 Bad Request Your
  • 将每个组中的行替换为第一行值。熊猫集团

    这是一个数据框 df pd DataFrame A foo foo bar bar bar B 1 2 2 4 1 下面是我想要的样子 这就是我的尝试和失败的方法 groups df groupby A groups apply lambd
  • 使用 jQuery 滚动到某个元素

    我有这个input元素
  • 如何从 C++ 更改 Windows shell (cmd.exe) 环境变量?

    我想编写一个程序 在调用它的 shell cmd exe 实例中设置环境变量 我的想法是 我可以在这个变量中存储一些状态 然后在后续调用中再次使用它 我知道有像 SetEnvironmentVariable 这样的命令 但我的理解是这些命令
  • 在 msi 自定义操作中执行时,MsiOpenDatabaseW 引发访问冲突

    我有一个代码可以修改cached 不是正在安装的 msi 安装程序数据库工作正常在独立 exe 中执行时 但是当它从 msi 自定义操作中运行时 我遇到了非常奇怪的访问冲突 const auto msiProductCode GetProd
  • 为迷宫墙添加碰撞

    有人可以帮我向我的精灵添加碰撞点吗 我过去有一个代码 我在图像上分层了位图 但相同的代码不能很好地集成用于物理绘制线条 而不是检测图像上黑色 灰色的位置 import random import pygame pygame init WHI
  • ExtractAssociatedIcon 返回 null

    我正在使用ExtractAssociatedIcon检索文件图标的方法 我的希望是检索用户在资源管理器窗口中看到的相同图标 public static Icon GetIcon string fileName try Icon icon I