我想創建一個簡單的應用程序,它具有發送鍵(如快捷鍵)。這種情況是,只要創建的應用程序處於非活動狀態窗口,只要系統正在運行,系統仍會識別用戶的按鍵。使用C#的快捷鍵
總之,這是單純的喜歡按(窗口+ d)立即顯示桌面時是什麼應用程序/窗口是你進來。
誰能幫助我我如何能做到這一點在C#2005
我想創建一個簡單的應用程序,它具有發送鍵(如快捷鍵)。這種情況是,只要創建的應用程序處於非活動狀態窗口,只要系統正在運行,系統仍會識別用戶的按鍵。使用C#的快捷鍵
總之,這是單純的喜歡按(窗口+ d)立即顯示桌面時是什麼應用程序/窗口是你進來。
誰能幫助我我如何能做到這一點在C#2005
使用以下命令:
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
[DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
和
[Flags]
public enum ModifierKeys : uint
{
Alt = 1,
Control = 2,
Shift = 4,
Win = 8
}
private ModifierKeys _getModifierKeys(bool isAlt, bool isCtrl, bool isShift, bool isWin)
{
return (isAlt ? ModifierKeys.Alt : 0) |
(isCtrl ? ModifierKeys.Control : 0) |
(isShift ? ModifierKeys.Shift : 0) |
(isWin ? ModifierKeys.Win : 0);
}
然後,註冊您的熱鍵,
RegisterHotKey(hWndNotify, id,
(uint)_getModifierKeys(_isAlt, _isCtrl, _isShift, _isWin),
(uint)_key);
在主機的hWnd
,聽WM_HOTKEYREADY,然後使用
public bool Matches(ref Message m)
{
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
ModifierKeys modifier = (ModifierKeys)((int)m.LParam & 0xFFFF);
if ((key == Key) &&
(modifier == Modifier))
{
return true;
}
return false;
}
檢查你的熱鍵的比賽你能通過你的其他問題,並看到標記任何正確幫助你的答案,如接受的答案(剔)。這將代表那些幫助你和你自己的人,這會鼓勵其他人提供幫助。 – 2011-06-02 05:38:28