Сложный вопрос. Ответ, вероятно, нет, если все, что я нашел в Intertubes, правильно, но стоит попробовать. Мне нужно переопределить Ctrl + SHIFT + Esc и Ctrl + Esc комбинации . Было бы неплохо переопределить комбинации клавиш Win, но у меня есть крюк низкого уровня, который делает это, мне только жаль, что он мне не нужен. Если мне удастся полностью заблокировать начальное меню и диспетчер задач политикой, переопределения больше не понадобятся, но я не смог найти правильную политику для этого.Горячие клавиши override
ответ
Итак, вам нужно переопределить горячие клавиши в вашем приложении? Тогда ответ, вероятно, да, как? Никакая идея, но если эта программа (http://www.inchwest.com/mapkeyboard.aspx) может, так что вы можете
Вы можете переопределить Ctrl + Esc (Я просто попытался в AutoHotkey, она работает), но не Ctrl + Сдвиг + Esc, не более Ctrl + Alt + Del.
Так что использование политики - это, пожалуй, путь ... Нет опыта в этой области, я боюсь.
В случае, если кто-то приходит сюда, ищет неавтомобильный хост, вот путь C#.
Это можно сделать с помощью крючка для клавиатуры. Хороший класс крюк для этого можно найти на этом CodeProject Article
Используя приведенный ниже код будет препятствовать WIN + ЛЕВЫЙ или WIN + RIGHT возникновения. Вы можете использовать это, чтобы переопределить любые ключи, которые вам нужны.
Это даже отменяет горячие клавиши, которые вы добавили через RegisterHotKey
Win API.
Как только у вас есть эти классы в вашем проекте, вы можете добавить обработчики к статическому классу HookManager
, как показано ниже.
//It's worth noting here that if you subscribe to the Key_Press event then it will break the international accent keys.
HookManager.KeyPress += HookManager_KeyPress;
HookManager.KeyDown += HookManager_KeyDown;
HookManager.KeyUp += HookManager_KeyUp;
Вы также можете добавить события мыши, но для простоты я просто показываю клавиатурный крючок.
Я также создал общий список, чтобы узнать, какие ключи в настоящее время недоступны, и я удаляю эти ключи из списка на событии KeyUp
.
public static List<Keys> keysDown = new List<Keys>();
private static void HookManager_KeyDown(object sender, KeyEventArgs e)
{
//Used for overriding the Windows default hotkeys
if(keysDown.Contains(e.KeyCode) == false)
{
keysDown.Add(e.KeyCode);
}
if (e.KeyCode == Keys.Right && WIN())
{
e.Handled = true;
//Do what you want when this key combination is pressed
}
else if (e.KeyCode == Keys.Left && WIN())
{
e.Handled = true;
//Do what you want when this key combination is pressed
}
}
private static void HookManager_KeyUp(object sender, KeyEventArgs e)
{
//Used for overriding the Windows default hotkeys
while(keysDown.Contains(e.KeyCode))
{
keysDown.Remove(e.KeyCode);
}
}
private static void HookManager_KeyPress(object sender, KeyPressEventArgs e)
{
//Used for overriding the Windows default hotkeys
}
public static bool CTRL()
{
//return keysDown.Contains(Keys.LShiftKey)
if (keysDown.Contains(Keys.LControlKey) ||
keysDown.Contains(Keys.RControlKey) ||
keysDown.Contains(Keys.Control) ||
keysDown.Contains(Keys.ControlKey))
{
return true;
}
else
{
return false;
}
}
public static bool SHIFT()
{
//return keysDown.Contains(Keys.LShiftKey)
if (keysDown.Contains(Keys.LShiftKey) ||
keysDown.Contains(Keys.RShiftKey) ||
keysDown.Contains(Keys.Shift) ||
keysDown.Contains(Keys.ShiftKey))
{
return true;
}
else
{
return false;
}
}
public static bool WIN()
{
//return keysDown.Contains(Keys.LShiftKey)
if (keysDown.Contains(Keys.LWin) ||
keysDown.Contains(Keys.RWin))
{
return true;
}
else
{
return false;
}
}
public static bool ALT()
{
//return keysDown.Contains(Keys.LShiftKey)
if (keysDown.Contains(Keys.Alt))
{
return true;
}
else
{
return false;
}
}
- 1. Отключить горячие клавиши Windows
- 2. формы Windows горячие клавиши
- 3. Горячие клавиши в iOS?
- 4. Горячие клавиши командной строки
- 5. jQuery Горячие клавиши - развязывание?
- 6. Горячие клавиши? Ключевые события?
- 7. Горячие клавиши имеют проблемы
- 8. Горячие клавиши на ContextMenuStrip
- 9. Как назначить горячие клавиши?
- 10. Eclipse Синхронизировать горячие клавиши
- 11. Горячие клавиши в webapps
- 12. Capslock вызвало горячие клавиши
- 13. Клавиши WINAPI обнаруживают другие горячие клавиши приложения
- 14. C++/Qt Глобальные горячие клавиши
- 15. Горячие клавиши рефакторинга в MonoDevelop
- 16. глобальные горячие клавиши в C#
- 17. Горячие клавиши в Kivy-desktop
- 18. ICSharpEditor и Accidental Горячие клавиши
- 19. Горячие клавиши Eclipse с Dvorak
- 20. Горячие клавиши в WPF MVVM?
- 21. Горячие клавиши для файлов Gedit?
- 22. Глобальные горячие клавиши для WindowsFormApplications
- 23. Горячие клавиши больше не работают
- 24. Как остановить горячие клавиши браузера?
- 25. Горячие клавиши missaligned in Swing
- 26. Глобальные горячие клавиши в Mono
- 27. Как зарегистрировать сложные горячие клавиши
- 28. Горячие клавиши блокировки в MDI
- 29. Настраиваемые глобальные горячие клавиши клавиатуры
- 30. Как изменить быстрые клавиши быстрого доступа MacOS/горячие клавиши?
Он делает это с помощью крючков с низким уровнем клавиатуры. Но они не работают с комбинациями CTRL + SHIFT + ESC и CTRL + ESC. – 2008-10-10 19:27:38