视窗显示的方法技术

技术编号:4178081 阅读:244 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种视窗显示的方法。该方法包括在用于开启视窗的API上挂上API挂钩,该API挂钩用于指定视窗的显示位置为输入桌面;运行挂上API挂钩的API以开启视窗。通过本发明专利技术可以保证视窗开在正确的桌面上,尤其是可以克服Windows Vista Service Pack1操作系统环境下,采用虚拟桌面时视窗一律开在默认桌面的问题。

【技术实现步骤摘要】

本专利技术涉及操作系统中,尤其是一种更改视窗显示桌面 的方法。
技术介绍
计算机技术与应用进展快速,已经涵盖了人们生活的各个方面。为了 适应每个人不同的需求,个人计算机内都设置有自己的系统配置、惯用程 序和文档。为了要随时在自己熟悉的系统配置中,使用惯用的程序,处理 自己的文档,许多使用者会随身携带自己的笔记本计算机。但由于重量和 体积,即使是笔记本计算机,依然是携带上的一大负担。最好的方式是能将文件、系统配置、程序打包,放在外部存储装置中(例如u盘、或外接 式硬盘、甚至服务器),只要携带此外部存储装置,接上学校、网吧、公 司、家里或其它地方的任何计算机,即可将熟悉的一切重现。此种技术即 为虚拟环境技术。虛拟环境是一个特殊的程序,在计算机的操作系统上执 行。利用虛拟环境,使用者可以动态地将计算机的操作系统调整成使用者 熟悉的文件、系统配置、惯用程序,以方便使用。专利技术人在实现本专利技术的过程中发现现有技术至少存在如下问题当使 用者采用的操作系统是Windows Vista Service Packl ,使用者利用现有虛 拟环境技术创建虛拟桌面后,当使用者试图打开虚拟桌面上的视窗时,该 视窗会出现在默认的本地桌面上,而不是其应该出现的输入桌面(目前显 示的桌面)。例如,使用者默认的本地桌面为default,利用虚拟环境技术 创建的虚拟桌面为boxl,当使用者点击虚拟桌面boxl上的"我的电脑" 时,该对应于"我的电脑"的视窗会出现在默认的桌面default上,而不是出现在其本应该出现的虚拟桌面boxl上,造成虚拟桌面上看不到自己所 建立的视窗。专利技术内容本专利技术的目的是解决视窗出现的桌面不正确的问题,实现视窗显示在正 确的桌面。为实现上述目的,本专利技术提供了一种,包括 在用于开启视窗的API上挂上API挂钩,该API挂钩用于指定视窗的显 示位置为输入桌面;运行挂上API挂钩的API以开启4a窗。其中,可以通过双击输入桌面上的资源管理器图标或从"开始"菜单中 选取资源管理器启动输入桌面的资源管理器。这种情况下,所述在用于开启视窗的API上挂上API挂钩包括在输入 桌面的资源管理器程序的创建线程API上挂上API挂钩,该API挂钩进一步 调用改变桌面属性的API,将桌面属性设定为输入桌面。或者,可以通过热^t或者命令列的方式启动输入桌面的资源管理器。这种情况下,所述在用于开启视窗的API上挂上API挂钩包括在默认 桌面的资源管理器的创建进程API挂上API挂钩,该API挂钩进一步调用输 入桌面的同名API。由上述技术方案可知,本专利技术通过在开启资源管理器视窗的相关API上 挂上挂钩,具有以下有益效果保证资源管理器视窗开在正确的桌面上。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明图1为本专利技术实施例一的流程图; 图2为本专利技术实施例二的流程图;图3为本专利技术实施例三的流程图。 具体实施例方式为了更好地理解本专利技术,首先简要描述本专利技术所涉及的术语。桌面(desktop):梯:作系统的画面,称为桌面。 一个操作系统可以同时 有多个桌面,但一次只显示一个桌面。每个桌面有一个辨识用的名称,默认 的桌面名称为"Default"。输入桌面(InputDesktop):即使启用多个桌面,但一次只能显示一个桌 面。显示中的桌面称为输入桌面。由于现有技术中不论在虛拟桌面还是默认 桌面打开视窗,视窗均会显示在默认桌面中。因此,对于在虚拟桌面打开视 窗却出现在默认桌面这种显示是有问题的,本专利技术也正是主要解决该问题, 所以,本专利技术实施例中无特殊说明,所指的输入桌面为虚拟桌面,由于可能 存在多个虛拟桌面,以一个虛拟桌面为例,以boxl为例。资源管理器即explorer.exe程序。此程序负责显现及管理桌面相关的程 序,没有运行此程序,桌面将是一片荒芜,用户完全无法操作桌面。应用编程接口 ( Application Programming Interface, API):供应用程序调用 的函数。本专利技术中涉及的API包括用于建立任何进程的ShellExecuteEx函数, 用于建立远端线程的CreateRemoteThread函数,用于建立本地线程的 CreateThread函数,用于更改桌面属性(Desktop )的SetThreadDesktop函数, 其中,桌面属性(Desktop)即为显示的桌面,如是在默认桌面(default)显 示,还是在虚拟桌面(如boxl)显示。API桂钩(API Hook):以拦截的手法,在运行的程序内插入自定义程 序,以改变作用。进程(Process):运行中的程序, 一个进程至少有一个线程。线程(Thread):线程是程序的运行单位。任何程序执行时,都是由一 个主线程开始,然后视需要增加线程。当一个程序的线程个数为0时,程序结束。图1为本专利技术实施例一的流程图,包括 步骤ll:在用于开启视窗的API上挂上API挂钩,该API挂钩用于指定 视窗的显示位置为输入桌面。其中,使用者可以通过双击输入桌面上的 explorer.exe图标或从"开始,,菜单中选取explorer.exe以启动explorer.exe进 程(具体对应于下面的实施例二),这种情况下,用于开启视窗的API为 CreateThread函数;或者,使用者可以通过输入桌面上的热键"win键+E键,, 的方式或利用命令列的方式启动explorer.exe进程(具体对应于下面的实施例 三),这种情况下,用于开启^L窗的API为ShellExecuteEx函数。 步骤12:运行挂上API挂钩的API以开启视窗。本实施例通过设置API挂钩,在挂钩程序中指定^L窗的显示位置为输入 桌面,使视窗可以显示在输入桌面上,从而避免现有技术中资源管理器视窗 一律显示在默认桌面的问题。图2为本专利技术实施例二的流程图,包括 步骤21:在输入桌面(Boxl)上,使用者通过双击explorer.exe图标或 从"开始"菜单中选取explorer.exe程序。在虛拟桌面boxl上,当通过双击 explorer.exe图标或从"开始"菜单中选取explorer.exe程序时,不会开启进程, 只调用CreateThread函数开启一个线程。现有技术存在的问题是虽然该线 程的位置在boxl,但是此线程开出来的视窗却是在default桌面。因此,本实 施例需要对该CreateThread函数进行处理,以便使视窗开在正确的位置。 步骤22:调用该CreateThread函数,以开启输入桌面的i见窗。 步骤23:在该CreateThread函数挂上API桂钩,该API桂钩会调用 SetThreadDesktop函数,通过该SetThreadDesktop函数设定该用于开启视窗的 线程的桌面属性(Desktop)为输入桌面(Boxl)。通过设置桌面属性,可以 保证视窗开在正确的位置上,如在输入桌面上开启视窗,该视窗将正确地出 现在输入桌面上。步骤24:运行挂上SetThreadDesktop函数的CreateThread函数,开启视 窗。由于SetThreadDesktop函数已将桌面属性设置为输入桌面,因此该视窗 将会出现在输入桌面上。本实施例给出了通过双击explo本文档来自技高网...

【技术保护点】
一种视窗显示的方法,其特征在于,包括: 在用于开启视窗的API上挂上API挂钩,该API挂钩用于指定视窗的显示位置为输入桌面; 运行挂上API挂钩的API以开启视窗。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢威领
申请(专利权)人:优诺威讯国际有限公司
类型:发明
国别省市:HK[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1