音が出てうるさいと思ったことはありませんか? また、何でここで音が出るんだろう?と思ったことはありませんか? そんなときには強引に音が出るデバイスに対して止めに入るなんてのも1つの手かもしれませんね。
まず、「Beep」ボタンをクリックして音が出ることを確かめてください。音が出ることを確かめたら 「Mute」をクリックして音が出なくなるのを確かめます。最後に「Loud」をクリックして元の音量に戻ることを確かめてください。ただし「Mute」は2回クリックしないようにお願いします。
サンプルプログラムのダウンロードは→[Delphi FAQ用サンプル] うるさい音をミュート!
unit USndVol; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) btnMute: TButton; btnLoud: TButton; btnBeep: TButton; procedure btnMuteClick(Sender: TObject); procedure btnLoudClick(Sender: TObject); procedure btnBeepClick(Sender: TObject); private adwVol: array of DWORD; end; var Form1: TForm1; implementation uses mmsystem; {$R *.DFM} procedure TForm1.btnMuteClick(Sender: TObject); var i, iDev: integer; dwVolume: DWORD; begin iDev := waveOutGetNumDevs; // サウンドデバイス数を取得 SetLength(adwVol, iDev); // 音量配列の初期化 for i := 0 to Pred(iDev) do begin waveOutGetVolume(i, @dwVolume); // それぞれのデバイスの音量を取得 adwVol[i] := dwVolume; // 音量を配列に保存 waveOutSetVolume(i, $0000); // 消音 end; end; procedure TForm1.btnLoudClick(Sender: TObject); var i, iDev: integer; begin iDev := waveOutGetNumDevs; // サウンドデバイス数を取得 for i := 0 to Pred(iDev) do waveOutSetVolume(i, adwVol[i]); // 音量を復元 end; procedure TForm1.btnBeepClick(Sender: TObject); begin Beep; // テスト用 end; end.
コメント (0件)