用于键盘模拟鼠标的开发
上面的代码是我作的一个用于键盘模拟鼠标的软件,实现了下面的功能:
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);
}
哈,一不小心把第三个密秘也告诉大家了,就是如何在没有焦点的情况下移动鼠标。具体的大家看代码吧,希望和你一起进步!