如何解决如何获取音频设备的图标路径
我正在编写一个使用音频设备的AHK脚本。我正在使用Vista Audio library,并且添加了一些其他功能来获取有关设备名称之外的其他数据。这些功能用于获取设备描述和设备图标:
GetDeviceDesc(device)
{
static PKEY_Device_DeviceDesc
if !VarSetCapacity(PKEY_Device_DeviceDesc)
VarSetCapacity(PKEY_Device_DeviceDesc,20),VA_GUID(PKEY_Device_DeviceDesc :="{A45C254E-DF1C-4EFD-8020-67D146A850E0}"),NumPut(2,PKEY_Device_DeviceDesc,16)
VarSetCapacity(prop,16)
VA_IMMDevice_OpenPropertyStore(device,store)
; store->GetValue(..,[out] prop)
DllCall(NumGet(NumGet(store+0)+5*A_PtrSize),"ptr",store,&PKEY_Device_DeviceDesc,&prop)
ObjRelease(store)
VA_WStrOut(deviceDesc := NumGet(prop,8))
return deviceDesc
}
GetDeviceIcon(device)
{
static PKEY_DrvPkg_Icon
if !VarSetCapacity(PKEY_DrvPkg_Icon)
VarSetCapacity(PKEY_DrvPkg_Icon,VA_GUID(PKEY_DrvPkg_Icon :="{CF73BB51-3ABF-44A2-85E0-9A3DC7A12132}"),NumPut(4,PKEY_DrvPkg_Icon,&PKEY_DrvPkg_Icon,&prop)
ObjRelease(store)
VA_WStrOut(deviceIcon := NumGet(prop,8))
return deviceIcon
}
这两个函数都是VA.ahk中VA_GetDeviceName
函数的略微修改版本:
VA_GetDeviceName(device)
{
static PKEY_Device_FriendlyName
if !VarSetCapacity(PKEY_Device_FriendlyName)
VarSetCapacity(PKEY_Device_FriendlyName,VA_GUID(PKEY_Device_FriendlyName :="{A45C254E-DF1C-4EFD-8020-67D146A850E0}"),NumPut(14,PKEY_Device_FriendlyName,&PKEY_Device_FriendlyName,&prop)
ObjRelease(store)
VA_WStrOut(deviceName := NumGet(prop,8))
return deviceName
}
我的第一个函数用于获取设备描述,但是另一个函数用于获取图标路径,但不返回任何内容。除了尝试获取DrvPkg_Icon之外,我还尝试获取DeviceClass_Icon和DeviceClass_IconPath失败。
我有PKEY参考here和IProperty方法编号参考here。
我不知道自己在做什么错。代码是否可能正常工作并且这些值是空的(根据WinAPI documentation,仅保证设备具有友好的名称,描述和界面友好的描述)?在哪种情况下,我还有另一种获取设备图标的方法?
我不明白为什么它不起作用。谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。