2015-01-01 2 views
0

Я нашел этот скрипт для изменения объема звука в системе, и он работает. Но каковы эти постоянные коды томов, и где я могу найти полный список этих кодов, которые делают больше вещей.C# Каковы эти коды/сообщения, изменяющие громкость

[DllImport("user32.dll")] 
    static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 

//Volume codes, or messages, or whatever they are called 
const int VOLUME_MUTE = 0x80000; 
const int VOLUME_DOWN = 0x90000; 
const int VOLUME_UP = 0xA0000; 

SendMessage(this.Handle, 0x319, IntPtr.Zero, (IntPtr)VOLUME_UP); 

ответ

1

Это сообщения AppCommand.

0x319 является Win32 для Windows MSG для WM_APPCOMMAND и сообщения более точно APPCOMMAND_VOLUME_UP и т.д ...

AppCommand сообщения являются сообщения, отправленные на окна, которые обрабатываются на глобальном уровне и выполняют определенные функции программы. Они, как правило, связаны с горячими клавишами клавиатуры и функциями кнопки мыши.

Ваше приложение получает первую трещину при обработке любых таких сообщений, и если вы не обрабатываете их, то ваш родитель приложений. Если это не обрабатывается, то в конечном итоге он отправляется глобальному сообщению, чтобы обработать их. Ключевым моментом здесь является то, что другие окна могут захватывать эти сообщения, поэтому не гарантирует, что отправка этих сообщений выполнит задачу. Точно так же, как вы могли видеть, когда нажатие на громкость вверх или вниз на клавиатуре может не всегда срабатывать, когда определенные окна имеют фокус.

Вы можете найти детали для всех сообщений в ссылке API Win32:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx

+0

Как прийти в ссылке вы публикуемая, APPCOMMAND_VOLUME_UP и APPCOMMAND_VOLUME_DOWN является diffrent из значений я отвечал. Также доза каждой программы есть собственный набор сообщений. Как и MicrosoftWord, есть свои собственные сообщения. – JackBarn

+0

@JackBarn - они не разные значения. Проблема в том, что документация для Win32 API, которая для языка C, и делает вещи на более низком уровне. Он имеет макрос, называемый GET_APPCOMMAND_LPARAM(), который извлекает фактическое значение из параметра. Значение, указанное выше, является необработанным значением для всего параметра, включая поля устройства и keystate, но поскольку вы фактически не отправляете эти данные, это все 0. –

+0

@JackBarn - и нет, это глобальные окна, определяющие сообщения. Конечно, программа может определять свои собственные сообщения, но без какого-либо общего определения только о том, что приложение будет знать о них. –

Смежные вопросы