![]() |
Базовый регулятор громкости C#Microsoft Windows позволяет изменять или отключать громкость системного звука с помощью экранных элементов управления. Этот программный элемент управления может использоваться в приложениях .NET для увеличения или уменьшения громкости или для полного отключения звука компьютера. Функция SendMessage API В некоторых проектах может быть полезно добавить регулятор громкости. В простейших случаях может потребоваться разрешить пользователю поэтапно увеличивать или уменьшать громкость или полностью отключать звук компьютера. Когда этот уровень контроля достаточен, вы можете включить его в свое программное обеспечение с помощью единой функции Windows API, называемой "SendMessage". SendMessage позволяет синхронно отправлять простые сообщения в определенные окна. Эта функция имеет широкий спектр различных применений. В этой статье мы будем использовать его для изменения основного уровня громкости операционной системы. Поскольку это функция API Windows, доступ к ней необходимо осуществлять с помощью служб вызова платформы (P/Invoke). Чтобы упростить доступ к атрибутам P/Invoke, добавьте в свой код следующую директиву using: using System.Runtime.InteropServices;С помощью директивы using мы можем добавить ссылку на внешнюю функцию, добавив приведенный ниже код. [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);Функция SendMessage имеет четыре параметра и возвращает значение IntPtr. Возвращаемое значение содержит дескриптор окна, когда это необходимо. При изменении громкости возвращаемое значение не требуется. Параметры:
Сообщение, которое нам нужно предоставить для отправки сообщения, и значения дополнительной информации являются предопределенными целочисленными кодами. Чтобы сделать исходный код более читабельным, вы должны определить именованные константы для этих значений. Сообщение об увеличении, уменьшении или уменьшении громкости всегда одно и то же. Он называется WM_APPCOMMAND и должен быть определен следующим образом: const int WM_APPCOMMAND = 0x319;Три дополнительные константы определяют дополнительную информацию для сообщения. Они определяют, какое действие по регулированию громкости будет выполнено: const int APPCOMMAND_VOLUME_MUTE = 0x80000; const int APPCOMMAND_VOLUME_DOWN = 0x90000; const int APPCOMMAND_VOLUME_UP = 0xA0000;Изменение громкости С помощью определенной функции и констант мы можем вызвать SendMessage. Первый пример кода отключает громкость или восстанавливает ее до прежнего уровня, если она уже отключена. Обратите внимание, что в качестве первого аргумента передается свойство Handle текущего окна. Это предполагает, что код вызывается из кода за окном. Если вы включаете функцию в библиотеку, вы должны предоставить средство для предоставления подходящего дескриптора. Обратите также внимание на использование фиктивного нулевого значения для аргумента wParam. SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_MUTE);Чтобы увеличить громкость, сделайте вызов. Громкость будет увеличиваться на небольшую величину с каждым вызовом, пока не будет достигнут максимальный уровень. SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_UP);Наконец, чтобы уменьшить громкость, используйте приведенный ниже код: SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_DOWN); ![]() Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() |
Мои услуги
|
© upread.ru 2013-2022 При перепечатке активная ссылка на сайт обязательна. |