如何在"设备和打印机"?中获取设备图片? (视窗)

时间:2017-09-24 00:49:32

标签: winapi hid

我使用SetupDi...函数来枚举HID设备。

如果我在Windows设置中查看这些设备,他们会有很好的高分辨率图标(照片)。我正在寻找接收API的API。

我已经尝试了SetupDiLoadDeviceIcon,但结果却不足:

hid device icon

这是我申请100x100图标的时候。我也尝试过越来越大的尺寸。

以下是我使用的代码(稍微简化,迭代index给出了所有HID设备):

 GUID guid;
 HidD_GetHidGuid(&guid);
 device_info_set = SetupDiGetClassDevs(guid, 
                   NULL, NULL, 
                   DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
 SP_DEVINFO_DATA dev_info;
 SetupDiEnumDeviceInfo(device_info_set, index, &dev_info);

 SetupDiLoadDeviceIcon(device_info_set, 
                       dev_info,
                       100, 100, 
                       0,
                       &hicon);

这是设备管理器中使用的小图标(缺少alpha掩码)。我怎样才能得到漂亮的?

为了清楚起见,这些是我正在寻找的图标/图像。 例如,罗技HID设备不是库存图片:

screenshot

1 个答案:

答案 0 :(得分:1)

在调用SetupDiGetClassDevs + SetupDiEnumDeviceInfo并从SetupDiLoadDeviceIcon请求256x256图标后,我获得了一个256x256像素的图标,但由于质量很差,因此显然已调整大小

GetIconInfoEx告诉我该图标已从setupapi.dll加载,该库仅包含16x16,32x32和一些48x48设备图标。这并不适用于所有设备,有些设备能够提供高质量的图标。

如果您需要高质量的通用设备图标,可以使用SHGetStockIconInfo