總結參考
本次使用win32 api的endpoint volume controls實現當系統音量變化時程式收到通知,環境為win10 64位。
實現iaudioendpointvolumecallback介面,重點是onnotify方法。
/* epvolume.h */
#include
#include
#include
// client's proprietary event-context guid
extern guid g_guidmycontext;
class
caudioendpointvolumecallback
:public iaudioendpointvolumecallback
~caudioendpointvolumecallback()
// iunknown methods -- addref, release, and queryinte***ce
ulong stdmethodcalltype addref()
//增加引用計數
ulong stdmethodcalltype release()
//減少引用計數
return ulref;
} hresult stdmethodcalltype queryinte***ce
(refiid riid, void*
* ppvinte***ce)
//查詢元件實現介面
elseif(
__uuidof
(iaudioendpointvolumecallback)
== riid)
else
return s_ok;
}// callback method for endpoint-volume-change notifications.
//介面 - 通知方法實現
hresult stdmethodcalltype onnotify
(paudio_volume_notification_data pnotify)
if(pnotify-
>guideventcontext != g_guidmycontext)
return s_ok;}}
;
主函式作用是建立例項,初始化,註冊事件和登出。
#include
#include
#include
#include
"epvolume.h"
guid g_guidmycontext = guid_null;
static iaudioendpointvolume* g_pendptvol =
null
;#define safe_release(punk) if((punk) != null)
intmain()
//釋放
safe_release
(penumerator)
safe_release
(pdevice)
safe_release
(g_pendptvol)
couninitialize()
;return0;
}
總的來說,我們實現了利用endpoint volume controls來監控系統音量的功能,但實際上該控制項並不知有這乙個功能,還可以用來做乙個音量控制面板實現調節音量的功能。閱讀官方文件,學習更多知識。
microsoft core audio apis- endpoint volume controls
仿MIUI音量變化環形進度條實現
今天就為大家揭開那些高大上設計背後的故事,讓我們也來實現如此酷炫的效果。事實上環形進度條僅僅是乙個稍稍複雜點的自己定義控制項。看過前段時間 android自己定義控制項 系列的同學。理解起來會更加easy。還沒看過的同學,出門右轉,檢視歷史訊息。再回頭看今天的內容,會更加easy上手。一 定義自己定...
控制windows系統音量
網上有一些控制系統音量的方法 win xp系統可以用mixeropen等方式 win 7系統可以用wsapi等方式 wasapi的全稱是windows audio session api windows音訊會話api 是從windows vista之後引入的 uaa universal audio ...
用C 控制Windows系統音量的實現方法
c 開發windows應用程式中經常需要去控制系統的音量,分兩種方式 1.使用win api控制 2.使用c dll控制 win api控制 使用user32.dll程式設計客棧和winmm.dll都可以控制系統音量,區別是win系統的版本。winmm.dll xp環境下可用,user32.dll ...