如何自主触发定时器?而不是项目一激活就开始了

已锁定

飞翔的燕子

  • 帖子

    27
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2007-07-27

普通 普通 如何晋级?

如何自主触发定时器?而不是项目一激活就开始了

591

3

2007-08-18 17:27:18

前两天刚发帖子问了下,“一段时间内用户不动作就自动回到登陆界面”这个问题,经过大家提醒和自己的搜索,借用了一个前辈的方案如下:
在全局动作中每隔5分钟去捕捉一下键盘和鼠标事件(前辈所写代码,原帖请见:http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=5&a_id=138317&s_id=0&num=10#anch),然后判断是否在此期间发生了动作,如果没发生动作就跳转回登陆界面。
但发现了以下问题:
因为项目一激活就开始全局动作执行,但用户不一定会在项目一激活就登陆系统,所以当用户登陆时可能是处在某个周期的末端(比如:4分30秒),那么用户一登陆进去30秒之后系统就会自动返回登陆界面,所以本来设置的是5分钟返回,但经常是运行了不到5分钟就返回了
基于以上问题我想这样来做:只有在用户登陆的时候去让触发器开始运行,而不是项目激活的时候就开始运行。请问这个可以作到吗?
再请大家看看以下城斑竹写的代码中有没有错误,我C比较差,有点看不懂,方便的话加个注释。呵呵
BOOL GetMouseKeyStatus()
{
typedef struct tagLASTINPUTINFO {
UINT cbSize;
DWORD dwTime;
} LASTINPUTINFO, * PLASTINPUTINFO;
#pragma code("user32.dll");
BOOL GetLastInputInfo(PLASTINPUTINFO plii);
#pragma code();
BOOL bRet = FALSE;
static long oldtime;
LASTINPUTINFO tim;
tim.cbSize=sizeof(LASTINPUTINFO);
GetLastInputInfo(&tim);
if(oldtime != tim.dwTime)
{
oldtime = tim.dwTime;
bRet = TRUE;
}
return bRet;
}
函数返回FALSE:表示未发生鼠标和键盘事件
返回TRUE:表示发生了鼠标或键盘事件
如何自主触发定时器?而不是项目一激活就开始了 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32760条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。