2009-07-07 7 views
1

내 컴퓨터에는 2 개의 오디오 입력이 있습니다. 게임용 마이크와 기타 용 라인이 있습니다. 하나를 사용할 때 다른 하나는 히스/스태틱을 제거하기 위해 음소거하는 것이 중요합니다. 그래서 어느 것이 뮤트인지를 토글하는 작은 스크립트를 작성하고 싶습니다 (트레이 아이콘을 클릭하고, 입력 장치로 전환하고, 음소거를하는 것은 상당히 불편합니다 음소거 해제). Windows XP - 프로그래밍 방식으로 파이썬에서 오디오 음소거/음소거 해제

은 내가 pywin32이 할 수있는, 아마도 생각했지만, everything 내가 입력이 아니라 출력 볼륨을 설정하는 특정 보였다 find 수, 나는 경우에도 더 나은 정보를 찾을 지 충분히 알고는 Win32에 익숙하지 않다.

아무도 올바른 방향으로 나를 가리킬 수 있습니까?

답변

2

비슷한 문제가있어서 원하는대로 Windows API를 사용하는 방법을 알 수 없습니다. AutoIt을 사용하여 GUI를 자동화했습니다. 나는 이것이 가장 빠르고 쉬운 해결책이라고 생각한다. ("해킹 된"것이지만). 오늘 answered 일찍 Python에서 AutoIT를 사용할 수 있습니다.

+0

Windows API를 사용하려고했지만 불행히도 뚫을 수없는 것으로 나타났습니다. AutoIt 솔루션에 만족합니다. 관심있는 사람이라면 http://bitbucket.org/kiv/scripts/src/tip/muteit.au3에 있습니다. – Kiv

4

면책 조항 : 내가 어떤 방법으로 윈도우 프로그래밍 전문가가 아니에요 ...하지만 여기 내 추측

pywin32 FAQ 당입니다 :

가 어떻게 노출 사용합니까 Win32 함수는 xyz를 수행합니까? 일반적으로

은 트릭에 관계없이 언어, 파이썬/PyWin32 질문 전혀 고려하지 않는,하지만 문서 또는 문제의 예를 검색하는 것입니다. 일반적으로 확장을 사용하여 동일한 작업을 수행하려면 정보를 제공합니다. 포함 된 설명서는 함수의 인수 및 반환 유형을 알려주기 때문에 파이썬에서 의 올바른 철자법을 쉽게 결정할 수 있습니다.

"엔드 포인트 장치"볼륨 (예 : 사운드 카드/라인 - 인)을 제어하려고하는 것처럼 들립니다. 그 방향으로 API reference이 있습니다.

Here은 이전에 찾던 내용이 아닌 경우 Windows에서 오디오 장치를 제어하는 ​​데있어 약간 더 광범위한 형태입니다.

Here 님이 C#에서 수행하려고했던 사람의 블로그 항목입니다. (나는 파이썬을 지정했으나 코드에서 올바른 API 호출을 추출 할 수 있습니다.)

행운을 빈다. 그리고 만약 당신이 작업 코드를 얻었다면, 나는 그것을보고 싶어합니다.

1

이미 포함 된 API 중 하나를 사용하는 경우 ctypes - pywin32을 사용하는 것이 더 나을 것 같지만 사운드 API가 좋지 않을 것으로 생각됩니다. tgray이 제공하는 C# 링크의 예제 코드와 함께 ctypeswinmm.dll을 사용하거나 SWIG을 사용하여 winmm.dll을 래핑하십시오. API 호출에서 사용되는 MIXERCONTROLDETAILS과 같은 유형의 C 구조체 매핑 유형을 ctypes에 빌드 할 필요가 없으므로이 방법이 더 빠를 수도 있습니다.

0

tgray이 올바른 방향을 가리키는 것 같다,하지만 당신이 처리 할 수있는 권리는 Win32 API를 발견하면, 당신은 몇 가지 옵션을 사용할 수 있습니다

1) ... pywin32를 사용하려고하지만, 필요한 기능을 랩핑하거나 랩핑하지 않을 수도 있습니다 (아마도 그렇지 않을 수도 있습니다). 따라서 필요한 기능을 사용하려면 COM을 사용해야하는 경우에만이 작업을 수행하는 것이 좋습니다.

2) ctypes를 사용하십시오. 일반적으로 C 유형의 모든 C 기능을 ctypes로 랩핑하는 것은 꽤 쉽습니다.

3) C# 예제가 필요한 것처럼 보이면 IronPython으로 변환 할 수 있어야합니다. C API를 사용하는 것보다 쉬울 수도 있습니다. 물론 YMMV.

관련 문제