上面的代码是我作的一个用于键盘模拟鼠标的软件,实现了下面的功能: 1、启动后放在右下角的托盘中,实现实时的监控。(这个很容易,大家自已看看代码就行)。 2、注册全局热键四个,分别为上下左右四个键,实现在任意环境下点击四个键实现鼠标的微调,这里有几个问题和大家说一下:第一个就是如何注册热键,我用的是以前在天极网微软件开发者的一篇文章的代码,贴出来给大家看看:如何处理热键
:
protected override void WndProc( ref Message m ) { const int WM_HOTKEY = 0x0312;
switch(m.Msg) { case WM_HOTKEY:
MessageBox.Show("Hotkey pressed");
ProcessHotkey();
break; } base.WndProc(ref m ); }
但是我发现一个问题,就是不能同时注册多个热键,如果想注册多个,不是不可以,是注册后不能分辩出哪个是左,哪个是右?想了很长时间,才找到一个办法,是这样的 注册热键时:
NativeWIN32.KeyModifiers modifiers = NativeWIN32.KeyModifiers.None; NativeWIN32.RegisterHotKey(Handle, 100, modifiers, Keys.Right); //注册热键 NativeWIN32.RegisterHotKey(Handle, 101, modifiers, Keys.Left); //又注册了一个热键 NativeWIN32.RegisterHotKey(Handle, 102, modifiers, Keys.Up); //又注册了一个热键 NativeWIN32.RegisterHotKey(Handle, 103, modifiers, Keys.Down); //又注册了一个热键 taskbarNotifier2.CloseClickable=false; taskbarNotifier2.TitleClickable=false; taskbarNotifier2.ContentClickable=false; taskbarNotifier2.EnableSelectionRectangle=false; taskbarNotifier2.KeepVisibleOnMousOver=false; taskbarNotifier2.ReShow*onMouseOver*=false; taskbarNotifier2.Show(" 网际浪子简介","浪子是一个计算机的狂热爱好者,欢迎和我联系:qq10402852 email:huanghai@bdfsz.com.cn",500,6000,500); }
处理消息时:
protected override void WndProc( ref Message m ) { const int WM_HOTKEY = 0x0312; switch(m.Msg) {
case WM_HOTKEY: if (m.WParam.ToInt32() == 100) Cursor.Position = new Point(Cursor.Position.X+1,Cursor.Position.Y);//右移一个 if (m.WParam.ToInt32() == 101) Cursor.Position = new Point(Cursor.Position.X-1,Cursor.Position.Y);//左移一个 if (m.WParam.ToInt32() == 102) Cursor.Position = new Point(Cursor.Position.X,Cursor.Position.Y-1);//上移一个 if (m.WParam.ToInt32() == 103) Cursor.Position = new Point(Cursor.Position.X,Cursor.Position.Y+1);//下移一个
break;
} base.WndProc(ref m ); }
哈,一不小心把第三个密秘也告诉大家了,就是如何在没有焦点的情况下移动鼠标。具体的大家看代码吧,希望和你一起进步!
|