专利名称:一种使视窗类操作系统拥有多个激活窗口的方法
技术领域:
本发明涉及一种拓展以视窗为基础的操作系统的方法。
以视窗为基础的操作系统指Microsoft Windows系列操作系统、Apple Mac OS系列操作系统、Linux、Unix上运行的X Windows系列操作系统等以视窗作为人机交互基础的、运行于各种硬件平台上的图形操作系统,以下将其简称为视窗系统。
被拓展后的视窗系统将可以同时拥有一个以上激活的窗口。
背景技术:
现存的视窗系统的一份拷贝,在完成初始化、正常运行时,同一个桌面(包括虚拟桌面)上,同一时刻最多只能拥有一个激活的窗口。
现存的视窗系统中,只有激活的窗口才能通过正常的渠道取得鼠标、键盘等人机交互设备的输入信息。
现存视窗系统的上述两个特性表明即使视窗系统运行的硬件平台连接有多个的人机交互设备(例如同时拥有鼠标和键盘,或者拥有多个的鼠标、键盘),同一时刻也只能操作不超过一个普通的(通过正常渠道获取人机交互设备输入信息的)程序(以下简称普通程序);而不能分别利用不同的人机交互设备,在同一时刻分别操作多个的普通程序。
随着USB的广泛应用,同一台计算机拥有多个的鼠标、键盘变得很常见,现存视窗系统只能同时操作一个普通程序的局限性更加突出地体现出来。
发明内容
为了克服现存视窗系统的局限性,本发明提供一种方法,可以拓展现存的视窗系统,使之可以在完成初始化、正常运行时,同一个桌面(包括虚拟桌面)上,同一时刻可以拥有多个激活的窗口。
这种方法使得视窗系统的用户可以用多个的人机交互设备在同一时刻互不干扰地分别操作多个的普通程序。例如,在使用鼠标用画图程序画图的同时,使用键盘往记事本程序输入文字;或使用两个鼠标分别在两个画图程序里画图。
本发明的解决方案为1.将所有连接至窗口系统所运行的硬件平台的人机交互设备分组,每组至少包括一个人机交互设备;2.每组人机交互设备拥有最多一个窗口,被拥有的窗口将成为被激活的窗口,则同一个桌面上,同一时刻作多可以拥有激活的窗口数量为人机交互设备分组的数量;3.每组人机交互设备可以放弃其已经拥有的窗口,被放弃窗口将变为不激活的窗口;4.每组人机交互设备可以拥有其他不激活的窗口,当拥有新的窗口时,当前拥有的窗口将被放弃;上述解决方案以下简称激活窗口方案。
本发明的有益效果是视窗系统的用户可以用多个的人机交互设备在同一时刻互不干扰地分别操作多个的普通程序。从而增加了用户操作的灵活性。
下面结合附图和实施例对本发明进一步说明。
附图和实施例中都以微软视窗系列操作系统为例进行说明,但本发明并不仅限于微软视窗系列操作系统。
图1是窗口接收到的消息之间和在激活和未激活两种状态转换的关系图2是过滤层对窗口接受消息进行控制的四种情况图3是过滤层的一个实施例的流程中1.未激活的窗口,2.激活的窗口,3.添加了过滤层的窗口,4.与激活相关的消息,在微软视窗中为WM_ACTIVATE、WM_ACTIVATEAPP、WM_MOUSEACTIVATE、WM_NCACTIVATE、WM_SETFOCUS等,5.过滤层,6.直接通过的消息,7.被过滤掉的消息,8.过滤层构造的消息,9.被篡改的消息在图1中,无论是未激活的窗口(1)还是激活的窗口(2),只要接受到与激活相关的消息(4),当消息的参数为激活时,就会转化为激活的窗口或保持激活状态;当消息的参数为反激活时,就会转化为未激活的窗口或保持未激活状态。
在图2中,由于添加了过滤层(5)的窗口(3)不能像正常情况那样接受来自外部的消息,所以它受到的消息的途径分为四种情况1、消息(6)被过滤层(5)允许直接通过;2、消息(7)被过滤层过滤掉,窗口(3)完全不知道外部曾经发送过这样一条消息给它;3、过滤层根据需要构造了一条消息(8)发送到窗口(3);4、外部发送的消息经过过滤层(5)篡改后发送到窗口(3)。根据上述四种情况可见,窗口(3)的消息接收完全被过滤层(5)所控制。由于在现存的窗口系统中,窗口的激活与否完全依赖于接收的消息,所以过滤层(5)可以完全控制消息的激活与否。
具体实施例方式
由于现存视窗系统都是利用消息来传递信息的,如图1,当需要激活一个窗口时,系统能、且只能根据情况传递相关的并具有恰当参数的消息(4)到将要被激活窗口,而需要使一个窗口失去激活状态(以下简称反激活)时,同样能、且只能根据情况传递相关的并具有恰当参数的消息(4)到将要被反激活的窗口,真正的激活和反激活是由窗口自己处理的。
具体的实施方式分为两种情况1、在现有的视窗系统上改进;2、在新版本的视窗系统中实现。
在现有的视窗系统上改进的方法如下如图2,在所有的窗口外部构造一个过滤层(5),便可以完全控制过滤层(5)内部窗口的激活与否,而过滤层则按照激活窗口方案进行对消息进行处理。
构造过滤层在微软视窗系列操作系统中的一个实施例为1、在微软视窗系列操作系统中,构造一个消息过滤函数于动态链接库中,过滤的规则依据激活窗口方案。过滤函数通过直接返回来过滤掉一个消息,通过传递自己得到的参数到原来的消息处理函数来传递一个消息,通过传递修改过的参数到原来的消息处理函数来篡改一个消息,通过构造一个新的消息结构并以此调用原来的消息处理函数来构造一个新的消息;2、通过全局钩子将此动态链接库注入到要过滤的窗口进程中;3、用SetWindowLong函数将窗口原来的消息处理函数替换为消息过滤函数,并保存原来的消息处理函数入口以便消息过滤函数调用。
在新版本的视窗系统中实现的方法如下
激活一个窗口时先判断引发激活的人机交互设备分组,1、当该分组尚未拥有激活的窗口时,仅仅向目标窗口发送相关的附带激活参数的消息;2、当该分组已经拥有激活的窗口时,在向目标窗口发送相关的附带激活参数的消息的同时,还向原来拥有的激活的窗口发送相关的附带反激活参数的消息。
权利要求
1.一种使视窗类操作系统拥有多个激活的窗口的方法,其特征是,通过控制或者过滤、构造、篡改发送到窗口的消息来达到拥有多个激活的窗口的目的。
2.一种使视窗类操作系统拥有多个激活的窗口的方法,其特征是,通过对人机交互设备分组来实现对多个激活的窗口的互不干扰的控制;一个分组的人机交互设备只能拥有(操作)最多一个激活的窗口;一个桌面(包括虚拟桌面)上只能拥有不超过人机交互设备分组数量的激活的窗口。
全文摘要
一种使视窗类操作系统拥有多个激活窗口的方法。本发明是一种拓展以视窗为基础的操作系统的功能的方法。本方法解决了在完成初始化、正常运行时,同一个桌面(包括虚拟桌面)上,同一时刻不能拥有多个激活的窗口的问题。解决问题的主要途径为对发往窗口的消息的控制。这种方法使得视窗系统的用户用多个的人机交互设备在同一时刻互不干扰地分别操作多个的普通程序成为可能。例如,在使用鼠标用画图程序画图的同时,使用键盘往记事本程序输入文字;或使用两个鼠标同时分别在两个画图程序里画图。
文档编号G06F9/44GK1848078SQ20051004621
公开日2006年10月18日 申请日期2005年4月11日 优先权日2005年4月11日
发明者田园 申请人:田园