全屏图形模式下的即时通讯方法和装置的制作方法

文档序号:7649718阅读:105来源:国知局
专利名称:全屏图形模式下的即时通讯方法和装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及在全屏图形^^式下的即时通讯方 法和装置。
背景技术
目前,很多软件在运行时都采用全屏图形模式,例如很多游戏软 件,特别是一些在线游戏,游戏用户需要在全屏模式下进行操作,在 全屏才莫式下,进程由游戏主程序控制。即时消息(Instant Messaging, IM)是一种即时通讯软件,为用 户提供了一种方便快捷的通过Internet与其他网上用户交流的方式, 通过该软件,不同在线网络用户之间可以进行在线交谈、互传文件、 语音对话及进行视频会议,甚至用手机通过网络双向交流。在现有技术中,要在全屏图形技术下使用即时通讯软件,当一条 即时消息发送到用户终端时,弹出的IM窗口通常会导致显示模式从 全屏模式切换到普通窗口模式,从而需要用户手工重新返回游戏,而 一旦返回全屏游戏模式后又无法看到该IM窗口 ;当要从该用户终端 向其他用户发送一条即时消息时,如果该用户正在进行游戏操作,则 需要将显示模式手动切换至窗口模式,再进行即时消息的发送,从而 影响游戏软件的运行。现在的即时消息软件提供商所提供的即时通讯软件,如QQ、 MSN 等等,在使用其IM时都会影响全屏图形模式游戏的运行。发明内容针对传统技术中不能在全屏图形模式下运行即时通讯软件的缺 点,本发明提供了 一种不影响全屏图形模式程序运行的即时通讯方法 和通讯装置。本发明提供的全屏图形模式下的即时通讯方法包括a. 将即时通讯才莫块注入远程进程;b. 检测所述远程进程的界面属性,当所述界面属性为全屏模式 时,执行步骤c;c. 接管系统应用程序接口模块;d. 接管远程进程的显示接口模块;e. 运行即时通讯模块。 优选地,步骤a包括all.将即时通讯模块放入动态链接库中;a12.用钩子模块将所述动态链接库映射到远程进程。优选地,步骤a包括a21.将即时通讯模块放入动态链接库中;a22.用CreateRemoteThread函凄t和LoadLibrary函数将所述动态 链接库映射到远程进程。 优选地,步骤a包括a31.用WriteProcessMemory函数将即时通讯模块复制到远程进程;a32.用CreateRemoteThread函数执行所述即时通讯才莫块。 优选地,步骤e包括通过overlay方式显示即时通讯窗口。 优选地,步骤e包括通过弹出窗口方式显示即时通讯窗口。 优选地,步骤e包括协调多个即时通讯窗口,其中即时通讯才莫 块接收到各即时通讯窗口发来的消息,在进行相应处理后将请求、结 果等再发送消息给相应的即时通讯窗口 。优选地,在步骤e,所述即时通讯模块是系统内核的驱动模块。 本发明还提供了一种全屏图形模式下的即时通讯装置,包括 注入单元,用于将通讯^^莫块注入远程进程; 检测单元,用于检测所述远程进程的界面属性; 系统接口控制单元,用于接管系统应用程序接口模块; 显示接口控制单元,用于接管远程进程的显示接口模块。 执行单元,用于运行即时通讯模块。优选地,所述注入单元包括钩子模块,所述钩子模块用于将所述 动态链接库映射到远程进程。优选地,所述执行单元包括显示模块。优选地,所述显示模块是OverLay显示模块或弹出窗口显示模块。 利用本发明提供的通讯方法和通讯装置,可以在全屏幕显示(例 如全屏游戏)状态下实现DirectX、 OpenGL等多种全屏图形技术下进 行IM窗口的显示,而且IM各项功能的实现并不影响全屏程序的运 行。优选地,所述执行单元包括协调^t块,所述协调^t块用于接收其 他即时通讯窗口发来的消息,在进行相应处理后将请求、结果等再发 送消息给相应的即时通ifl窗口 。优选地,所述即时通讯模块是系统内核的驱动模块。


