21xrx.com
2024-09-19 09:31:13 Thursday
登录
文章检索 我的文章 写文章
C++获取exe文件图标
2023-07-05 12:58:50 深夜i     --     --
C++ 获取 exe文件 图标

在Windows操作系统中,每个可执行文件(.exe)都有一个对应的图标。如果你想要在自己的程序中使用这些图标,那么你需要知道如何获取它们。在这篇文章中,我们将介绍如何在C++中获取.exe文件的图标。

第一步是获取.exe文件的路径。这可以通过各种方式完成,包括在程序中硬编码路径,通过对话框允许用户选择路径等等。假设你已经知道了.exe文件的路径,下面就是如何获取它的图标。

我们将使用Shell API中的ExtractIconEx函数来提取图标。这个函数需要两个参数:文件路径和一个整数,它是该文件中图标的索引。为了获取默认图标,索引应该设置为0。

以下是示例代码:


int iconIndex = 0;     // 索引为0表示默认图标

HICON hIconLarge[1];    // 大图标(32x32)

HICON hIconSmall[1];    // 小图标(16x16)

ExtractIconEx(filePath.c_str(), iconIndex, hIconLarge, hIconSmall, 1);

代码中的filePath是我们要获取图标的.exe文件路径。hIconLarge和hIconSmall是用来接收提取的图标的HICON句柄的数组。ExtractIconEx函数返回的值表示提取的图标的数量。

一旦我们有了HICON句柄,我们就可以使用Windows API中的DrawIcon函数来将图标绘制到屏幕上。以下是示例代码:


HDC hDC = GetDC(NULL);  // 获取屏幕上下文句柄

DrawIcon(hDC, x, y, hIconLarge[0]);  // 绘制大图标

// 绘制完后需要删除图标,释放所占用的资源

DestroyIcon(hIconLarge[0]);

ReleaseDC(NULL, hDC);

代码中的x和y表示在屏幕上绘制图标的位置。我们首先通过GetDC函数获取屏幕上下文的句柄,然后使用DrawIcon函数将图标绘制到屏幕上。最后,我们需要删除图标,释放所占用的资源,方法是使用DestroyIcon函数。

总结一下,通过Shell API中的ExtractIconEx函数和Windows API中的DrawIcon函数,我们可以很容易地获取.exe文件的默认图标并绘制到屏幕上。以上是获取图标的基本方法,如果需要获取多个图标或指定索引,可以对代码进行适当调整。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复