当鼠标N秒内无操作时执行一个操作(如:执行屏保、返回首页等)

来源:互联网 发布:淘宝sha骗局 编辑:程序博客网 时间:2024/05/15 06:40

*--可以应用到公开查询系统等

*--表单的Load事件加代码:
Public
gnMouseX,gnMouseY,gnTotalTimer
Store 0 To
gnMouseX,gnMouseY,gnTotalTimer
Declare Integer GetCursorPos In user32 String
@ lpPoint
 

*--表单的Unload事件加代码:
Clear Dlls
*--向表单添加一个Timer控件,Timer1控件的Interval值为1000(即1秒),Enabled属性为.T.,此控件的Timer事件:
cbuff=Space
(16)
MyMouse=GetCursorPos(@cBuff)
&&获取鼠标的坐标值
X=Asc(Substr(cBuff,2,1))*256+Asc(Substr
(cBuff,1,1))
Y=
Asc(Substr(cBuff,6,1))*256+Asc(Substr
(cBuff,5,1))
If gnTotalTimer=10
&&10秒
   
Store 0 To
gnMouseX,gnMouseY,gnTotalTimer
   
Messagebox('鼠标已经10秒没有移动了'+Space
(5),64,'信息提示')
Else
    If
gnMouseX!=X Or gnMouseY!=Y
        gnMouseX=
Asc(Substr(cBuff,2,1))*256+Asc(Substr
(cBuff,1,1))
        gnMouseY=
Asc(Substr(cBuff,6,1))*256+Asc(Substr
(cBuff,5,1))
        gnTotalTimer=0
   
Else
       
gnTotalTimer=gnTotalTimer+1
   
Endif
Endif
 

*--表单的Init事件加代码:
This.Timer1.Timer
()
 

*--示例:
http://dl2.csdn.net/down4/20070706/06165015473.rar

*----------------------------------------------------
*!* 还有一个方法就是不用API,用VFP自带MROW和MCOL函数检测,
*!* 但只适合软件最大化的程序,因为如果鼠标移出程序,
*!* MROW和MCOL将无法检测鼠标。
*!* 此方法就是将以下代码代替上面Timer控件中的Timer事件代码
X=Mrow
()
Y=
Mcol
()
If gnTotalTimer=10
&&10秒
   
Store 0 To
gnMouseX,gnMouseY,gnTotalTimer
   
Messagebox('鼠标已经10秒没有移动了'+Space
(5),64,'信息提示')
Else
    If
gnMouseX!=X Or gnMouseY!=Y
        gnMouseX=
Mrow
()
        gnMouseY=
Mcol
()
        gnTotalTimer=0
   
Else
   
    gnTotalTimer=gnTotalTimer+1
   
Endif
Endif