記事カテゴリ

ユーザー機能


 2024年4月25日(木) 10:06 JST

[Delphi] うるさい音をミュート!

  • 投稿者:
  • 表示回数
    6,612

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

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/ProgramingFAQ_del0026

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