不同的MSG有不同的LParam和WParam值,通过这两个参数区分不同的热键!
解决方案 »
- C#为何对EXCEL的操作就那么难
- 路径问题
- C#点击与触发的区别
- 表格添加合计功能 ,有点问题
- 为什么会提示"treeID"未定义?
- 通过单个字符的占据的面积(长*宽)能算出该字符的Font.size吗?
- TreeView中如何实现父结点的checkBox的状态变化,而实现子结点的全选或全部取消
- 在关键字 'User' 附近有语法错误
- C#运行的时候提示“无法加载DLL(XXXX.dll)”,DllImport设置绝对路径后就不报错了。
- 在那儿可以下载 C#技术内幕(影印版) 电子书
- 感谢CSDN上的兄弟们,使我软件顺利完工.散分.顺便问个问题.
- [菜鸟问题]在windows应用程序中的鼠标事件
{
case HotKey1:
...;
break;
case HotKey2:
...;
break;
}
在mainForm中定义alt + q Form1.show()
alt + w Form2.show()
alt + e Form3.show()
bool success = NativeWIN32.RegisterHotKey(Handle,
100,
NativeWIN32.KeyModifiers.Control | NativeWIN32.KeyModifiers.Alt,
Keys.A); //注册热键
bool success = NativeWIN32.RegisterHotKey(Handle,
101,
NativeWIN32.KeyModifiers.Control | NativeWIN32.KeyModifiers.Alt,
Keys.D7); //又注册了一个热键
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);
显然要根据这个id注册.取的时候,也是根据这个ID来区分是哪组热键响应的事件.这个信息放在message的WParam中. protected override void WndProc( ref Message m )
{
const int WM_HOTKEY = 0x0312;
switch(m.Msg)
{ case WM_HOTKEY:
if (m.WParam.ToInt32() == 100)
MessageBox.Show("100");
if (m.WParam.ToInt32() == 101)
MessageBox.Show("101");
break;
}
base.WndProc(ref m );
}