日历显示方法及装置与流程

文档序号:12718691阅读:334来源:国知局
日历显示方法及装置与流程

本发明涉及终端技术领域,特别是涉及一种日历显示方法及装置。



背景技术:

随着国家法定节假日的调整,人们对于假期、补班、节日等时间日期相关信息越来越关注。同时在日常生活中,繁忙的工作和人际交往,导致人们很难去记全所有事情,尤其是生日、聚会。此时终端设备中的日历应用程序就可以发挥它的作用了。例如,用户可以在日历中设置时间提醒,在设定的时间到来时,日历可以展示提示信息,以提醒用户有待办事项。

在安装有Windows系统的终端设备中,Windows系统自带了一个日历应用程序,能够在终端设备的右下角的日历窗口显示日历界面,但是它所提供的功能有限。因此,可以在终端设备上安装其它日历应用程序,提供更加丰富的功能。

终端设备上安装的日历应用程序可以将自身的日历界面显示在终端设备上。但是,当在终端设备上安装多个日历应用程序时,在终端设备上显示的日历界面可能会在多个日历界面之间进行切换,用户体验较差。



技术实现要素:

本发明实施例的目的在于提供一种日历显示方法及装置,以在终端设备中显示稳定的日历界面,提升用户体验。具体技术方案如下:

第一方面,本发明实施例提供了一种日历显示方法,应用于终端设备上的日历应用程序,所述方法包括:

当检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄;

如果是,生成调用所述拦截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的 消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

可选的,所述日历应用程序通过挂钩的方式检测所述拦截函数的调用请求。

可选的,所述日历应用程序安装到所述终端设备上后,所述方法还包括:

生成调用所述拦截函数的第三调用请求,其中生成的所述拦截函数的第三调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述操作系统根据调用所述拦截函数的第三调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

可选的,所述日历窗口的句柄为:TrayClockWClass。

可选的,所述拦截函数为:SetWindowLongPtr函数。

第二方面,本发明实施例还提供了一种日历显示装置,应用于终端设备上的日历应用程序,所述装置包括:

判断模块,用于检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄;

执行模块,用于当所述判断模块判断结果为是时,生成调用所述拦截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

可选的,所述日历应用程序通过挂钩的方式检测所述拦截函数的调用请求。

可选的,所述装置还包括:

处理模块,用于所述日历应用程序安装到所述终端设备上后,生成调用所述拦截函数的第三调用请求,其中生成的所述拦截函数的第三调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述操作系统根据调用所述拦截函数的第三调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

可选的,所述日历窗口的句柄为:TrayClockWClass。

可选的,所述拦截函数为:SetWindowLongPtr函数。

本发明实施例提供的日历显示方法及装置,应用于终端设备上的日历应用程序,所述方法包括:当检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄;如果是,生成调用所述拦截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。本实施例中,当第一日历应用程序检测到其它应用程序调用拦截函数的第一调用请求,并且该第一调用请求中传递的窗口句柄为日历窗口的句柄时,表明其它日历应用程序想要在日历窗口显示其日历界面,第一日历应用程序可以生成调用拦截函数的第二调用请求,以使终端设备的操作系统采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,在日历窗口显示第一日历应用程序对应的日历界面,因此,保证了第一日历应用程序的日历界面一直显示在日历窗口,能够在终端设备中显示稳定的日历界面,提升用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据本发明提供的日历显示方法的一个实施例的示意性流程图;

图2示出了根据本发明提供的日历显示方法的另一个实施例的示意性流程图;

图3示出了根据本发明提供的日历显示装置的一个实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

在安装有Windows系统的终端设备中,Windows系统自带了一个日历应用程序,能够在终端设备的右下角的日历窗口显示日历界面,但是Windows系统自带的日历应用程序所提供的功能有限,例如,用户仅可以查看公历,而不能查看公农历对应;用户还可以在日历中设置时间提醒,在设定的时间到来时,日历可以显示提示信息,以提醒用户有待办事项,而不能提示具体的待办事项的内容。这些不能够满足用户的需求,用户希望日历应用程序可以提供更丰富的功能,如,提供待办事项的内容、公农历对应、天气预报、节假日气候查询、放假安排查询等生活功能,更能提供买飞机票、秒抢火车票等功能。

因此,可以在终端设备上安装其它日历应用程序,为用户提供更加丰富的功能。在终端设备上安装日历应用程序后,终端设备上安装的日历应用程序可以将自身的日历界面显示在终端设备上。

在Windows的窗口实现中,所有的窗口绘制都是通过接收WM_PAINT消息,并调用相应的消息响应函数来实现的。所以,安装于终端设备上的日历应用程序要想能够绘制自身的日历界面,将自身的日历界面显示在终端设备上,就必须要拦截WM_PAINT消息。Windows系统正好提供了这样一个拦截函数SetWindowLongPtr。

