快速判断用户是否正在使用指定应用程序的方法与流程

文档序号:11864169阅读:569来源:国知局

本发明属于计算机桌面应用领域,尤其是需要判断用户界面是否停留在指定的应用程序上时,快速判断的方法,提供一种快速判断用户界面是否停留在指定的应用程序上的方法。



背景技术:

随着计算机和网络的飞速发展,远程教育的应用越来越广泛,当远程教育应用在低龄儿童身上时,由于低龄儿童普遍存在注意力不足,容易开小差等情况,造成培训效果打折扣,为此,需要一个判断学生在使用远程教育软件时,快速判断是否认真的技术,以便采取后续措施。



技术实现要素:

本发明的目的是针对现有技术的空白,提供了一种快速判断用户界面是否停留在指定的应用程序上的方法。

本发明方法的具体步骤为:

步骤一,获取屏幕的分辨率,记为CXScreen、CYScreen,再根据实际情况,设置一个网格距离值Interval,将CXScreen、CYScreen均除以Interval,得到横向和纵向的循环判断的次数,分别记为CXNum、CYNum。

步骤二,初始化一个计数变量UseNum=0,然后根据CXNum、CYNum,使用一个二重循环,计算每次循环体内的需要判断的点的坐标Point(n,m)

Point(n,m)=(n×Interval,m×Interval)0≤n≤CXNum,0≤m≤CYNum

当点的坐标计算出来后,调用Windows提供的API函数,获取该点所在的应用程序的标识,然后将该应用程序的标识与预想的应用程序的标识进行比较,若相等,则将计数变量UseNum=UseNum+1。

步骤三,计算坐标Point(n,m)落在指定的应用程序上的比率,若大于阈值U,则认为用户正在使用该应用程序。

各步骤的详细说明如下:

步骤一中,网格距离值Interval用于决定判断的网格点之间的距离,一般设置为10到50像素之间,设置得小则检测精准度越高,设置得大则检测速度越快,根据实际要求,测试后使用一个可接受的值。

步骤二中,通过Windows API中的WindowFromPoint获取指定点所在的窗口句柄,该API的输入参数是一个点的坐标值,输出参数是这个点所在的窗口句柄,然后使用GetWindowThreadProcessId获取这个窗口句柄所在的进程ID,将该应用程序的进程ID与需要判断的应用程序的进程ID进行比较,从而得到该点是否属于需要判断的应用程序。

步骤三中,落在指定的应用程序上的比率Ratio的计算公式如下:

<mrow> <mi>R</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mo>=</mo> <mfrac> <mrow> <mi>U</mi> <mi>s</mi> <mi>e</mi> <mi>N</mi> <mi>u</mi> <mi>m</mi> </mrow> <mrow> <mi>C</mi> <mi>X</mi> <mi>N</mi> <mi>u</mi> <mi>m</mi> <mo>&times;</mo> <mi>C</mi> <mi>Y</mi> <mi>N</mi> <mi>u</mi> <mi>m</mi> </mrow> </mfrac> </mrow>

计算得到的Ratio的值域为[0,1],一般当Ratio处于[0.85,1]时,认为学生正在使用应用程序,因为用户屏幕上一般还有任务栏等空间是被系统所占用的,这些面积需要排除在外。

本发明有益效果如下:

本方法的思想是通过Windows系统提供的功能函数,通过简单的循环调用来判断某些屏幕位置是否属于指定的应用程序,获取到所有的信息后,根据是否停留在指定的应用程序的点占所有点的比率,判断用户是否在使用指定的应用程序,主要的创新点是不通过复杂的窗口层次的判断方式,仅通过直接的判断点的方式,加快了计算速度,减少了干扰因素,使本方法在各种用户环境下都能较好的工作。

附图说明

图1为本发明实施例。

具体实施方式

下面结合附图和实施例对本发明做进一步说明。

快速判断用户界面是否停留在指定的应用程序上的方法,具体步骤如下:

步骤一,获取屏幕的分辨率,记为CXScreen、CYScreen,再根据实际情况,设置一个网格距离值Interval,将CXScreen、CYScreen均除以Interval,得到横向和纵向的循环判断的次数,分别记为CXNum、CYNum。

步骤二,初始化一个计数变量UseNum=0,然后根据CXNum、CYNum,使用一个二重循环,计算每次循环体内的需要判断的点的坐标Point(n,m)

Point(n,m)=(n×Interval,m×Interval)0≤n≤CXNum,0≤m≤CYNum

当点的坐标计算出来后,调用Windows提供的API函数,获取该点所在的应用程序的标识,然后将该应用程序的标识与预想的应用程序的标识进行比较,若相等,则将计数变量UseNum=UseNum+1。

步骤三,计算坐标Point(n,m)落在指定的应用程序上的比率,若大于阈值U,则认为用户正在使用该应用程序。

各步骤的详细说明如下:

步骤一中,网格距离值Interval用于决定判断的网格点之间的距离,一般设置为10到50像素之间,设置得小则检测精准度越高,设置得大则检测速度越快,根据实际要求,测试后使用一个可接受的值。

步骤二中,通过Windows API中的WindowFromPoint获取指定点所在的窗口句柄,该API的输入参数是一个点的坐标值,输出参数是这个点所在的窗口句柄,然后使用GetWindowThreadProcessId获取这个窗口句柄所在的进程ID,将该应用程序的进程ID与需要判断的应用程序的进程ID进行比较,从而得到该点是否属于需要判断的应用程序。

步骤三中,落在指定的应用程序上的比率Ratio的计算公式如下:

<mrow> <mi>R</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mo>=</mo> <mfrac> <mrow> <mi>U</mi> <mi>s</mi> <mi>e</mi> <mi>N</mi> <mi>u</mi> <mi>m</mi> </mrow> <mrow> <mi>C</mi> <mi>X</mi> <mi>N</mi> <mi>u</mi> <mi>m</mi> <mo>&times;</mo> <mi>C</mi> <mi>Y</mi> <mi>N</mi> <mi>u</mi> <mi>m</mi> </mrow> </mfrac> </mrow>

计算得到的Ratio的值域为[0,1],一般当Ratio处于[0.85,1]时,认为学生正在使用应用程序,因为用户屏幕上一般还有任务栏等空间是被系统所占用的,这些面积需要排除在外。

实施例:

如图1所示,用于判断PC机是否在使用无限宝(蓝色标题栏和边框的程序)。具体如下:目前屏幕分辨率为1440*900,网格距离值Interval设为200,则屏幕被分割为纵向5个点,横向8个点,共40个点图上红线的交叉点即这40个点,其中用蓝色五角星标明的点被判断为属于无限宝应用程序,共计18个,占比为18/40=45%,小于85%的阈值,所以判定为未在认真使用无限宝程序。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1