استخدم خلاط وحدة تخزين Windows للتحكم في وحدة تخزين التطبيق
]يمكن الوصول بسهولة إلى مستويات وحدة التخزين وتشغيلها من خلال مكتبة الصوت Core Windows ، وخاصة على نظام التشغيل Windows 7 وأنظمة التشغيل لاحقًا.
مثال رمز:
]يوضح مقتطف رمز تطبيق C# التالي كيفية التحكم في مستوى الصوت من خلال واجهة خلاط الصوت:
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace SetAppVolume
{
class Program
{
static void Main(string[] args)
{
const string app = "Mozilla Firefox";
foreach (string name in EnumerateApplications())
{
Console.WriteLine($"应用名称: {name}");
if (name == app)
{
// 显示静音状态和音量级别(相对于主音量百分比)
Console.WriteLine($"静音状态: {GetApplicationMute(app)}");
Console.WriteLine($"音量级别: {GetApplicationVolume(app)}");
// 静音该应用程序
SetApplicationMute(app, true);
// 将音量设置为主音量的一半(50%)
SetApplicationVolume(app, 50);
}
}
}
// 获取应用程序音量
public static float? GetApplicationVolume(string name)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return null;
float level;
volume.GetMasterVolume(out level);
return level * 100;
}
// 获取应用程序静音状态
public static bool? GetApplicationMute(string name)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return null;
bool mute;
volume.GetMute(out mute);
return mute;
}
// 设置应用程序音量
public static void SetApplicationVolume(string name, float level)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return;
Guid guid = Guid.Empty;
volume.SetMasterVolume(level / 100, ref guid);
}
// 设置应用程序静音状态
public static void SetApplicationMute(string name, bool mute)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return;
Guid guid = Guid.Empty;
volume.SetMute(mute, ref guid);
}
// 枚举应用程序
public static IEnumerable EnumerateApplications()
{
// 获取扬声器(第一个渲染 多媒体)设备
IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());
IMMDevice speakers;
deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);
// 激活会话管理器。我们需要枚举器
Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;
object o;
speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out o);
IAudioSessionManager2 mgr = (IAudioSessionManager2)o;
// 枚举此设备上的会话
IAudioSessionEnumerator sessionEnumerator;
mgr.GetSessionEnumerator(out sessionEnumerator);
int count;
sessionEnumerator.GetCount(out count);
for (int i = 0; i
لاحظ أن هذا الرمز يتطلب إضافة مرجع إلى mmdevicapi
. يتم استخدام واجهة COM في الكود ، ويجب معالجة الاستثناءات المقابلة والتأكد من إطلاق كائن COM بشكل صحيح لتجنب تسرب الموارد. بالإضافة إلى ذلك ، يجب استبدال Mozilla Firefox
باسم التطبيق الذي تريد التحكم فيه. هذا الرمز هو للرجوع إليه فقط وقد يحتاج إلى تعديله وفقًا لظروف محددة في التطبيقات الفعلية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3