系统里有很多图标,还有一些是软件注册的。但无论是系统还是软件,图标都可以在注册表里找到。例如HKEY_CLASSES_ROOT\txtfile\DefaultIcon。在这个键里,会有逗号分隔两个参数。还拿这个当例子,它的值是%SystemRoot%\system32\imageres.dll,-102,表示是imageres.dll里的第112个图标,所以我们用ExtractIcon API提取imageres.dll的图标就可以了。话不多说,上代码。
#include <iostream>
#include <olectl.h>
#include <Windows.h>
using namespace std;
char dwValue[256];
HICON On(char *data_Set){//根据文件子项获得图标路径并提取
HKEY hKEY;
HICON hIcon;
long result = ::RegOpenKeyEx(HKEY_CLASSES_ROOT, data_Set, 0, KEY_READ, &hKEY);
cout << &hKEY << endl;
cout << result<< endl;
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CLASSES_ROOT, data_Set, 0, KEY_READ, &hKEY)){
DWORD dwSzType = REG_EXPAND_SZ;