• 締切済み

音量調節

音量を調節するプログラムを作りたいのですが、やり方がわかりません。 具体的には、ウインドウをクリックすると 音量を100%または10%に切りかえるというものです。 分かる方がいらっしゃいましたら教えてくださいm(_ _)m

みんなの回答

回答No.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; }

kerokk
質問者

お礼

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;

回答No.1

 こんにちは。  情報や手本であるならば、幾らでも散見します。  少し試してみましたが、取り扱いは極めて面倒な物です。  http://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html  http://hp.vector.co.jp/authors/VA016117/mixer1.html  http://doglover.jp/index.php?%B2%BB%CE%CC%C4%B4%C0%E1%A4%F2%A4%B7%A4%BF%A4%A4

参考URL:
http://www.google.co.jp/search?hl=ja&lr=&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=MIXER+api&spell=1
kerokk
質問者

お礼

お返事ありがとうございます。 2番目のサイトが比較的分かりやすそうだったので、試してみました。 プログラム自体は正常に処理できてるみたいなんですが、 音量に全く変化がありませんでした。 どうしてでしょうか。。。 書き忘れましたが環境はVista HomePremiumでコンパイラは VC++ 2005 Expressです。

関連するQ&A