图l是本发明的即时通讯方法流程图;图2是根据本发明实施例的即时通讯装置示意图。
具体实施方式
图1是本发明的即时通讯方法流程图,如图所示,在步骤101, 首先将即时通讯^^块注入远程进程。所述即时通讯才莫块可以是任何用 于即时通讯的软件,例如常用的MSN、 QQ等等。由于在进行即时通讯时,调用API来建立、显示对话框必须要在 该远程进程的内部进行,而即时通讯模块(即IM程序)通常在游戏 进程的外部运行,因此,如果不将即时通讯模块注入到远程进程中, 则各种建立、设置游戏窗口的子窗口的函数会引起远程进程产生"非 法操作"的响应或不产生任何响应。在本发明的实施例中,注入即时 通讯模块的方法包括三种,分别是1、将即时通讯模块的代码写入动态链接库(DDL)中,通过 Windows挂钩(例如SetWindowHookEx函数)将DLL映射到远程进程。2、 将即时通讯才莫块写入动态链接库中,4吏用CreateRemoteThread 和LoadLibrary技术将DLL映射到远程进程。3、 使用WriteProcessMemory直接将即时通讯模块代码复制到远 程进程,并用CreateRemoteThread启动即时通讯才莫块。其中,IM主程序和注入全屏的远程中程序要保持通讯,并且对 通信进行协调。例如,根据当前的实际运行情况,IM主程序将各消 息分发到相关的窗口程序进行处理。同样地,IM主程序IM窗口和注 入全屏游戏中IM窗口之间也需要保持通讯和协调。IM除了具有在非全屏下的IM窗口外,在注入全屏界面的程序后 都会启动一个独立的IM窗口,在各IM窗口下,用户的动作请求可 以通过windows的消息机制发送到IM主控程序,或者直接调用IM 驱动程序的功能。以用户的动作请求通过windows的消息机制发送到IM主控程序 为例,IM主控程序接收到各IM窗口发来的消息后,根据具体情况进 行相应的处理,例如,緩存、优先权队列等等。在进行上述处理后, 主控程序将请求、结果等再发送消息给相应的IM窗口处理,例如显一《在步骤102,检测所述远程进程的界面属性。在步骤103,判断 检测到的界面属性是否为全屏显示状态。如果所述界面属性是全屏模 式,则要根据游戏的界面特性确定IM窗口的显示方式和实现技术, 并且要判断系统已使用的通信端口情况,以防止数据沖突。如果是在 全屏模式下运行的程序需要进行特殊处理。具体地,如果所述界面属性是全屏模式,在步骤104,接管系统 的API,实现IM窗口的自画显示和防止游戏反外挂措施对IM的误判。 主要接管系统级和DirectX、 OpenGL等图形API。如果所述界面属性不是全屏模式,则执行即时通讯模块不需要附 加特殊的处理,即在步骤107,可以直接执行即时通讯模块,窗口在 远程进程的显示窗口和即时通讯窗口之间切换。在接管系统接口模块后,在步骤105,还要接管远程进程的显示 接口模块。子类化游戏的主窗口,可以实现防止对游戏造成影响、防 止游戏反外桂措施对IM的误判。IM通过4妄管系统API和directx的API实现在各种游戏中IM窗口的显示,同时防止游戏自动关闭IM窗口。主要接管的API有系 统中的API,例如KERNEL32中的API LoadLibraryA, LoadLibraryW, LoadLibraryExA, LoadLibraryExW, GetProcAddress 。 还需要接管 DirectX API , 包括 DirectDrawCreate, DirectDrawCreateEx, Direct3DCreate8, Direct3DCreate9。在步骤106,运行即时通讯模块。运行即时通讯模块后,相应的 对话窗口就会显示在屏幕上。对于即时通讯窗口的显示方式,需要根 据具体的硬件显示设备和软件占用内存决定。Overlay显示方式需要硬件支持,Overlay显示的内容一般用作桌 面悬浮层,其显示区域是有别于普通内存的显存。显存位于显示装置 中,例如计算机内的显示卡中。在硬件支持、并且现存没有被远程进 程程序(例如游戏)使用的情况下,采用Overlay方式显示即时通讯 (IM)窗口。在Overlay窗口显示方式中,如果在DirectX中,显示的内存区 域PRIMARYSURFACE和OVERLAY —般都在显存。而其它的surface 程序 一般都存放在系统内存中。当然也可以4吏用DSCAPS-VIDE0MEM0RY/DDSCAPS-SYSTEMMEM0RY函 数来指定Surface存放的位置。将IM窗口作为游戏主窗口的子窗口 。 在硬件不支持Overlay,或者已被游戏程序使用等情况下使用弹出游 戏主窗口的子窗口的方式显示IM窗口。优选地,即时通讯模块窗口采用非模态IM窗口。由于模态窗口有自己的消息循环,如果显示为模态窗口,模态窗口自身的循环会影 响游戏的运4亍。优选地,将IM窗口设置为显示在最前面的窗口。可选择地,也可以不将IM窗口设置为最前面的窗口,在这种情况下,只要进行游 戏操作,就会隐藏IM窗口,从而IM窗口不是总可见的。优逸地,设置了在全屏程序中启动IM程序的热键。通过Windows 挂钩,例如SetWindowHookEx函数,突破了部分全屏软件对热键的 屏蔽。优选地,还可以为全屏程序中启动的IM程序设置光标。通过 Windows挂钩,例如SetWindowHookEx函数,突破了部分全屏软件 对光标的隐藏。优选地,为了更可靠的保证不对全屏游戏产生影响,将IM的主 要功能在系统级实现。IM可以将部分主要功能实现为系统内核级的驱动程序。通过IM 客户端主程序控制该驱动程序的安装、运行、停止、监控等。所述驱动程序可以监控游戏进程的创建和结束。所述驱动程序通 过监控游戏进程可以更准确地识别游戏的模式,并根据游戏模式自动 在游戏界面显示IM的窗口 。通过在系统级的驱动程序实现的IM,保证了与服务器的安全通 信。由于是实现在系统级,因此IM不会因为运行在应用层而受到其 他应用程序的干扰导致通信的中断。例如,不论全屏游戏的状态是什 么,IM程序都可以与游戏主程序保持连续的通信,而不会因游戏的 结束中断。同时,通过对网络游戏的封包分析,系统级的IM模块能够正确 判断游戏的当前状态,如游戏服务器、玩家在游戏中的角色、级别等 等,从而根据游戏的状态通知、处理、显示相应的即时通信信息。图2是根据本发明实施例的即时通讯装置示意图。包括注入单 元201、才全测单元202、系统才妄口控制单元203、显示接口控制单元 204和执行单元205。上述单元都可以通过相应的软件模块和通用计 算机中的CPU、存储器、网络接口等相关硬件实现。所述注入单元201用于将通讯模块注入远程进程。所述注入单元 201包括钩子模块,所述钩子模块用于将所述动态链接库映射到远程进程。所谓"钩子"是Windows系统中的异类程序,Windows钩子 的主要作用就是监视某个线程的消息流动。 一般可分为局部钩子和 远程钩于。其中,局部钩子,只监视自己进程中某个线程的消息流动。 远程钩子,又可以分为用于监视别的进程中某个线程的消息的特定 线程钩子;用于监视整个系统中正在运行的所有线程的消息系统级钩 子。如果被挂钩(监视)的线程属于别的进程,钩子过程(hook procedure)必须放在一个动态连接库(DLL)中。系统把这包含了钩 子过程的DLL映射到被挂钩的线程的地址空间。Windows会映射整 个DLL而不仫J又是钩子过程。因此windows钩子可以用来向其他线 禾呈的i也址空间注入4戈石马。检测单元202,用于检测所述远程进程的界面属性。所述远程进 程的进程界面属性各不相同,有些远程进程的界面是全屏显示模式, 有些是非全屏显示模式,例如普通的Windows窗口显示模式。对于非 全屏显示的进程,执行即时通讯时通常不需要增加其他处理,后续处 理直接启动执行单元205,以便运行即时通讯模块即可。对于全屏显 示模式的进程,处理也有所不同,有的可以启动系统接口控制单元203 以全部接管系统接口 ,有的只需要部分地接管系统接口。系统接口控制单元203,用于接管系统应用程序接口模块。实现 IM窗口的自画显示和防止游戏反外挂措施对IM的误判。主要接管系 统级和DirectX、 OpenGL等图形API。显示接口控制单元204,用于接管远程进程的显示接口模块。可 以实现防止对游戏造成影响、防止游戏反外挂措施对IM的误判。执行单元205,用于运行即时通讯模块。在所述执行单元中205, 包括显示模块251。所述显示模块251可以是Overlay显示模块或弹 出窗口显示模块。Overlay显示模块用于以视频覆盖(Overlay)方式 显示即时通讯模块窗口 ;弹出窗口显示模块以弹出窗口的方式显示即 时通讯模块窗口。优选地,所述执行单元还可以包括协调^^莫块,所述协调;f莫块用于接收其他即时通讯窗口发来的消息,在进行相应处理后将请求、结果 等再发送消息给相应的即时通讯窗口 。在本发明的优选实施例中,所述协调模块可以通过IM主控程序 实现,所述可以接收来自多个IM窗口的消息,每个消息表示一个用 户的动作请求。IM主控程序接收到各IM窗口发来的消息后,根据具 体情况对IM消息进行相应的处理,例如,緩存、优先权队列等等。 在进行上述处理后,主控程序将请求、结果等再发送消息给相应的IM 窗口处理,例如显示等。尽管通过上述的优选实例对本发明进行了描述,但是本领域技术 人员应该理解在不脱离本发明精神和范围的情况下,可以对本发明 做出不同的变化和修改。例如,虽然在上述实施例中以游戏为例进行 说明,但本领域技术人员应该理解,在游戏之外的其他全屏显示软件 也都可以适用本发明。
权利要求
1. 一种全屏图形模式下的即时通讯方法,其特征在于,包括a.将即时通讯模块注入远程进程;b.检测所述远程进程的界面属性,当所述界面属性为全屏模式时,执行步骤c;c.接管系统应用程序接口模块;d.接管远程进程的显示接口模块;e.运行即时通讯模块。
2、 根据权利要求1所述的即时通讯方法,其特征在于,步骤a包括 al 1.将即时通讯模块放入动态链接库中;a12.用钩子模块将所述动态链接库映射到远程进程。
3、 根据权利要求1所述的即时通讯方法,其特征在于,步骤a包括 a21.将即时通讯模块放入动态链接库中;a22.用CreateRemoteThread函数和LoadLibrary函凄史将所述动态链 接库映射到远程进程。
4、 根据权利要求1所述的即时通讯方法,其特征在于,步骤a包括 a31.用WriteProcessMemory函数将即时通讯模块复制到远程进程; a32.用CreateRemoteThread函数执行所述即时通讯模块。
5、 根据权利要求1-4中任何一项所述的即时通讯方法,其特征在于, 步骤e包括通过overlay方式显示即时通讯窗口 。
6、 根据权利要求5所述的即时通讯方法,其特征在于,步骤e包括 通过弹出窗口方式显示即时通讯窗口 。
7、 根据权利要求l、 5、 6种任何一项所述的即时通讯方法,其特征 在于,步骤e包括协调多个即时通讯窗口,其中即时通讯模块接收到 各即时通讯窗口发来的消息,在进行相应处理后将请求、结果等再发送 消息给相应的即时通讯窗口 。
8、 根据权利要求1所述的即时通讯方法,其特征在于,在步骤e, 所述即时通讯模块是系统内核的驱动模块。
9、 一种全屏图形模式下的即时通讯装置,其特征在于,包括注入单元,用于将通讯^^莫块注入远程进程; 检测单元,用于检测所述远程进程的界面属性; 系统接口控制羊元,用于接管系统应用程序接口模块; 显示接口控制单元,用于接管远程进程的显示接口模块。执行单元,用于运行即时通讯模块。
10、 根据权利要求9所述的即时通讯装置,其特征在于,所述注入 单元包括钩子模块,所述钩子模块用于将所述动态链接库映射到远程进 程。
11、 根据权利要求9或IO所述的即时通讯装置,其特征在于,所述 执行单元包括显示模块。
12、 根据权利要求11所述的即时通讯装置,其特征在于,所述显示 模块是Overlay显示模块或弹出窗口显示模块。
13、 根据权利要求9所述的即时通讯装置,其特征在于,所述执行 单元包括协调模块,所述协调模块用于接收其他即时通讯窗口发来的消 息,在进行相应处理后将请求、结果等再发送消息给相应的即时通讯窗 o 。
14、 根据权利要求9所述的即时通讯装置,其特征在于,所述即时 通讯模块是系统内核的驱动模块。
全文摘要
本发明公开了一种全屏图形模式下的即时通讯方法,所述方法包括a.将即时通讯模块注入远程进程;b.检测所述远程进程的界面属性,当所述界面属性为全屏模式时,执行步骤c;c.接管系统应用程序接口模块;d.接管远程进程的显示接口模块;e.运行即时通讯模块。本发明还公开了一种全屏图形模式下的即时通讯装置,包括注入单元;检测单元;系统接口控制单元;显示接口控制单元和执行单元。利用本发明提供的通讯方法和通讯装置,可以在全屏幕显示状态下实现IM窗口的显示,而且IM各项功能的实现并不影响全屏程序的运行。
文档编号H04L12/58GK101227421SQ200710079998
公开日2008年7月23日 申请日期2007年3月6日 优先权日2007年1月16日
发明者蔺豫岐 申请人:沃天醒石(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1