如何监控鼠标位置

rockmanhqu 2007-07-26 02:49:04
例如当用户鼠标移动到windows的任务栏,当前程序就去打开一个窗体。
或鼠标移动到离屏幕顶端多少个像素,当前程序就去打开一个窗体。
...全文
224 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2007-07-27
  • 打赏
  • 举报
回复
using System.Runtime.InteropServices;

[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(Point Point);
[DllImport("user32.dll")]
public static extern IntPtr GetParent(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool GetClassName(IntPtr hWnd,
StringBuilder lpClassName, int nMaxCount);

private void timer1_Tick(object sender, EventArgs e)
{
IntPtr vHandle = WindowFromPoint(Control.MousePosition); //得到鼠标所在的窗体句柄
while (GetParent(vHandle) != IntPtr.Zero) //得到最上级窗体的句柄
vHandle = GetParent(vHandle);
StringBuilder vStringBuilder = new StringBuilder(256);
GetClassName(vHandle, vStringBuilder, vStringBuilder.Capacity); //取得该窗体的类名
if (vStringBuilder.ToString() == "Shell_TrayWnd") //如果类名为Shell_TrayWnd则为任务栏
Text = "鼠标在任务栏上";
else Text = "NULL";
}
Code従業員 2007-07-27
  • 打赏
  • 举报
回复
上面那个漏个 return p2; //啊
Code従業員 2007-07-27
  • 打赏
  • 举报
回复
private Point MouseMove(object sender, MouseEventArgs e)
{
Point p2 = new Point(e.X, e.Y);
}

//可以考虑抓windows的任务栏的句柄,因为电脑启动一般来说没有什么变化,猜想应该不会改(猜想而已应以事实说话);
rockmanhqu 2007-07-27
  • 打赏
  • 举报
回复
那鼠标是否移动到windows的任务栏,这个如何判断呢?
因为任务栏并不是在最下方的,他可以拖到屏幕的四个角落。
王集鹄 2007-07-26
  • 打赏
  • 举报
回复
private void timer1_Tick(object sender, EventArgs e)
{
Text = string.Format("{0}", Control.MousePosition);
}
nacarat 2007-07-26
  • 打赏
  • 举报
回复
win32 API:GetCursorPos

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