質問: C言語でWindowsアプリを趣味で作っているものですが、パソコンをミュートにしたいのですがどのようにしたらよいのか見当がつきません。 ミュートにしたいのはYoutubeの音声です。プログラムを実行すると音声がオフになるようにしたいです。 どなたか対処法を知っている方はいらっしゃいませんか?
回答: コメントにも書きましたが、音声の扱いは難易度が高いです。 * なんとなく全体を制御する * アプリケーションが自分自身の出す音声を制御する * 他の特定のアプリケーションの音声を制御する (ブラウザーの音声をミュートする等) * 特定のデバイスの出力を制御する (通話中にオーディオ出力をミュートする等) どのようなことを実現したいかを明示していただく必要があります。参考までにとりあえず雑な方法を提示しておきます。 ノートPCやマルチメディアキーボードにはミュートキーを持つものがあります。そのため、Windowsには(該当するキーボードが接続されていなくても)ミュートキーが押された際に行われるべき処理があらかじめ組み込まれています。 この方法はあくまでミュート・ミュート解除がトグルされるのみとなります。現在のミュート状態を把握し、状態に応じた処理を行うとなるとこの方法は使えません。また、あくまでキー操作扱いなので、画面上に音声の状態を表すポップアップが表示されます。 プログラムからミュートキーが押された状態をエミュレートすれば、結果的にミュート・ミュート解除が行われます。具体的には`SendInput`関数に`VK_VOLUME_MUTE`を渡すことで実現できます。 ``` INPUT input = { INPUT_KEYBOARD, { VK_VOLUME_MUTE } }; SendInput(1, &input, sizeof input); ```