国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C > 正文

用C# 控制Windows系統(tǒng)音量的實(shí)現(xiàn)方法

2020-01-26 16:13:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#開(kāi)發(fā)Windows應(yīng)用程序中經(jīng)常需要去控制系統(tǒng)的音量,分兩種方式:

1.使用Win Api控制

2.使用C++ dll控制

Win Api控制:

  使用user32.dll和winmm.dll都可以控制系統(tǒng)音量,區(qū)別是Win系統(tǒng)的版本。winmm.dll Xp環(huán)境下可用,user32.dll Vista及以上版本。

C++ dll控制:

  CoreAudioApi 是C++ 第三方封裝了音量控制,網(wǎng)上下載DLL后再項(xiàng)目中引用即可使用。CoreAudioApi Vista及以上版本支持。

下面給出代碼

1.winmm控制方式,涉及Xp系統(tǒng)波形聲音的左右聲道,高位為左聲道,低位為右聲道:

復(fù)制代碼 代碼如下:

winmm
 [DllImport("winmm.dll", EntryPoint = "waveOutSetVolume")]
 public static extern int WaveOutSetVolume(IntPtr hwo, uint dwVolume);

 private void SetVol(double arg){
     double newVolume = ushort.MaxValue * arg / 10.0;

     uint v = ((uint)newVolume) & 0xffff;
     uint vAll = v | (v << 16);

     int retVal = WaveOutSetVolume(IntPtr.Zero, vAll);
 }

2.user32控制方式:
復(fù)制代碼 代碼如下:

user32
 [DllImport("user32.dll")]
 public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

 public void SetVol(){
     p = Process.GetCurrentProcess();
     for (int i = 0; i < 5; i++) {
     SendMessageW(p.Handle, WM_APPCOMMAND, p.Handle, (IntPtr)APPCOMMAND_VOLUME_UP);
     }
 }

 private Process p;
 private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
 private const int APPCOMMAND_VOLUME_UP = 0x0a0000;
 private const int APPCOMMAND_VOLUME_DOWN = 0x090000;
 private const int WM_APPCOMMAND = 0x319;

3.CoreAudioApi
復(fù)制代碼 代碼如下:

CoreAudioApi
 Using CoreAudioApi;

 public void SetVol(double arg) {
     device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
     device.AudioEndpointVolume.MasterVolumeLevelScalar = (float)arg;
 }

 private MMDevice device;
 private MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 大荔县| 东城区| 交城县| 梅州市| 海阳市| 宽甸| 乳山市| 庆元县| 卢氏县| 揭西县| 滦平县| 河源市| 乌鲁木齐县| 博湖县| 嵊泗县| 临朐县| 黑龙江省| 礼泉县| 亚东县| 长海县| 定襄县| 玛纳斯县| 陕西省| 宽甸| 巴彦淖尔市| 乐平市| 新化县| 广宗县| 沧州市| 东阳市| 沂源县| 淮滨县| 营山县| 社会| 盘锦市| 藁城市| 竹溪县| 绥芬河市| 如东县| 彭阳县| 吉隆县|