Windows標準の音量設定

解決


WAM  2003-12-07 11:04:37  No: 5960

Windows標準の音量設定(Sndvol32.exe)みたいに、
マウスでスライドバーを調整し、マウスボタンを離すと[一般の警告音]で指定
されているWAVEファイルを再生するにはどうすればいいのでしょうか?
Sndvol32.exeと同等の動作をするものが作りたいのですが・・・


WAM  2003-12-07 11:07:41  No: 5961

追記です。
D7、WinXPHome を使用しています。


たかみちえ  URL  2003-12-07 20:16:52  No: 5962

http://www.terra.dti.ne.jp/~vivas/
上記サイトにあるTMixerコンポーネントを使えば音量設定が出来ます。
テストサウンドはPlaySoundで鳴らせますね。
サウンドにつけられている名前の一覧は、
HKEY_CURRENT_USER\AppEvents\EventLabels
いかに載ってます。


WAM  2003-12-07 23:57:41  No: 5963

たかみちえさん、ご返信ありがとうございます。
今からバイトなので、帰ってきてからやってみます。


WAM  2003-12-08 09:05:35  No: 5964

すいません、コンポーネントですが、すでにPAPY氏が製作された
音量ボリューム調節くんを使用しています。
WAVE再生はわかりましたが、トラックバーにマウスを放したときのイベントが
ないみたいなので、D&Dでトラックバーで音量調整→マウス放す→WAVE再生
ができないようです。


Halbow  2003-12-08 09:38:43  No: 5965

Halbow です。

> トラックバーにマウスを放したときのイベントがないみたいなので

VCL のイベントにないだけで、本当はコモンコントロールはメッセージを送って知らせているんです。以下のようにしてこれを捕まえられます。Form1 の Trackbar1 と Label1、Label2 を置いて

    { Private 宣言 }
  public
    OriginalProc:TWndMethod;
    procedure SubclassProc(var Msg:TMessage);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
  Commctrl;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OriginalProc := TrackBar1.WindowProc;
  TrackBar1.WindowProc := SubclassProc;
end;

procedure TForm1.SubclassProc(var Msg: TMessage);
begin
  OriginalProc(Msg);
  case Msg.Msg of
    CN_HSCROLL,CN_VSCROLL:
      if Msg.WParamLo = TB_ENDTRACK then
        Label1.Caption := IntToStr(Trackbar1.Position);
  end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   Label2.Caption := IntToStr(Trackbar1.Position);
end;

のようにすると、つまみを動かしているときの位置が Label2 に、そしてマウスを離したときの位置が Label1 に表示されます。


WAM  2003-12-08 10:59:39  No: 5966

できました!!
たかみちえさん、そしてHalbowさん、ありがとうございました。
できるってすばらしいw


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加