C 控制系統音量 第一章

2021-06-21 12:42:50 字數 1665 閱讀 6780

一直想控制系統音量,但是似乎c#都有著很多的問題,索性去看api。

最後找到了乙個外國友人的東西,外國友人寫的類就是好看,感覺比自己寫的要規範好多啊!

自己使用了此類後發現了乙個問題,在xp系統下正常,但是win7以上都不能正常使用。

然後又查了一下官方的解釋,原來微軟win7後就改動了底層的音量控制的東西。

現在貼出來,希望大家對大家有幫助,在後面將講解在win7及其以上怎麼作業系統音量的問題!

class audiomixerhelper

public struct mixercontrol

public struct mixercontroldetails

public struct mixercontroldetails_unsigned

public struct mixerline

public struct mixerlinecontrols

private static bool getvolumecontrol(int hmixer, int componenttype,int ctrltype, out mixercontrol mxc, out int vcurrentvol)

else

int sizeofmixercontroldetails = marshal.sizeof(typeof(mixercontroldetails));

int sizeofmixercontroldetails_unsigned = marshal.sizeof(typeof(mixercontroldetails_unsigned));

pmxcd.cbstruct = sizeofmixercontroldetails;

pmxcd.dwcontrolid = mxc.dwcontrolid;

pmxcd.padetails = marshal.alloccotaskmem(sizeofmixercontroldetails_unsigned) ;

pmxcd.cchannels = 1;

pmxcd.item = 0;

pmxcd.cbdetails = sizeofmixercontroldetails_unsigned;

rc = mixergetcontroldetailsa(hmixer,ref pmxcd,mixer_getcontroldetailsf_value);

du = (mixercontroldetails_unsigned)marshal.ptrtostructure(pmxcd.padetails, typeof(mixercontroldetails_unsigned));

vcurrentvol = du.dwvalue;

return retvalue;

}retvalue = false;

return retvalue;

}private static bool setvolumecontrol(int hmixer, mixercontrol mxc,int volume)

else

return retvalue;

}public static int getvolume()

public static void setvolume(int vvolume)

mixerclose(mixer);

}}

C 控制系統音量

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...

第一章 自動控制系統的基本概念

這是我第一篇部落格,分享一下我每天的學習經歷,希望我可以堅持下去,第一天覆習自動控制原理的第一章。第一章.自動控制系統的基本概念 目標 1.掌握基本概念,基本控制方式,基本組成,分類,基本要求 2.會分析系統的工作原理,能指出系統的輸入輸出量,判斷開環還是閉環 3.會繪製方框圖 基本概念 1.被控物...

《推薦系統》第一章

推薦系統 rs 是向使用者建議有用物品的軟體工具和技術 物品 是用來表示系統向使用者推薦內容的總稱。乙個推薦系統通常專注於乙個特定型別的物品 如cd或新聞 因此它的設計 圖形使用者介面以及用於生成建議的核心的推薦技術都是為特定型別的物品提供有用和有效的建議而定製的。推薦系統主要針對的是那些缺乏足夠的...