我搜索了几个小时,现在我在这个论坛上问。
我需要哪个图书馆?
我正在使用Visual Basic 2015,并希望使用C#编写Windows通用应用程序。
将Systemvolume设置为x%
按x
按x
获取当前的Systemvolume
我发现了一个类似的问答,但答案却没有找到工作。
private void Mute() {
if (isset($this->name[Context::getContext()->language->id]))
$id_lang = Context::getContext()->language->id;
else
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$subcategories = $category->getSubCategories($id_lang, true);
它无法找到" WindowInteropHelper"。但我实施了:
使用System;
使用System.Windows.Forms;
使用System.Runtime.InteropServices;
答案 0 :(得分:1)
你不能这样做。通用应用程序是沙盒,无法对系统进行全局修改。这包括系统卷。
答案 1 :(得分:1)
class VolumeChanger
{
private const byte VK_VOLUME_MUTE = 0xAD;
private const byte VK_VOLUME_DOWN = 0xAE;
private const byte VK_VOLUME_UP = 0xAF;
private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001;
private const UInt32 KEYEVENTF_KEYUP = 0x0002;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, UInt32 dwFlags, UInt32 dwExtraInfo);
[DllImport("user32.dll")]
static extern Byte MapVirtualKey(UInt32 uCode, UInt32 uMapType);
public static void VolumeUp()
{
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
public static void VolumeDown()
{
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
public static void Mute()
{
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
}
使用此功能,您可以将Systemvolume静音,增加或减少2度。
我仍在寻找获得当前Systemvolume的方法。
答案 2 :(得分:0)
我相信有一种方法可以使用nircmd。
首先下载nircmd并将其附加到项目中:
http://www.nirsoft.net/utils/nircmd.html
然后,通过cmd:
调用它您想要的命令在nircmd网站中指定。
例如,要将音量更改为x%,请使用:realativePath / nircmd.exe setsysvolume x