gpt4 book ai didi

python - 如何从 Windows API 文档中使用的接口(interface)名称获取 COM 类的 GUID?

转载 作者:行者123 更新时间:2023-12-02 03:46:45 24 4
gpt4 key购买 nike

对于在 Windows SDK 文档中命名的给定 COM 类(例如 >IChannelAudioVolume)?

我正在编写一个 Python 脚本,该脚本为正在播放音频的各个应用程序设置 Windows 音频混合器设置 (audio sessions)。我想设置声道音量,平移音频,这是 IChannelAudioVolume 公开的内置 Windows 功能API。

我看到 pycaw 通过 comtypes 使用许多基于 COM 的 Windows API,从为 comtypes 提供 GUID、父接口(interface)和方法详细信息的声明开始:

from ctypes import HRESULT, POINTER, c_uint32, c_float
from comtypes import IUnknown, GUID, COMMETHOD

class ISimpleAudioVolume(IUnknown):
_iid_ = GUID('{87CE5498-68D6-44E5-9215-6DA47EF883D8}')
_methods_ = (
# HRESULT SetMasterVolume(
# [in] float fLevel,
# [in] LPCGUID EventContext);
COMMETHOD([], HRESULT, 'SetMasterVolume',
(['in'], c_float, 'fLevel'),
(['in'], POINTER(GUID), 'EventContext')), # ...

编写此类代码的人在哪里可以找到与特定接口(interface)名称相对应的这些 GUID(例如 '{87CE5498-68D6-44E5-9215-6DA47EF883D8}')?它们不在各个接口(interface)的主要文档中。他们是否在某处正式记录?或者,在 Windows 中,我可以运行什么来从接口(interface)名称(例如 ISimpleAudioVolume)中查找它们?

与此同时,我只是在谷歌上搜索我正在寻找的界面的名称,以及没有 {} 的主题相似界面的 GUID 值,并希望遇到其他有它们的代码示例。这对我的直接目的来说已经足够好了,但也有问题,而且我不清楚我通过这种方式找到的 GUID 是否打算用作公共(public) API。

最佳答案

此在线工具 MagnumDb作为“魔数(Magic Number)数据库”(免责声明:我写的)是一个完全免费的搜索引擎,包含 99% 的 Windows SDK 常量和超过 70K 的 guid(IID、CLSID 等)。

可以按名称查询,也可以按值查询,使用通配符等,例如:http://www.magnumdb.com/search?q=IChannelAudioVolume

将为您提供此信息(名称、类型、值、SDK 头文件位置):

IID_IChannelAudioVolume Guid    1c158861-b533-4b30-b1cf-e853e51c59b8    %ProgramFiles(x86)%\Windows Kits\10\Include\10.0.17134.0\um\Audioclient.h(1942,0)

关于python - 如何从 Windows API 文档中使用的接口(interface)名称获取 COM 类的 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46497022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com