想做一个修改游戏内存的小程序,为了方便,需要像金山游侠那样可以在游戏下直接弹出,但游侠是弹出修改界面后,游戏在后面不动了(我怀疑是截图放在后面了)。我的目的是自己的程序窗口通过热健弹出后,游戏不最小化,即使用鼠标点我的程序,也不最小化。我的程序可以通过热健弹出,可是在弹出的瞬间,游戏最小化到任务栏了。我考虑应该是通过拦截游戏的消息,把游戏的wm_activate,wm_killfocus等等消息拦截了,就可以了,可是这是否要使用全局钩子呢?还有DLL?很是不明白,希望高手来解答。如果给的源代码确实好用,分不够可以再加。或者与我联系:[email protected]
注:游戏是全屏幕的那种,随处可见,例如:星际

解决方案 »

  1.   

    在www.21code.com有关于热键的源代码
      

  2.   

    你说的游戏是不用wm_activate,wm_killfocus这类消息的,它们是由Direct Input直接控制显卡硬件的。 DirectX中全屏模式的概念就是独占显示内存。所以除非修改游戏程序本身,你的目的难以达到。
      

  3.   

    wxj_lake(蔚蓝的风),我对DirectX了解得少之又少。但我用Spy++监测窗体确实有上述动作阿
      

  4.   

    wm_activate,wm_killfocus 这些消息 
    可以用 wh_callwndproc 钩子 获取...当然 必须是在dll中的全局hook
    还有如果要在游戏中弹出自己的窗体..而不切换的话..vb是没办法做的..
    因为只有把这个窗体 植入 游戏 进程才可能实现..
    要实现的话.也就是 把 dll 挂接进目标进程.然后由 dll 创建一个窗体.
    这个窗体就在目标进程中.共享目标进程的资源和消息队列
      

  5.   

    用dll把wm_activate 等等消息吃掉不可以吗?
    这样 游戏窗口收不到这个消息 是不是就不会最小化了呢?