标题:怎样监测表单中一定明间内有无鼠标键盘动作
只看楼主
pjwf2008
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2015-3-5
结帖率:41.18%
已结贴  问题点数:20 回复次数:13 
怎样监测表单中一定明间内有无鼠标键盘动作
怎样监测表单中一定明间内有无鼠标键盘动作
搜索更多相关主题的帖子: 鼠标键盘 
2015-03-22 21:30
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:5 
当鼠标N秒内无操作时执行一个操作(如:执行屏保、返回首页等)
http://blog.
键盘检测,表单的 KeyPress 事件即可(表单的 KeyPreview 设为.T.)
2015-03-22 21:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
因鼠标键盘是全局的,也可以定时用API GetLastInputInfo() 获取上次输入操作的时间进行比对。
2015-03-22 21:50
pjwf2008
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2015-3-5
得分:0 
以下是引用tlliqi在2015-3-22 21:34:33的发言:

当鼠标N秒内无操作时执行一个操作(如:执行屏保、返回首页等)
http://blog.
键盘检测,表单的 KeyPress 事件即可(表单的 KeyPreview 设为.T.)
网址无法链接
2015-03-22 21:57
pjwf2008
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2015-3-5
得分:0 
以下是引用吹水佬在2015-3-22 21:50:17的发言:

因鼠标键盘是全局的,也可以定时用API GetLastInputInfo() 获取上次输入操作的时间进行比对。
怎么调用GetLastInputInfo() 实际怎么操作
2015-03-22 22:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用pjwf2008在2015-3-22 22:50:37的发言:

怎么调用GetLastInputInfo() 实际怎么操作

示例:
程序代码:
DECLARE LONG GetLastInputInfo IN User32 STRING@
oForm = CREATEOBJECT("Form1")
oForm.Show(1)
READ EVENTS
RELEASE ALL
CLEAR DLLS
RETURN

DEFINE CLASS Form1 As Form 
    nLastInputTime = 0
    nLastTime = 0
    
    ADD OBJECT Timer1 AS Timer WITH Interval=1000
    ADD OBJECT Text1 AS TextBox WITH Top=100,Left=120,Value=0

    PROCEDURE UnLoad
        CLEAR EVENTS
    ENDPROC

    PROCEDURE Timer1.Timer
        IF INT(thisform._GetLastInputInfo()/1000) == thisform.nLastInputTime
            IF (INT(SECONDS()) - thisform.nLastTime) > 10
                MESSAGEBOX("鼠标键盘无动作超过10秒关闭退出")
                thisform.Release
            ELSE
                thisform.Text1.Value = thisform.Text1.Value + 1
            ENDIF
        ELSE
            thisform.nLastInputTime = INT(thisform._GetLastInputInfo()/1000)
            thisform.nLastTime = INT(SECONDS())
            thisform.Text1.Value = 0
        ENDIF
    ENDPROC

    FUNCTION _GetLastInputInfo
        LOCAL stLII
        stLII = 0h0800000000000000
        GetLastInputInfo(@stLII)
        RETURN CTOBIN(RIGHT(stLII, 4), "4RS")
    ENDFUNC
ENDDEFINE
2015-03-22 23:05
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:5 
留迹学习……谢了

只求每天有一丁点儿的进步就可以了
2015-03-23 06:43
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:5 
有借鉴的作用。

活到老,学到老! http://www. E-mail:hu-jj@
2015-03-23 07:34
pjwf2008
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2015-3-5
得分:0 
以下是引用吹水佬在2015-3-22 23:05:42的发言:

 
示例:
DECLARE LONG GetLastInputInfo IN User32 STRING@
oForm = CREATEOBJECT("Form1")
oForm.Show(1)
READ EVENTS
RELEASE ALL
CLEAR DLLS
RETURN
 
DEFINE CLASS Form1 As Form  
    nLastInputTime = 0
    nLastTime = 0
     
    ADD OBJECT Timer1 AS Timer WITH Interval=1000
    ADD OBJECT Text1 AS TextBox WITH Top=100,Left=120,Value=0
 
    PROCEDURE UnLoad
        CLEAR EVENTS
    ENDPROC
 
    PROCEDURE Timer1.Timer
        IF INT(thisform._GetLastInputInfo()/1000) == thisform.nLastInputTime
            IF (INT(SECONDS()) - thisform.nLastTime) > 10
                MESSAGEBOX("鼠标键盘无动作超过10秒关闭退出")
                thisform.Release
            ELSE
                thisform.Text1.Value = thisform.Text1.Value + 1
            ENDIF
        ELSE
            thisform.nLastInputTime = INT(thisform._GetLastInputInfo()/1000)
            thisform.nLastTime = INT(SECONDS())
            thisform.Text1.Value = 0
        ENDIF
    ENDPROC
 
    FUNCTION _GetLastInputInfo
        LOCAL stLII
        stLII = 0h0800000000000000
        GetLastInputInfo(@stLII)
        RETURN CTOBIN(RIGHT(stLII, 4), "4RS")
    ENDFUNC
ENDDEFINE
我的表单不是用prg文件定义的,里面的自定义函数代码要放到哪个事件中
2015-03-24 12:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用pjwf2008在2015-3-24 12:37:48的发言:

我的表单不是用prg文件定义的,里面的自定义函数代码要放到哪个事件中

用表单设计器时,选择菜单的“表单”--“新建方法程序”就可以自定义函数
2015-03-24 15:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442943-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.225211 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved