html获取鼠标按键数,获取各种鼠标信息的方法
获取各种鼠标信息的方法主要内容:鼠标双击的时间间隔鼠标光标的闪烁频率鼠标的按键数目鼠标等待时的光标鼠标在窗体上的的位置记录鼠标的行为截取系统信息判断鼠标的单击键1.鼠标的双击时间间隔实现效果: 主要利用API函数GetDoubleClickTime(用于判断连续两次鼠标单击之间会被处理成双击事件的间隔时间)声明语法如下:[DllImport("user32.dll", EntryPoint = "
获取各种鼠标信息的方法
主要内容:
鼠标双击的时间间隔
鼠标光标的闪烁频率
鼠标的按键数目
鼠标等待时的光标
鼠标在窗体上的的位置
记录鼠标的行为
截取系统信息判断鼠标的单击键
1.鼠标的双击时间间隔
实现效果:
主要利用API函数GetDoubleClickTime(用于判断连续两次鼠标单击之间会被处理成双击事件的间隔时间)
声明语法如下:
[DllImport("user32.dll", EntryPoint = "GetDoubleClickTime")]public extern static int GetDoubleClickTime();
注意:在使用API函数时,应该首先在命名空间中添加System.Runtime.InteropServices命名空间。
主要实现代码如下:
[DllImport("user32.dll", EntryPoint = "GetDoubleClickTime")]public extern static intGetDoubleClickTime();private void Frm_Main_Load(objectsender, EventArgs e)
{
label1.Text="鼠标双击时间间隔:"+GetDoubleClickTime()+ "毫秒";
}
2.鼠标光标的闪烁频率
实现效果:
主要利用API函数GetCaretBlinkTime(用于判断插入符光标的闪烁频率)
声明语法如下:
[DllImport("user32.dll", EntryPoint = "GetCaretBlinkTime")]public extern static int GetCaretBlinkTime();
主要实现代码如下:
[DllImport("user32", EntryPoint = "GetCaretBlinkTime")]public extern static intGetCaretBlinkTime();private void Frm_Main_Load(objectsender, EventArgs e)
{
label1.Text= GetCaretBlinkTime()+ "毫秒";
}
3.鼠标的按键数目
实现效果:
主要利用了API函数GetSystemMetrics(用来返回与Windows环境有关的信息)
声明语法如下:
[DllImport("user32", EntryPoint = "GetSystemMetrics")]public static extern int GetSystemMetrics(int intcount);
主要实现代码:
public const int SM_CMOUSEBUTTONS = 43;
[DllImport("user32", EntryPoint = "GetSystemMetrics")]public static extern int GetSystemMetrics(intintcount);private void Form1_Load(objectsender, EventArgs e)
{int intCon =GetSystemMetrics(SM_CMOUSEBUTTONS);
label1.Text= intCon + "个";
}
注意:本实例在使用GetSystemMetrics函数时,为intcount参数定义了SM_CMOUSEBUTTONS常量值43,表示鼠标按键的数量,如果没有鼠标,则为0。
4.鼠标等待时的光标
主要使用Form类的Cursor属性。
主要实现代码:
private void Form1_Load(objectsender, EventArgs e)
{this.Cursor =Cursors.WaitCursor;
}
5.鼠标在窗体上的位置
实现效果如图:
主要利用了MouseEventArgs类的X属性与Y属性
实现代码如下:
private void Frm_Main_MouseDown(objectsender, MouseEventArgs e)
{this.label1.Text = "X坐标" +e.X.ToString();this.label2.Text = "Y坐标" +e.Y.ToString();
}
6.记录鼠标的行为
实现效果:
主要利用MouseEventArgs类的Button属性
主要实现代码:
private void Form1_MouseDown(objectsender, MouseEventArgs e)
{string str =label1.Text;if (e.Button ==MouseButtons.Right)
{
str+= "鼠标右键按下";
}if (e.Button ==MouseButtons.Left)
{
str+= "鼠标左键按下";
}if (e.Button ==MouseButtons.Middle)
{
str+= "鼠标中键按下";
}
label1.Text=str;
}
7.截取系统信息判断鼠标的单击键
主要实现效果:
在C#中截取系统消息,有以下两种方案:
<1>在Form中重写Control类的虚方法WndProc来截取
实现代码:
protected override void WndProc(ref Message m) //方法一,重写WndProc虚方法,与方法二不可同时存在
{switch (m.Msg) //判断系统消息的ID号
{case 513:
MessageBox.Show("单击了鼠标左键!", "系统信息");
m.Result= (IntPtr)0; //为响应消息处理而向Windows返回的值
break;case 516:
MessageBox.Show("单击了鼠标右键!", "系统信息");
m.Result= (IntPtr)0; //为响应消息处理而向Windows返回的值
break;default:base.WndProc(refm);break;
}
}
View Code
<2>通过实现ImessageFilter接口来创建消息筛选器,从而截获
实现代码:
MessageFilter mf = newMessageFilter();private void Frm_Main_Load(object sender, EventArgs e) //窗体加载消息筛选器
{
Application.AddMessageFilter(mf);//添加消息筛选器,以便在目标传送Windows消息时监视这些消息
}private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e) //从窗体中移除一个消息筛选器
{
Application.RemoveMessageFilter(mf);//从应用程序的消息泵移除一个消息筛选器
}public class MessageFilter : IMessageFilter //方法二,实现IMessageFilter接口,从而获得Windows消息,与方法一不可同时存在
{public bool PreFilterMessage(ref Message message) //实现PreFilterMessage方法
{switch(message.Msg)
{case 513:
MessageBox.Show("单击了鼠标左键!", "系统信息");return true;case 516:
MessageBox.Show("单击了鼠标右键!", "系统信息");return true;default:return false;
}
}
}
View Code
更多推荐
所有评论(0)