音が出てうるさいと思ったことはありませんか? また、何でここで音が出るんだろう?と思ったことはありませんか? そんなときには強引に音が出るデバイスに対して止めに入るなんてのも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.

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。