[Delphi:89681] Vista 録音デバイスの音量調整

235 views
Skip to first unread message

ka...@qa2.so-net.ne.jp

unread,
May 30, 2007, 8:41:01 AM5/30/07
to Del...@ml.users.gr.jp
いつもお世話になっております。高須賀です。

XPまでは、録音デバイスの音量調整をミキサーAPIで実装していましたが、
Vistaから、それが動作しなくなりました。
いろいろ調べましたが、Vista の SDK から MMIDeviceAPI で、

HRESULT SetChannelVolumeLevel(
UINT nChannel,
float fLevelDB,
LPCGUID pguidEventContext
);

http://msdn2.microsoft.com/en-us/library/ms678755.aspx

を使えばできそうなのですが、そのためには、

hr = CoCreateInstance(
CLSID_MMDeviceEnumerator, NULL,
CLSCTX_ALL, IID_IMMDeviceEnumerator,
(void**)&pMMDevEnum);

http://msdn2.microsoft.com/en-us/library/ms679147.aspx

で、COMオブジェクトの生成を行い、

// IMMDeviceCollection インタフェースを取得
IMMDeviceCollection *pMMDevColl = NULL;
hr = pMMDevEnum->EnumAudioEndpoints(eCapture, DEVICE_STATE_ACTIVE,&pMMDevColl);

// デバイス数を取得
UINT numEP;
hr = pMMDevColl->GetCount(&numEP);

// デバイス数ループし、個々のエンドポイントデバイスを取得
for (UINT i=0; i<numEP; i++){
IMMDevice *pDev = NULL;
hr = pMMDevColl->Item(i, &pDev);
}

//取得した pDev から、変更するデバイスに対して IAudioEndpointVolume を生成(?)

IAudioEndpointVolume * pEPEV = NULL;
hr = pDev->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_ALL, NULL,(void**)&pEPEV);

// ヴォリューム値の変更
pEPEV->SetChannelVolumeLevel(0,4.0,NULL);

で、実行できる様なのですが、これらを、Delphiで使うには、
どのようにすればよいのでしょうか?

あるいは、このような事をDelphiで実装するために、
必要な知識を学ぶには、どうしたら良いか分かりますか?
大変ぶしつけな質問で申し訳ありませんが、何卒宜しくお願いします。

ヴァージョン Delphi7
OS WindowsVista

                         高須賀 ka...@qa2.so-net.ne.jp


kamidu

unread,
Jun 1, 2007, 6:33:09 AM6/1/07
to Del...@ml.users.gr.jp
神津です。

ka...@qa2.so-net.ne.jp さんは書きました:


> いつもお世話になっております。高須賀です。
>
> XPまでは、録音デバイスの音量調整をミキサーAPIで実装していましたが、
> Vistaから、それが動作しなくなりました。
> いろいろ調べましたが、Vista の SDK から MMIDeviceAPI で、
>


>
> で、実行できる様なのですが、これらを、Delphiで使うには、
> どのようにすればよいのでしょうか?

以下が参考になると思います。
http://ddev.blog46.fc2.com/blog-entry-74.html

> あるいは、このような事をDelphiで実装するために、
> 必要な知識を学ぶには、どうしたら良いか分かりますか?

Vistaで追加されたAPIはWin32と.NETの両方から使うことを
考えてかCOMになっているようですので、まずはDelphiでのCOMの
使用方法を覚えるということだと思います。

ka...@qa2.so-net.ne.jp

unread,
Jun 3, 2007, 8:32:02 AM6/3/07
to Del...@ml.users.gr.jp
神津さん、ありがとうございます。

> 以下が参考になると思います。
> http://ddev.blog46.fc2.com/blog-entry-74.html
ここからサンプルを落として、やってみています。

>Vistaで追加されたAPIはWin32と.NETの両方から使うことを
>考えてかCOMになっているようですので、まずはDelphiでのCOMの
>使用方法を覚えるということだと思います。
ありがとうございます。

COMに関する本が少なくて、困っていますが、
もう少しいろいろ調べて回ってみます。

ありがとうございました。m(。_。)m ペコッ

                 高須賀 ka...@qa2.so-net.ne.jp


Reply all
Reply to author
Forward
0 new messages