我想创建一个简单的应用程序,它具有发送键(如快捷键)。这种情况是,只要创建的应用程序处于非活动状态窗口,只要系统正在运行,系统仍会识别用户的按键。使用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