检测应用程序中的鼠标光标图标更改

时间:2015-01-02 18:14:41

标签: vb.net mouseover

我一直在寻找一段时间,但却无济于事。

我尝试做的是找到一种方法来检测鼠标图标在鼠标悬停时是否发生变化。

例如:如果您将鼠标悬停在链接上,它会从箭头变为手指。

我的计划是获取窗口的ID,并根据鼠标图标的变化扫描可点击的对象。我可以抓住窗户,把它拉到前面,然后通过设置鼠标的x,y坐标来移动鼠标,但是我没有看到检测鼠标是否找到任何东西的方法。

我希望这是内置于vb.net中的内容,但如果我必须使用API​​,我就可以了。

1 个答案:

答案 0 :(得分:0)

这种方法是错误的,因为这些概念与您在视觉上观察到的不同。

没有“click”这样的东西 - 有Button Down事件(GUI子系统向应用程序发送的Windows消息),Button Up事件和Mouse Move事件。如果按下按钮和按钮向上没有或只有很少的鼠标移动,则操作系统认为这是一次点击。

除非鼠标输入被其他窗口捕获,否则所有事件都将发送到鼠标光标热点下的窗口。

当光标移动到窗口上时,操作系统会向窗口发送WM_NCHITTEST消息,以确定窗口如何处理光标下的区域。根据窗口的响应,Windows执行窗口操作(窗口移动或调整大小等)或将鼠标相关事件传递给窗口过程。然后程序决定如何反应 - 什么也不做,做出视觉上的改变,做一些动作等等。

从描述中可以看出,光标更改和实际操作是两种不同的松散相关操作。如果没有动作,可以执行没有光标更改或光标更改的操作。