掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
音量調節 (ID:36352)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
春子:「XPならmixerAPIでボリュームの調整できるけどね、VISTAはダメだと思うよ」 真琴:「ふ〜ん、そうなの?」 春子:「そぅ、VISTAはCOMでやるみたい、こんなカンジなのかな? 持ってないから試せないけど」 ........... var Form1: TForm1; implementation {$R *.DFM} uses ActiveX, MMDevAPI; var AudioEndpointVolume: IAudioEndpointVolume = nil; procedure TForm1.FormCreate(Sender: TObject); var mmDeviceEnumerator: IMMDeviceEnumerator; mmDevice: IMMDevice; begin CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, mmDeviceEnumerator); if mmDeviceEnumerator = nil then exit; mmDeviceEnumerator.GetDefaultAudioEndpoint(ERender, EConsole, mmDevice); mmDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, AudioEndpointVolume); end; procedure TForm1.Button1Click(Sender: TObject); var Volume: Single; begin if AudioEndpointVolume = nil then exit; Volume := 0.3; AudioEndpointVolume.SetMasterVolumeLevelScalar(Volume, nil); end; end. ----------------------------------------------------------------- unit MMDevAPI; interface uses Windows, ActiveX, ComObj; const CLASS_IMMDeviceEnumerator : TGUID = '{BCDE0395-E52F-467C-8E3D-C4579291692E}'; IID_IMMDeviceEnumerator : TGUID = '{A95664D2-9614-4F35-A746-DE8DB63617E6}'; IID_IMMDevice : TGUID = '{D666063F-1587-4E43-81F1-B948E807363F}'; IID_IMMDeviceCollection : TGUID = '{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}'; IID_IAudioEndpointVolume : TGUID = '{5CDF2C82-841E-4546-9722-0CF74078229A}'; IID_IAudioMeterInformation : TGUID = '{C02216F6-8C67-4B5B-9D00-D008E73E0064}'; IID_IAudioEndpointVolumeCallback : TGUID = '{657804FA-D6AD-4496-8A60-352752AF4F89}'; DEVICE_STATE_ACTIVE = $00000001; DEVICE_STATE_UNPLUGGED = $00000002; DEVICE_STATE_NOTPRESENT = $00000004; DEVICE_STATEMASK_ALL = $00000007; type EDataFlow = TOleEnum; const ERender = $00000000; ECapture = $00000001; EAll = $00000002; EDataFlow_enum_count = $00000003; type ERole = TOleEnum; const EConsole = $00000000; EMultimedia = $00000001; ECommunications = $00000002; ERole_enum_count = $00000003; type IAudioEndpointVolumeCallback = interface(IUnknown) ['{657804FA-D6AD-4496-8A60-352752AF4F89}'] end; IAudioEndpointVolume = interface(IUnknown) ['{5CDF2C82-841E-4546-9722-0CF74078229A}'] function RegisterControlChangeNotify(AudioEndPtVol: IAudioEndpointVolumeCallback): Integer; stdcall; function UnregisterControlChangeNotify(AudioEndPtVol: IAudioEndpointVolumeCallback): Integer; stdcall; function GetChannelCount(out PInteger): Integer; stdcall; function SetMasterVolumeLevel(fLevelDB: single; pguidEventContext: PGUID): Integer; stdcall; function SetMasterVolumeLevelScalar(fLevelDB: single; pguidEventContext: PGUID): Integer; stdcall; function GetMasterVolumeLevel(out fLevelDB: single): Integer; stdcall; function GetMasterVolumeLevelScaler(out fLevelDB: single): Integer; stdcall; function SetChannelVolumeLevel(nChannel: Integer; fLevelDB: Double; pguidEventContext: PGUID): Integer; stdcall; function SetChannelVolumeLevelScalar(nChannel: Integer; fLevelDB: Double; pguidEventContext: PGUID): Integer; stdcall; function GetChannelVolumeLevel(nChannel: Integer; out fLevelDB: Double): Integer; stdcall; function GetChannelVolumeLevelScalar(nChannel: Integer; out fLevel: Double): Integer; stdcall; function SetMute(bMute: Boolean; pguidEventContext: PGUID): Integer; stdcall; function GetMute(out bMute: Boolean): Integer; stdcall; function GetVolumeStepInfo(pnStep: Integer; out pnStepCount: Integer): Integer; stdcall; function VolumeStepUp(pguidEventContext: PGUID): Integer; stdcall; function VolumeStepDown(pguidEventContext: PGUID): Integer; stdcall; function QueryHardwareSupport(out pdwHardwareSupportMask): Integer; stdcall; function GetVolumeRange(out pflVolumeMindB: Double; out pflVolumeMaxdB: Double; out pflVolumeIncrementdB: Double): Integer; stdcall; end; IAudioMeterInformation = interface(IUnknown) ['{C02216F6-8C67-4B5B-9D00-D008E73E0064}'] end; IPropertyStore = interface(IUnknown) end; type IMMDevice = interface(IUnknown) ['{D666063F-1587-4E43-81F1-B948E807363F}'] function Activate(const refId: TGUID; dwClsCtx: DWORD; pActivationParams: PInteger; out pEndpointVolume: IAudioEndpointVolume): Hresult; stdcall; function OpenPropertyStore(stgmAccess: DWORD; out ppProperties: IPropertyStore): Hresult; stdcall; function GetId(out ppstrId: PLPWSTR): Hresult; stdcall; function GetState(out State: Integer): Hresult; stdcall; end; IMMDeviceCollection = interface(IUnknown) ['{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}'] end; IMMNotificationClient = interface(IUnknown) ['{7991EEC9-7E89-4D85-8390-6C703CEC60C0}'] end; IMMDeviceEnumerator = interface(IUnknown) ['{A95664D2-9614-4F35-A746-DE8DB63617E6}'] function EnumAudioEndpoints(dataFlow: EDataFlow; deviceState: SYSUINT; DevCollection: IMMDeviceCollection): Hresult; stdcall; function GetDefaultAudioEndpoint(EDF: SYSUINT; ER: SYSUINT; out Dev: IMMDevice ): Hresult; stdcall; function GetDevice(pwstrId: pointer; out Dev: IMMDevice): HResult; stdcall; function RegisterEndpointNotificationCallback(pClient: IMMNotificationClient): Hresult; stdcall; end; implementation end. 真琴:「ぁ…そうなの…」 春子:「ん? マコト? ナンかウワのソラってカンジね、どうかしたの?」 真琴:「アタシ、今それどころじゃなくて…おじいちゃんが死んじゃうかも…ナンとかしないと…」 春子:「えっ? 突然ナニ言い出すの? マコト、どういうコト?」 真琴:「アタシ、夢をみたの、おじいちゃんは台風が近づいた海でサーフィンするつもり…それで…」 春子:「マコト、台風なんか来てないよ、それにマサルさんはサーフィンなんか…」 真琴:「ハルコさん、アタシが言ってるのは、コッチじゃなくてアッチのコト」 春子:「アッチって、ドッチ? …ていうか、それって夢なんでしょ?」 真琴:「でも夢でアタシはアッチを見てきたの、アタシたちが居なくなって、おじいちゃんは今一人ぼっち…」 春子:「もしかして…アッチって、以前にアタシたちが居た4年後のコト?」 真琴:「そう、アタシ、理屈は分からない…けど、その夢でハッキリ気付いたの、ここはアッチとは別の宇宙だってコト…、コッチの時間は4年くらい遅れてるの」 春子:「あ…それって…並行宇宙? …でも、どうして一人ぼっち? アッチにはビーチボーイズの二人が一緒に居るはずなのに」 真琴:「そんな人たちは居なかった、…寂しさを紛らわすためにおじいちゃんはサーフィンをまた始めたみたい」 春子:「あら、そう? だけど、マコトがホントに行ったのなら、ナンで説得して止めさせなかったの?」 真琴:「それがダメ…、アタシの体はアッチに行っていない、だからアタシに気付いてくれない…、ハルコさん、おじいちゃんを助けたいよ、でもどうしたらいいの?」 春子:「う〜ん、そうなの…、アッチの一人ぼっちのマサルさんが死ぬかもしれない? …じゃぁ、その前にコッチに連れてこれれば…」 真琴:「え? おじいちゃんをコッチに? ハルコさん、そんなコト出来る?」 春子:「アタシだけでは絶対に無理、でも、マコトの力を借りれば、あるいは…」
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.