Имеется WPF-приложение (аудио-проигрыватель). Необходимо добавить возможность отлавливать нажатие определённых клавиш, даже когда приложение свёрнуто. Например, при нажатии Num4 - останавливать вопроизведение, при нажатии других клавиш (в зависимости от настроек - продолжать воспроизведение музыки и т.п.).
Пробовал реализовать через функцию GetAsyncKeyState(int vkey)
из user32.dll
, но мне это не совсем подходит, вот пример кода:
public static class KeyState
{
public static void Wait(Key key, Action<KeyStates> action)
{
var asyncOperation = AsyncOperationManager.CreateOperation(null);
SendOrPostCallback callBack = state => action((KeyStates) state);
ThreadPool.QueueUserWorkItem(state =>
{
var vk = KeyInterop.VirtualKeyFromKey(key);
var prev = ((GetAsyncKeyState(vk) & 0x8000) == 0x8000);
if (prev)
{
asyncOperation.Post(callBack, KeyStates.Down);
}
while (true)
{
var res = ((GetAsyncKeyState(vk) & 0x8000) == 0x8000);
if (res != prev && res)
{
asyncOperation.Post(callBack, KeyStates.Down);
}
prev = res;
}
});
}
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern short GetAsyncKeyState(int vkey);
}
Проблема здесь в том, что мне не только нужно отловить нажатие клавиши, но и предотвратить "продвижение" нажатия клавиши далее. Т.е. нажатие клавиши должно перехватываться моим приложением и не попадать в другие (например, в текстовый редактор). Буду благодарен за помощь. Если кто-нибудь ещё и подскажет как это корректно реализовать для приложения, которое развертывается через ClickOnce, было бы вообще шикарно. Спасибо!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть необходимость достраивать строку до "полного вида"Думал сделать это через регулярное выражение
Как программно изменить title другого xaml окна? Из xaml страницы? Пробовал так - MainMenuTitle = "new title";(MainMenu объявил), но выбивает ошибку -
В Json встречаются такие тексты \u0432\u043b\u0435, есть ли какой нибудь online парсер Json, который бы декодировал такой текст ?