2017-09-29 9 views
0

오디오를 재생하는 개별 응용 프로그램에 대해 Windows 오디오 믹서 설정을 지정하는 스크립트 작업 (audio sessions). IChannelAudioVolume API에 의해 노출 된 기본 Windows 기능인 오디오를 팬 (pan)하기 위해 채널 볼륨을 설정하고 싶습니다. Windows API 설명서에서 사용 된 인터페이스 이름에서 COM 클래스의 GUID를 가져 오는 방법은 무엇입니까?

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')), # ... 

이 경우 이들의 GUID ( '{87CE5498-68D6-44E5-9215-6DA47EF883D8}')이 올 않습니다

나는 comtypes에 GUID를 제공 선언, 부모 인터페이스 및 방법 세부에서 시작, comtypes 통해 pycaw 많은 COM 기반 Windows API를 사용하고 있음을 알 에서? 그들은 개별 인터페이스에 대한 문서에 없습니다. 그들은 공식적으로 어딘가에 문서화되어 있습니까? 또는 Windows의 인터페이스 이름 (예 : ISimpleAudioVolume)에서 찾을 수있는 항목이 있습니까?

그동안 나는 인터페이스가 GUIDE 값인 {}이없는 주제별로 유사한 인터페이스를 찾고 있습니다. 다른 코드와도 만나기를 희망합니다. 이것은 당장의 목적을 위해 충분히 잘 작동하지만 히트 또는 미스입니다.이 방법으로 찾은 GUID가 공개 API로 의도되었는지 여부는 분명하지 않습니다.

답변

1

Windows SDK은 Include 디렉토리의 C/C++ 헤더 파일과 함께 인터페이스 정의 (IDL) 파일을 포함하며 GUID를 포함합니다.

인터페이스에 대한 MSDN API 설명서는 요구 사항 (이 경우 Audioclient.h) 아래에 C/C++ 헤더 파일 이름을 제공합니다.

C:\Program Files (x86)\Windows Kits\8.0\Include\um

내 경우, SDK의 헤더 파일의 위치에가는 당신은 관련 IDL 파일 Audioclient.idl을 찾을 수 있습니다.

이이 내가 알아 낸 것입니다 당신이 GUID를 찾을 수 있습니다 각 인터페이스, 예컨대 :

//----------------------------------------------------------------------------- 
// Description: IChannelAudioVolume interface 
// 
[ 
    object, 
    uuid(1C158861-B533-4B30-B1CF-E853E51C59B8), 
    // ... 
+0

에 대한 섹션을 가지고,하지만 난 여전히 더 나은 방법이 생각한다. 어쩌면'.idl'에서'comtypes' 선언을 자동으로 생성하기위한 것이 있을까요? 그것은 결국 IDL의 핵심입니다. – rakslice