因此,安装于终端设备上的任一日历应用程序可以生成调用这个拦截函数的调用请求,以使终端设备的操作系统将该日历应用程序的消息响应函数放置在函数调用链的顶端,并且拦截到所有的窗口消息后,可以采用该日历应用程序的消息响应函数单独对WM_PAINT消息进行处理,用以绘制自身的日历界面,在日历窗口中显示自身的日历界面。

当终端设备中安装有多个日历应用程序时,针对每个日历应用程序,都可以生成调用拦截函数的调用请求,将自身的消息响应函数放置在函数调用链的顶端,并将自身的日历界面显示在日历窗口。因此,在函数调用链的顶端放置 的消息响应函数会不断的变化,在日历窗口显示的日历界面也可能会不稳定。

因此,本发明实施例提供了一种日历显示方法,当第一日历应用程序检测到其它应用程序调用拦截函数的第一调用请求,并且该第一调用请求中传递的窗口句柄为日历窗口的句柄时,表明其它日历应用程序想要在日历窗口显示其日历界面,第一日历应用程序可以生成调用拦截函数的第二调用请求,以使终端设备的操作系统采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,在日历窗口显示第一日历应用程序对应的日历界面,因此,保证了第一日历应用程序的日历界面一直显示在日历窗口,能够在终端设备中显示稳定的日历界面,提升用户体验。

请参考图1,其示出了根据本发明提供的日历显示方法的一个实施例的示意性流程图。

如图1所示,本实施例提供的日历显示方法,应用于终端设备上的日历应用程序,可以包括如下步骤:

步骤101,当检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄。

在本实施例中,安装在终端设备上的第一日历应用程序可以将自身的日历界面显示在日历窗口。并且,可以将自身的日历界面一直显示在日历窗口,而其它日历应用程序的日历界面不会在终端设备的日历窗口显示。

若其它日历应用程序想要将自身的日历界面显示在日历窗口,则需要生成调用拦截函数的调用请求。因此,安装于终端设备上的第一日历应用程序可以检测是否存在其它应用程序调用拦截函数的第一调用请求。其中,上述拦截函数可以为:SetWindowLongPtr函数。

例如,第一日历应用程序可以通过挂钩的方式检测是否存在其它应用程序调用拦截函数的第一调用请求。具体地,可以借助于第三方类库Detours,这个类库的作用是对函数调用进行挂钩,将原有的函数调用替换为改写后的函数实现。利用它,可以将拦截函数实现进行改写,当其它应用程序调用拦截函数时,第一日历应用程序便会检测到。

当第一日历应用程序检测到其它应用程序调用拦截函数的第一调用请求 时,可以进一步判断调用拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄。

在终端设备中,不同的应用程序生成相应的调用拦截函数的调用请求,可以在终端设备中绘制不同的窗口,如,word窗口、输入法窗口等。因此,第一日历应用程序检测到其它应用程序调用拦截函数的第一调用请求时,不能仅根据该第一调用请求确定将要在终端设备中绘制的窗口类型。

每一个应用程序在生成调用拦截函数的调用请求时,都可以在调用拦截函数的调用请求中传递对应的窗口句柄,以在终端设备中绘制对应的窗口。因此,为了确定检测到的拦截函数的第一调用请求对应绘制的窗口类型,第一日历应用程序可以进一步判断拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄。

当拦截函数的第一调用请求中传递的窗口句柄不是日历窗口的句柄时,该拦截函数的第一调用请求对应绘制的窗口类型不是日历窗口,则第一应用程序可以不进行后续操作。其它应用程序可以继续调用拦截函数,执行相应的操作。

可选地,在Windows系统中,日历窗口的句柄为:TrayClockWClass。

步骤102,生成调用所述拦截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

当第一日历应用程序确定拦截函数的第一调用请求中传递的窗口句柄为日历窗口的句柄时,表明其它日历应用程序想要在日历窗口显示其日历界面。这种情况下,第一日历应用程序可以生成调用拦截函数的第二调用请求,其中生成的拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得终端设备的操作系统可以根据调用拦截函数的第二调用请求,采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示第一日历应用程序对应的日历界面。

具体地,当第一日历应用程序确定拦截函数的第一调用请求中传递的窗口句柄为日历窗口的句柄时,操作系统会采用其它日历应用程序的消息响应函数 对接收到的窗口消息进行处理,在日历窗口显示其它日历应用程序对应的日历界面。而第一日历应用程序会生成调用拦截函数的第二调用请求,在调用拦截函数的调用请求中传递的窗口句柄为日历窗口的句柄,以使得操作系统根据调用拦截函数的第二调用请求,采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,在日历窗口显示第一日历应用程序对应的日历界面。因此,第一日历应用程序通过生成调用拦截函数的第二调用请求,可以将自身对应的日历界面显示在日历窗口。由于第一应用程序对应的日历界面可以及时显示,因此,在用户看来一直显示的是第一应用程序的日历界面。

