Windows音量變化通知 系統音量監控

2021-10-21 06:45:07 字數 1821 閱讀 2675

總結參考

本次使用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 ...