疑難問題。答案可能不是,如果我在Intertubes中找到的都是對的,但值得一試。我需要重寫按Ctrl +移+ Esc鍵和的按Ctrl + Esc鍵組合。如果能夠覆蓋Win組合鍵將會很好,但我有一個低級別的掛鉤,我只希望我不需要它。如果我能夠完全按照策略阻止開始菜單和任務管理器,則不再需要覆蓋,但是我找不到正確的策略來執行此操作。熱鍵覆蓋
Q
熱鍵覆蓋
0
A
回答
-2
所以你需要覆蓋你的應用程序的熱鍵? 那麼答案可能是,如何? 不知道,但如果這(http://www.inchwest.com/mapkeyboard.aspx)程序,這樣,可以
1
您可以覆蓋按Ctrl + Esc鍵(我只是嘗試在AutoHotkey的,它的工作原理),但不按Ctrl + 移 + Esc鍵,不超過按Ctrl + Alt鍵+德爾。
因此,使用政策可能是要走的路......在這個領域沒有經驗,我擔心。
0
如果有人來這裏尋找非AutoHotKey,這裏是一個C#方式。
使用鍵盤掛鉤可以做到這一點。這方面的一個良好的鉤類可以在此CodeProject Article
發現使用以下代碼將防止WIN + LEFT或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. 角熱鍵,如何覆蓋梳?
- 2. XKB:切換覆蓋VS熱鍵
- 3. 覆蓋Dotnet樹視圖快捷鍵/熱鍵
- 4. 如何禁用/覆蓋Windows 10熱鍵與C#
- 5. SharpDevelop熱鍵顯示方法的覆蓋列表?
- 6. Autohotkeys覆蓋了一些默認的Windows熱鍵
- 7. 覆蓋鍵綁定
- 8. 軟鍵盤覆蓋
- 9. Autoit IniWrite()覆蓋鍵?
- 10. D3將熱圖覆蓋到地圖上
- 11. 覆蓋系統快捷鍵
- 12. 覆蓋Android原生鍵盤
- 13. 覆蓋鍵按角度
- 14. 鍵盤覆蓋部分edittext
- 15. Android軟鍵盤覆蓋EditText?
- 16. Atom覆蓋系統鍵
- 17. Revmob橫幅覆蓋鍵盤
- 18. c#覆蓋關鍵字
- 19. 新VS覆蓋關鍵字
- 20. Rails:覆蓋關聯主鍵
- 21. 覆蓋軟鍵盤佈局
- 22. 如何覆蓋Android鍵盤
- 23. 覆蓋覆蓋?
- 24. 要求虛函數覆蓋以使用覆蓋關鍵字
- 25. 覆蓋所有方法代替覆蓋關鍵字
- 26. C++覆蓋...覆蓋?
- 27. 覆蓋與覆蓋
- 28. 覆蓋或覆蓋
- 29. 熱鍵
- 30. Autohotkey熱鍵觸發另一個熱鍵
他通過使用低級別的鍵盤掛鉤來完成。但這些不適用於CTRL + SHIFT + ESC和CTRL + ESC組合。 – 2008-10-10 19:27:38