プロが教える店舗&オフィスのセキュリティ対策術

音量を調節するプログラムを作りたいのですが、やり方がわかりません。

具体的には、ウインドウをクリックすると
音量を100%または10%に切りかえるというものです。

分かる方がいらっしゃいましたら教えてくださいm(_ _)m

A 回答 (2件)

 こんばんは。

御礼頂き感謝いたします。
 もしかしたらVISTAが理由なのかもしれません・・・。
 当方の方でも2番目のソースを利用して実験してみましたが、動作確認出来ています。
 ただし、win2000/visual studio 6.0と言う環境です。
 以下のコードで実験しました。一応記載しておきます。マウスの左ボタンを押すたび、ボリュームが15又は0になります。
 ウィンドウズのボリュームコントロールのアプリを立ち上げて確認できます(クリックされるたび音量スライダーが上下に動く)。

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static bool s_b = false;

switch(uMsg)
{
case WM_CREATE:return TRUE;
case WM_CLOSE:::DestroyWindow(hWnd);return FALSE;
case WM_DESTROY:::PostQuitMessage(0);return FALSE;

case WM_LBUTTONDOWN:
{
s_b ^= 0x1;
//左ボタンを押すたびにボリュームが15又は0に切り替わる
const int volume = s_b ? 15 : 0;

//新規ボリューム値を設定する
::SetMasterVolume(volume);
return FALSE;
}
default:break;
}
return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
//ボリュームコントロールの為の初期化をする
::InitMasterVolumeControl();

//以下windowsプログラムのお決まりパターン

return msg.wParam;
}
    • good
    • 0
この回答へのお礼

machongolaさん、ありがとうございます。

↑のコードを試してみましたが、やはり無理なようです。
vistaが原因なんでしょうか…。

なので多少荒技ですが以下の方法で操作することにしました。
ためになるアドバイスをありがとうございました。

case WM_LBUTTONDOWN:
vol *= -1; //volが1なら音量100%、-1なら10%

if(vol == 1){
for(i=0; i<適当な値; i++){
keybd_event(0xAE, 0, 0, 0);
keybd_event(0xAE, 0, KEYEVENTF_KEYUP, 0);
}
}
else{
for(i=0; i<適当な値; i++){
keybd_event(0xAF, 0, 0, 0);
keybd_event(0xAF, 0, KEYEVENTF_KEYUP, 0);
}
}
break;

お礼日時:2008/09/15 14:55

 こんにちは。


 情報や手本であるならば、幾らでも散見します。
 少し試してみましたが、取り扱いは極めて面倒な物です。

 http://www.terra.dti.ne.jp/~vivas/delphi/mixerap …
 http://hp.vector.co.jp/authors/VA016117/mixer1.h …
 http://doglover.jp/index.php?%B2%BB%CE%CC%C4%B4% …

参考URL:http://www.google.co.jp/search?hl=ja&lr=&sa=X&oi …
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

2番目のサイトが比較的分かりやすそうだったので、試してみました。
プログラム自体は正常に処理できてるみたいなんですが、
音量に全く変化がありませんでした。

どうしてでしょうか。。。

書き忘れましたが環境はVista HomePremiumでコンパイラは
VC++ 2005 Expressです。

お礼日時:2008/09/14 22:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!