如"金山游侠III"和"GameExpert"游戏修改器一样,修改窗口可以直接从DirectX游戏中直接弹出
初步猜想:
1.拦截改变分辨率和窗口最小化的相关函数,使其无效,游戏就不会被系统最小化,分辨率也会保持游戏分辨率
2.拦截改变分辨率和窗口最小化的相关消息,目的一样
3.自己窗口在最上层..通过研究金山,发现它的窗口是通过CreateDialogIndirectParamA函数创建,不知有没关系...上面仅仅是猜想,还没实验成功...感兴趣的大家讨论讨论,揭穿这个技术 :)

解决方案 »

  1.   

    我在VB版刚结了一个和这一样的贴子,
    具体实现方法就是把弹出窗口写在DLL里,
    再用SetWindowsHookEx把DLL注入到游戏进程,
    这就可以弹啦。-----------------------------------
    回复人: zyl910(910:分儿,我来了!) ( ) 信誉:146  2002-11-27 23:10:00  得分:0 
    游戏使用的是DirectX全屏
    是独立于Windows窗口管理系统之外的----------------------------------------------------------------弹出的窗口属于Windows窗口管理系统
    为了使它显示
    就必须回到Windows窗口管理系统所以游戏会最小化####################################################################注意到楼主的要求没有:----------------------------------------------------------------
    回复人: yangsiwei(100%菜鸟) ( ) 信誉:100  2002-11-27 21:01:00  得分:0 
     
     
      就是在游戏窗口中弹自己程序的窗口,
    象金山游侠3一样,但金3好象是拷屏了设置为全屏幕后再弹的窗口,
    我要的是直接在游戏中弹窗口出来,但游戏画面不静止,就象游戏自己的子窗口一样。
      
    ----------------------------------------------------------------
    阿..谢谢zy兄阿..
    那我原来的猜测也没有错..
    看来还是要进入其程序的进程..
    至于hookapi的问题,也是很有趣的.
    不过鉴于vb的限制,hookapi我想是不能实现了..
    要想hookapi,,必须写个标准的外部dll挂接到目标程序的进程..
    vb的activxdll似乎是不能实现的..
    不知道我的想法对不对..  
     
    Top 
     
     回复人: myblind(盲人) ( ) 信誉:100  2002-10-25 23:37:00  得分:0 
     
     
      唉,我不知道。
      
     
    Top 
     
     回复人: myhfit() ( ) 信誉:100  2002-10-26 09:30:00  得分:0 
     
     
      dll用C或Delphi写
    ActiveX Dll是不可能的
    因为ActiveX不是真正的Dll是不能全系统可读的
      
     ------------------------------------------------------参考这个:
    http://www.csdn.net/Develop/article/15/15381.shtm
      

  2.   

    See this :http://www.csdn.net/Develop/article/15%5C15381.shtm