2009-07-07 296 views
1

我的機器有兩個音頻輸入:一個用於遊戲的麥克風,一個用於吉他。使用其中一個重要的是另一個靜音以消除嘶嘶聲/靜電,所以我希望編寫一個小腳本來切換哪一個被靜音(點擊托盤圖標,切換到我的輸入設備,靜音相當不方便並取消靜音)。Windows XP - 以編程方式在Python中靜音/取消靜音音頻

我想也許我可以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 2009-07-09 00:44:34

4

免責聲明:我不以任何方式在Windows編程高手......但這裏是我最好的猜測

pywin32 FAQ

如何使用暴露Win32函數來做xyz?

一般來說,訣竅是不 認爲這是一個Python/PyWin32問題 所有,但搜索 文檔或 問題的例子,無論使用什麼語言。 這通常會給你 信息,你需要使用這些 擴展執行 相同的操作。包含的 文檔將告訴您 函數的參數和返回類型,因此您可以輕鬆確定 正確的方式來在Python中「拼寫」事物。

聽起來就像你想要控制「端點設備」卷(即你的聲卡/線路輸入)。這是朝這個方向的API reference

Here在控制Windows中的音頻設備時,如果以前不是您要查找的內容,請稍微寬泛一些。

Here是某人在C#中做了你想做的事情的博客文章(我知道你指定了python,但你可能能夠從代碼中提取正確的API調用)。

祝你好運!如果你確實得到了工作代碼,我很樂意看到它。

1

你可能更適合使用​​- pywin32如果你使用的是已經包含的API之一,但是我認爲你會失去聲音的APIs。連同由tgray提供的來自C#鏈接的示例代碼,使用​​和winmm.dll,或者使用SWIG來包裝winmm.dll。這可能會更快,因爲您不必在​​中針對在API調用中使用的類型(如MIXERCONTROLDETAILS)構建C結構映射類型。

0

tgray似乎都指出你在正確的方向,但一旦你找到正確的Win32 API來處理,你有兩個選擇:

1)嘗試使用pywin32 ... ...但它可能會或可能不會包裝你需要的功能(它可能不會)。所以如果你需要使用COM來獲得你需要的功能,你可能只想做到這一點。

2)使用ctypes。使用ctypes來包裝任何C功能通常都很容易。 3)如果C#示例看起來像你所需要的,你應該能夠用很少的努力將它翻譯成IronPython。可能比使用C API更容易。 YMMV,當然。

相關問題