用C# 控制Windows系統音量的實現方法

來源:互聯網
上載者:User

C#開發Windows應用程式中經常需要去控制系統的音量,分兩種方式:

1.使用Win Api控制

2.使用C++ dll控制

Win Api控制:

  使用user32.dll和winmm.dll都可以控制系統音量,區別是Win系統的版本。winmm.dll Xp環境下可用,user32.dll Vista及以上版本。

C++ dll控制:

  CoreAudioApi 是C++ 第三方封裝了音量控制,網上下載DLL後再項目中引用即可使用。CoreAudioApi Vista及以上版本支援。

下面給出代碼

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

複製代碼 代碼如下: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控制方式:
複製代碼 代碼如下: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
複製代碼 代碼如下: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();

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.