怎样运用DIRECT   X把自身窗体或文字 或图片 画到屏幕最上层,而不会给游戏挡住,请赐教

解决方案 »

  1.   

    一、创建一个全局绘图表面,然后再其上进行绘制。
    二、如果一失败,可以创建一个顶级透明窗口,在其上输出文字。
    具体思路见CSDN论坛的以下贴子:
    http://topic.csdn.net/t/20030212/00/1419114.html
    http://topic.csdn.net/t/20020728/16/906175.html
      

  2.   

    我的方法是:
      创建一个窗口,无边框。
      在检测到游戏程序为活到窗口时,置顶;否则取消置顶。
      把要输出的内容输出到自己的窗口上。
      窗口大小、位置自己都很方便控制。
      Win 2K 或更高版本系统可以用 API 调整自己窗口的透明度。  直接输出到 DX 游戏窗口的方法我觉得不好,主要是因为它的窗口是不断刷新的,你的输出内容很有可能是非常闪烁。
      

  3.   

    DIRECTX9以前的版本都有API接口,支持在DIRECTX绘图面上输出GDI, 不过我不会,楼主去图形区看看有没有人研究这个.还有, DIRECTX9开始 MS不再提供VB6的技术支撑, 不是不支持,而是不提供开发文档, 如果需要用,则要靠自己"摸", 因此,我估计你得去C或C++区看看它们是如何使用DIRECTX9或10的,然后再翻译 成VB6的语句
      

  4.   

    另外说一句, 想通过把自己的窗体"置顶"的方法来和DIRECTX"抢跑道"是不行的, GDI和DIRECTX的优先级不是一个级别的.
    DIRECTX9以前的版本是没有办法实现这一点的,除非你有本事去HACK DIRECTX,或者自己写驱动级的代码直接写显存, 9开始MS提供了这么一个接口,但是入前面所说, 从9开始也不直接支持VB6, 得靠你自己去"摸".
      

  5.   

    任何时候在游戏中第三方程序要画字都绝对不是件简单的事情,正统的外挂做法:找到游戏中的画字函数地址,注入进程,push相关参数,call这个函数地址
    找不到画字函数地址,或是不能满足自己需要,想办法找到游戏中的D3D设备,注入进程自己调用DX的画字函数在这个设备上画字需要注意的是,你画了字也必须确保是最后画上去的,否则画上去的字会被后面画的东西所覆盖。一般会把画文字放在游戏UI渲染层的最后一层去做。在UI渲染层后插入自己的处理函数地址让游戏调用。以上所有功能实现都需要较强的逆向功底。而且现在的游戏裸奔能让你方便的逆向分析的已经越来越少了,主流的游戏大部分都有加强壳或反调试保护等手段。楼主如果用VB想做这件事的话,可以考虑放弃或转学逆向工程。(其实那个时候用VB或是什么都已经不重要了)。而楼上所说的DX9不支持VB6需要自己摸索调用方式这种反而是小问题了。