本实施例提供的日历显示方法,应用于终端设备上的日历应用程序,所述方法包括:当检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄;如果是,生成调用所述拦截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。本实施例中,当第一日历应用程序检测到其它应用程序调用拦截函数的第一调用请求,并且该第一调用请求中传递的窗口句柄为日历窗口的句柄时,表明其它日历应用程序想要在日历窗口显示其日历界面,第一日历应用程序可以生成调用拦截函数的第二调用请求,以使终端设备的操作系统采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,在日历窗口显示第一日历应用程序对应的日历界面,因此,保证了第一日历应用程序的日历界面一直显示在日历窗口,能够在终端设备中显示稳定的日历界面,提升用户体验。

请参考图2,其示出了根据本发明提供的日历显示方法的另一个实施例的示意性流程图。

如图2所示,本实施例提供的日历显示方法,应用于终端设备上的日历应用程序,可以包括如下步骤:

步骤201,所述日历应用程序安装到所述终端设备上后,生成调用所述拦截函数的第三调用请求,其中生成的所述拦截函数的第三调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述操作系统根据调用所述拦截函数的第三调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理, 以在日历窗口显示所述日历应用程序对应的日历界面。

在本实施例中,当第一日历应用程序安装到终端设备上后,可以生成调用拦截函数的第三调用请求,其中生成的拦截函数的第三调用请求中传递的窗口句柄为日历窗口的句柄,以使得终端设备的操作系统根据调用拦截函数的第三调用请求,采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,在日历窗口显示第一日历应用程序对应的日历界面。因此,能够保证第一日历应用程序安装到终端设备上后,即可以在终端设备中显示自身的日历界面。

步骤202,当检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄。

步骤203,生成调用所述拦截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

上述步骤202-203与图1所示实施例中的步骤101-102基本相同,在此不再赘述。

本实施例提供的方法,能够保证第一日历应用程序安装到终端设备上后,即可以在终端设备中显示自身的日历界面。并且,第一日历应用程序的日历界面可以一直显示在日历窗口,能够在终端设备中显示稳定的日历界面,提升用户体验。

请参考图3,其示出了根据本发明提供的日历显示装置的一个实施例的结构示意图。

如图3所示,本实施例提供的日历显示装置,应用于终端设备上的日历应用程序,所述装置可以包括:

判断模块310,用于检测到其它应用程序调用拦截函数的第一调用请求时,判断调用所述拦截函数的第一调用请求中传递的窗口句柄是否为日历窗口的句柄;

执行模块320,用于当所述判断模块310判断结果为是时,生成调用所述拦 截函数的第二调用请求,其中生成的所述拦截函数的第二调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述终端设备的操作系统根据调用所述拦截函数的第二调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

进一步地,所述日历应用程序通过挂钩的方式检测所述拦截函数的调用请求。

进一步地,所述日历窗口的句柄为:TrayClockWClass。

进一步地,所述拦截函数为:SetWindowLongPtr函数。

在本实施例的一个可选实现方式中,所述装置还可以包括:

处理模块330,用于所述日历应用程序安装到所述终端设备上后,生成调用所述拦截函数的第三调用请求,其中生成的所述拦截函数的第三调用请求中传递的窗口句柄为日历窗口的句柄,以使得所述操作系统根据调用所述拦截函数的第三调用请求,采用所述日历应用程序的消息响应函数对接收的窗口消息进行处理,以在日历窗口显示所述日历应用程序对应的日历界面。

本实施例提供的日历显示装置,当检测到其它应用程序调用拦截函数的第一调用请求,并且该第一调用请求中传递的窗口句柄为日历窗口的句柄时,表明其它日历应用程序想要在日历窗口显示其日历界面,第一日历应用程序可以生成调用拦截函数的第二调用请求,以使终端设备的操作系统采用第一日历应用程序的消息响应函数对接收的窗口消息进行处理,在日历窗口显示第一日历应用程序对应的日历界面,因此,保证了第一日历应用程序的日历界面一直显示在日历窗口,能够在终端设备中显示稳定的日历界面,提升用户体验。

本实施例提供的装置,能够保证第一日历应用程序安装到终端设备上后,即可以在终端设备中显示自身的日历界面。并且,第一日历应用程序的日历界面可以一直显示在日历窗口,能够在终端设备中显示稳定的日历界面,提升用户体验。

对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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