BillZndl 发表于 2015-8-12 11:55:00

调高系统音量

Autocad 2012,VS2010 net 3.5,C# Windows 7有谁知道如何直接从C#访问/更改电脑扬声器音量?我进行了广泛的搜索,找到的所有内容都创建了一个带有滑块的表单。在播放从. dll网络加载到AutoCAD的. mp3文件之前,我想将音量调到最大。此代码适用于实例化的媒体播放器,但不影响计算机的扬声器声音。尝试确定是否有方法获得主卷的句柄,   命名空间口哨。
{ 。

公开课哨子。
{ 。
公共汽笛()。
{ 。
} 。



public void PlayFile()。
{。

系统,音频.音量= 100;//对于100% 。

media player MP = new media player();。
mp,打开(新Uri(@ " G:/AutoCAD 2012 support/visual studio 2010/whistle sounds/Samsung _ whistle _ ringtone . MP3 ",UriKind。绝对));。
mp,play();。

系统,音频.音量= 14;。
}。
}。
}。

命名空间系统。
{。
公共分部类音频。
{。

static extern int waveOutGetVolume(int ptr hwo,out uint dw volume);。


static extern int waveOutSetVolume(int ptr hwo,uint dw volume);。

公共静态int卷。
{。
获取。
{。
uint CurrVol = 100。
ushort calc vol =(ushort)(curr vol & 0x 0000 ffff);。
返回CalcVol/// (ushort,max value/100);。
}。
设置。
{ 。
int NewVolume = value。
uint NewVolumeAllChannels =((uint)new volume & 0x 0000 ffff);。
waveOutSetVolume(IntPtr,Zero,NewVolumeAllChannels);。
}。
}。
} 。
} 。

**** Hidden Message *****

BlackBox 发表于 2015-8-12 12:20:48

是的,我似乎有些进步。我想我得到了主窗口的正确窗口句柄,我不确定我得到的消息是否正确。仍在研究中,   公开课哨。
{ 。
公共汽笛()。
{ 。
} 。



public void PlayFile()。
{ 。

IntPtr hWnd = Process,GetProcessesByName(" explorer "),MainWindowHandle。

uint msg = 0x319//。

UIntPtr VOLUME _ UP =(UIntPtr)0x 319;//0xa 0000;。
IntPtr lParam = IntPtr,零;。

IntPtr e = DirectVolume,VolUp.SendMessageW(hWnd,msg,VOLUME_UP,lParam);。

系统,windows . messagebox . show(" e的值:"+e . ToString());。

if (e.ToInt32() > 0)。
{。
media player MP = new media player();。
mp,打开(新Uri(@ " G:/AutoCAD 2012 support/visual studio 2010/whistle sounds/Samsung _ whistle _ ringtone . MP3 ",UriKind。relative or absolute));。
mp,play();。
}。
}。
}。
}。
命名空间DirectVolume。
{。
公共分部类VolUp。
{ 。


public static extern int ptr FindWindow(String s class name,String app name);。

public static extern int ptr sendmessage w(int ptr hWnd,uint msg,UIntPtr VOLUME_UP,int ptr lParam);。


//P/Invoke User32,并使用SendMessageW() + VOLUME_UP const或KeyBd_Event() + Keys。VolumeUp枚举。
//const int VOLUME _ UP = 0xa 0000;。
}。
}。


BillZndl 发表于 2015-8-12 16:58:14

哈哈的笑...这对同事来说可能会很糟糕

nobody 发表于 2015-8-12 21:46:43


您可能会喜欢这条老线索:
http://forums.augi.com/showthread.php?53823-AutoCAD Speak&p=1136822&viewfull=1#post1136822

BlackBox 发表于 2015-8-13 01:34:47

哈哈的笑...那是很棒的东西

nobody 发表于 2015-8-13 02:22:36


我的主要目标不是“惹”同事,而是......
有一个人使用了我们都觉得很讨厌的铃声。
所以我想,如果我能让他周围的几台机器偶尔播放同一个铃声,
这可能会帮助他寻找另一种音调来使用。

问题是,当机器开15%-20%时,几乎听不到. mp3的声音,
大多数机器都开15%-20%的声音,因为在那个设置下蜂鸣声会大得多,
所以我需要在播放mp3后调高音量,然后再调低。

BillZndl 发表于 2015-8-13 06:30:59

根据您的域凭据,可能更简单的方法是简单地使用PowerShell…查看此线程以获取设置扬声器调用,以及其他选项:
http://stackoverflow.com/questions/21355891/change-audio-level-from-powershell
…一名成员甚至编写了自己的PowerShell CmdLet,该CmdLet公开了:
获取DefaultAudioDevice找一个音响设备专家设置DefaultAudioDevice[-Index]
设置DefaultAudioDevice[-Name]
设置DefaultAudioDevice[-InputObject]<AudioDevice>设置DefaultAudioDeviceVolume-音量
获取DefaultAudioDeviceVolume设置DefaultAudioDeviceMute写入DefaultAudioDeviceValue[-StreamValue]
http://www.automatedops.com/projects/windowsaudiodevice-powershell-cmdlet/

BlackBox 发表于 2015-8-13 08:33:56

是的,嗯...。
这可能有点超出我的头和权限,不知道。
如果它在这里变慢,我会试一试。
谢谢!
法案

BillZndl 发表于 2015-8-13 09:50:43


我的主要目标不是“惹”同事,而是......
有一个人使用我们都觉得讨厌的铃声。
所以我想如果我能让他周围的几台机器偶尔播放相同的铃声,
这可能会帮助他寻找另一种音调来使用。
问题是,当一台机器处于15%-20%时,. mp3几乎听不见,
大多数机器都是这样,因为在那个设置下哔哔声要大得多,
所以我需要在播放mp3后将音量调高并再次调低。

直到有人戴上耳机,你给他们暂时失聪。像这样的事情很少有好结果。

dgorsman 发表于 2015-8-13 10:19:36


这个。
页: [1] 2
查看完整版本: 调高系统音量