私が、サウンドの「既定のデバイス」をプログラムで変更するにはどうすればいいのか、ずっと気になっていたのには以下のようなわけがある。
Skype等のIP電話ソフトを使う際に、Bluetoothヘッドセットを使うと、手がフリーになるしコードレスだしで、かなり便利なのだが、問題は、BluetoothヘッドセットをCONNECTした瞬間、WindowsXP( WIDCOMM ?) のBluetoothスタックは、「既定のデバイス」を、Bluetoothオーディオデバイスにしてしまうのである。
つまり、PCのデフォルトサウンド出力&入力が、Bluetoothヘッドセットになってしまうのである。IP電話ソフトだけでBluetoothヘッドセットを使いたい場合、これは大変使いづらい。つーか、使い勝手をまじめに考えて作ってないだろ?という気が、非常に、する。
そこで、「既定のデバイス」設定を常に監視し、これが変更されたら強制的に元に戻してしまうプログラムを書けば、当座の不便さはしのげるのではないか?と思っていたのだ。
で、やりかたがわかったので、Visual C# 2005 Express Edition(無料)で作ってみたのが、
これ(btfmix.zip) である。実行には.NET Frameworkが必要だと思う。
中身は btfmix.exe, Icon1.ico, Icon2.ico の3つのファイル。
実行すると、まず現在の「既定のデバイス」の名前を覚える。そして、1秒ごとに「既定のデバイス」をチェックし、変わっていたら元に戻すという動作をする。まあ、レジストリの読み出しと書き込みをしているだけなので、中身は全然たいしたことはない。
システムトレイに入れることが出来るようにしたが、このときに、「既定のデバイス」が変わったことを検知すると、2つのアイコンファイルを切り換え表示してお知らせする。私はアイコンを作るセンスがないので好きなアイコンに入れ替えてください、てなことで、アイコンファイルを別添えする形にしている。
(添付したアイコンに AG って描いてあるのは、Bluetooth Audio Gatewayがこの動作をしているため。btfmixという名前は Bluetooth が mixerを 強制的に変更してしまうのに対処するといったような意味)
さっき作ったばっかりだけど、いまのところ、もくろみ通りに動作している。
コメント
GJ!
ども、初めまして
私の場合ですが、ヘッドセットを認識している状態で
マイコンピューター>ハードウェアタブ>デバイスマネージャ>
サウンド、ビデオ、およびゲームコントローラ>Bluetooth AUdio Device の
プロパティーを開いて
プロパティータブにあるオーディオデバイスのBluetooth Audio Device のプロパティにある「このデバイス経由では割り当てない(W)」にチェックを入れたところ、Bluetooth が既定のデバイスにならなくなりました
Skypeで直接デバイスを指定しておけば、望み通り指定したデバイスからのみ音が出るようでした~
タキさん、こんにちは。
私はプラネックスが売っていたBT-02UD2というBluetooth USBアダプタを使っていて、WIDCOMMのドライバ バージョン 1.4.2.8 なんですが、だめみたいです…。
もう捨てようかなコレ。
あらら、残念ですね
認識する度に変わってしまうのはちょっといただけないですよね
ユーザーにどちらにするか選択できるような機能を提供しておいてほしかったですよね
私の使っているモノはプリンストンが売っているPTM-UBT2 というやつなのですが
東芝製のBluetooth Stackがついて来てました
Windowsのヘルプを見る限り、「このデバイス経由では割り当てない(W)」にチェックを入れると、プログラムでわざわざ指定しない限りは、自動的には使用されないような説明書きが出てました