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 さんは書きました:
> いつもお世話になっております。高須賀です。
>
> XPまでは、録音デバイスの音量調整をミキサーAPIで実装していましたが、
> Vistaから、それが動作しなくなりました。
> いろいろ調べましたが、Vista の SDK から MMIDeviceAPI で、
>
略
>
> で、実行できる様なのですが、これらを、Delphiで使うには、
> どのようにすればよいのでしょうか?
以下が参考になると思います。
http://ddev.blog46.fc2.com/blog-entry-74.html
> あるいは、このような事をDelphiで実装するために、
> 必要な知識を学ぶには、どうしたら良いか分かりますか?
Vistaで追加されたAPIはWin32と.NETの両方から使うことを
考えてかCOMになっているようですので、まずはDelphiでのCOMの
使用方法を覚えるということだと思います。
> 以下が参考になると思います。
> http://ddev.blog46.fc2.com/blog-entry-74.html
ここからサンプルを落として、やってみています。
>Vistaで追加されたAPIはWin32と.NETの両方から使うことを
>考えてかCOMになっているようですので、まずはDelphiでのCOMの
>使用方法を覚えるということだと思います。
ありがとうございます。
COMに関する本が少なくて、困っていますが、
もう少しいろいろ調べて回ってみます。
ありがとうございました。m(。_。)m ペコッ