C# Win7如何获得系统主音量 只需知道主音大小 无需修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Win7如何获得系统主音量 只需知道主音大小 无需修改相关的知识,希望对你有一定的参考价值。

C# Win7获得系统主音量 只需提供方法获得主音大小 无需修改 修改的网上已经找到过了
暝霾 谢谢你
但你说的显然不是我要的 你发的那些 我在网上都找到过了 也都试过了
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
这个确实可以调节 win7主音量 但我要的是主音量显示
如果你有能实现的程序的话
理想的效果是 开打开一个Form 里面有个Label显示当前系统音量 点系统的小喇叭修改主音量 ,这时候 Label数值会随之变化。WinForm WPF的都可以。但要C#写的。
如果可以有成功实现的Demo我愿意再多追加100分。

参考技术A using System.Runtime.InteropServices;//命名空间引用
声明以下的方法:
[DllImport("winmm.dll")]
public static extern long waveOutSetVolume(long deviceID, long Volume);

调用方法
waveOutSetVolume(0, 0x0000);
第一个参数可以为0,表示首选设备
第二个参数为音量:0xFFFF为最大,0x0000为最小,其中高位(前两位)表示右声道音量,低位(后两位)表示左声道音量

目前还没有找到好的方法,可以使用API进行主音量调节,但是不知道怎么获取系统当前的主音量和是否地静音状态!
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam);
const uint WM_APPCOMMAND = 0x319;
const uint APPCOMMAND_VOLUME_UP = 0x0a;
const uint APPCOMMAND_VOLUME_DOWN = 0x09;
const uint APPCOMMAND_VOLUME_MUTE = 0x08;
SendMessage(this.Handle, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_UP * 0x10000); //增加音量
SendMessage(this.Handle, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_DOWN * 0x10000); //减小音量
SendMessage(this.Handle, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_MUTE * 0x10000); //静音

上面是网上看来的,自己测试的时候只测试了0x0000,发现果然没声音就以为有用.事实上找遍现中文网页上所有提供的案例,发现百分百的人在盲目转贴,因为这个的确跟本测试不通.

我不知道你英文如何,
现在提供一个页面给你,你可以仔细阅读参考一下.这个是一个完整的声音控制类库,除音量以外还有其他属性调节方法,并提供下载,下载下来后你可以直接调用其中的方法,这个类库采用发VS2005写的.当然,你首先还是要先看懂作者的一些说明.至少要看明白要调用哪个方法来控制音量.
http://www.dreamincode.net/forums/showtopic45693.htm
当然,作者还是调用了winmm.dll.
所以我前面回答是一个片段而已.

用法如下
下载前面地址给出的页中文章最后那个附件.生成附近件中的类库,得到PC_VolumeControl.dll这个文件.将其拖入你自己的工程,然后引用这个DLL.在你的程序中使用如下语句调用.
PC_VolumeControl.VolumeControl.SetVolume(100000);
上面输入的数值是100000是我测试所得的最高音量值,不知道在你的系统最大音量值是多少,你可以自己进行一下测试..

不知道这是不是你要的答案,不行的话我再发份项目例子给你
参考技术B http://hi.baidu.com/liyantsc/blog/item/54afc806f4b1897e020881b6.html
这有个VB的例子,你可以参考下

win10 + Ubuntu18.04 双系统,UEFI+GPT,从win10切换到Ubuntu时黑屏问题

1.现象:

①win10主系统,从win10重启,立即黑屏,之后会进入Ubuntu(还是黑屏)(为什么会知道进入了Ubuntu:按音量键可以听到Ubuntu音量加减的系统声音,数字锁定和大小写锁定均有效)。此时重启,强制关机再开机均为黑屏,且屏幕不显示任何信息,但系统能正常进入(判断方法同上)。

②将主机的显示器接线接到旁边相同的显示器,可以正常显示。再接回来,依然黑屏。

③治标不治本法一:将主机的显示器接线接到旁边相同的显示器,退出Ubuntu系统进入Win10,再接回来,重新正常显示。

④治标不治本法二:将旁边与我的主机相同的主机开机(系统为单系统win10),接到我的显示器,重新正常显示。再将我的显示器接回到我的主机,可以正常显示。

⑤正常显示后从win10重启,再次出现①中现象。

总结:只要在win10系统下重启或关机再开机,便会黑屏并自动进入Ubuntu系统。但在Ubuntu系统中进行各种操作不会出现问题。

 

2.首先关闭了win10的快速启动,UEFI的secure boot。然后在Ubuntu上安装了Nvidia显卡驱动。

此时从win10系统下重启或关机再开机,依然会黑屏。但是在自动进入Ubuntu系统或手动在黑屏时按回车进入Ubuntu系统后会正常显示。

 

以上是关于C# Win7如何获得系统主音量 只需知道主音大小 无需修改的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中将主音量从 XP 更改为 Windows 8

如何删除双系统的其中一个操作系统

在 Windows 应用程序中获取声卡输出音量

在 c# 中获取主音量

如何获得扬声器音量级别? [复制]

win7音量合成器怎么添加设备