Специальные клавиши на клавиатурах - PullRequest
2 голосов
/ 25 августа 2011

Есть ли способ, чтобы моя программа могла "запускать" специальные клавиши на моей клавиатуре, такие как клавиши мультимедиа (воспроизведение, пауза, следующий и т. Д.). Я пытаюсь создать приложение, которое выполняет эти функции, и простым способом было бы имитировать нажатие этих клавиш. Если это облегчает, это личный проект, поэтому я не против, если решение не является универсальным и / или не будет работать для всех клавиатур. Я оглянулся и думаю, что SendKey может быть одним из способов, но я не знаю, какие коды сканирования для этих специальных ключей.

1 Ответ

9 голосов
/ 25 августа 2011

Следующая ссылка предоставила отличную идею использования мультимедийных клавиш клавиатуры в вашем приложении, но эта статья предназначена для c ++, вы должны сами выяснить, как использовать эти функции.

РЕДАКТИРОВАТЬ: Основываясь на этих статьях, я реализовал некоторые мультимедийные функциональные клавиши, которые позволяют вам контролировать громкость из вашего приложения.

    private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
    private const int APPCOMMAND_VOLUME_UP = 0xA0000;
    private const int APPCOMMAND_VOLUME_DOWN = 0x90000;
    private const int WM_APPCOMMAND = 0x319;
    private const int APPCOMMAND_MEDIA_PLAY_PAUSE = 0xE0000;


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

    public Form1()
    {
        InitializeComponent();
    }

    private void btnPlayPause_Click(object sender, EventArgs e)
    {
        SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
            (IntPtr)APPCOMMAND_MEDIA_PLAY_PAUSE);
    }

    private void btnMute_Click(object sender, EventArgs e)
    {
        SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
            (IntPtr)APPCOMMAND_VOLUME_MUTE);
    }

    private void btnDecVol_Click(object sender, EventArgs e)
    {
        SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
            (IntPtr)APPCOMMAND_VOLUME_DOWN);
    }

    private void btnIncVol_Click(object sender, EventArgs e)
    {
        SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
            (IntPtr)APPCOMMAND_VOLUME_UP);
    }

Просто скопируйте и используйте в любом месте.

Низкий уровень Крючок клавиатуры в C #

Использование мультимедийных клавиш клавиатуры в собственной программе

...