2

私のマシンには 2 つのオーディオ入力があります。ゲームに使用するマイク入力と、ギターに使用するライン入力です。一方を使用するときは、ヒス/ノイズを除去するためにもう一方をミュートすることが重要です。そのため、どちらがミュートされているかを切り替える小さなスクリプトを書きたいと思っていました (トレイ アイコンをクリックして入力デバイスに切り替え、ミュートするのはかなり不便です)。し、ミュートを解除します)。

おそらくpywin32でこれを行うことができると思いましたが、見つけたものはすべて、入力ではなく出力ボリュームの設定に固有のもののようでした.win32に精通していないため、どこでより良い情報を探すべきかさえわかりません.

誰かが私を正しい方向に向けることができますか?

4

4 に答える 4

6

免責事項:私は決してWindowsプログラミングの第一人者ではありません...しかし、これが私の最善の推測です

pywin32 FAQによると:

公開されたWin32関数を使用してxyzを実行するにはどうすればよいですか?

一般に、トリックは、Python / PyWin32の質問とはまったく見なさず、言語に関係なく、問題のドキュメントや例を検索することです。これにより、通常、これらの拡張機能を使用して同じ操作を実行するために必要な情報が得られます。含まれているドキュメントには、関数の引数と戻り値のタイプが記載されているため、Pythonで物事を「つづる」正しい方法を簡単に判断できます。

「エンドポイントデバイス」の音量(つまり、サウンドカード/ライン入力)を制御しようとしているように聞こえます。これがその方向のAPIリファレンスです。

これは、以前が探していたものではなかった場合に、Windowsでオーディオデバイスを制御する方法を少し広めにしたものです

これは、C#で実行しようとしていることを実行した人からのブログエントリです(Pythonを指定したことは知っていますが、コードから正しいAPI呼び出しを抽出できる可能性があります)

幸運を!そして、もしあなたが動作するコードを手に入れたら、私はそれを見ることに興味があります。

于 2009-07-07T16:42:40.650 に答える
3

同様の問題があり、Windows API を使用して自分のやりたいことを行う方法がわかりませんでした。結局、AutoIt で GUI を自動化しただけです。それが最速で最も簡単な解決策になると思います(「ハック」ですが)。今日先ほど回答したように、Python 内から AutoIT を使用できます。

于 2009-07-07T19:11:01.397 に答える
1

ctypes既に含まれている APIのいずれかを使用している場合は、おそらく使用したほうpywin32がよいでしょう。ただし、サウンド API では運が悪いと思います。が提供する C# リンクのサンプル コードとともに、およびをtgray使用するか、代わりに を使用してラップします。API 呼び出しで使用される型などのために、C 構造体マッピング型を作成する必要がないため、これはより迅速になる可能性があります。ctypeswinmm.dllSWIGwinmm.dllctypesMIXERCONTROLDETAILS

于 2009-07-07T17:22:31.477 に答える
0

tgrayは正しい方向を示しているようですが、適切な Win32 API を見つけたら、いくつかのオプションがあります。

1)pywin32を使用してみてください...しかし、必要な機能をラップする場合とラップしない場合があります(おそらくそうではありません)。したがって、COM を使用して必要な機能を取得する必要がある場合にのみ、これを実行する必要があります。

2) ctypes を使用します。一般に、ほぼすべての C 機能を ctypes でラップするのは非常に簡単です。

3) C# の例が必要なものに似ている場合は、ほとんど労力をかけずに IronPython に変換できるはずです。C API を使用するよりも簡単かもしれません。もちろんYMMVです。

于 2009-07-07T17:32:31.300 に答える