再谈如何从DirectX游戏画面直接弹出来?如金山游侠III(200分)

飞机

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个程序使用hook注入其他进程运行<br>可以热键弹出一个窗口<br>但是,无法在directx界面中直接弹出<br>必须使用alt+tab切换<br>另,金山游侠弹出时好象(应该)已经挂起进程的其他所有线程<br>请问如何实现这些功能
 
directx 界面的程序画在 Directsurface 上,所以不能一般的 form 共存,<br>最好想办法直接画在画面上。
 
哪位高手帮帮忙啊?!!!!
 
第二个问题我已经有了思路<br><br>请大家帮忙提前,谢谢了!!!
 
对话框是被画在了GDI的surface上面<br>你可以copy到游戏的主画面上
 
我最早见到这个功能是在98年,一个叫“游戏驻虫”的游戏修改软件.
 
我帮美萍做了一个,在我的w2k和me下都没问题,但在美萍那他们说经常死:(<br>源程序稍微有些长,不方便贴出来。<br>有兴趣的留邮箱。<br>我会用dbin@sohuo.com发过去的。<br>希望你们能把运行的结果告诉我。
 
ffweidmann@163.com<br><br>请发个给我 我试~ 谢谢~
 
楼上发了,查收。<br>告诉我运行状况,ok?
 
可以运行 不过 游戏画面定住了 ,不关掉弹出窗口 <br><br>游戏就没法操作~~~<br><br>为什么不能象 一些游戏外挂一样 比如传奇的<br><br>可以弹出 又可以看到画面运行?!
 
哦,会死机么?<br>兼容性怎么样&gt;?<br><br>可以运行 不过 游戏画面定住了 ,不关掉弹出窗口,游戏就没法操作~~~<br>//是这样的,弹出的是一个模式窗口,弹出时会把主线程挂起(表现为游戏定住了),<br>//只有关掉时主线程才能继续.其实要实现弹出窗口同时游戏继续运行也不很难,<br>//只要把弹出的窗口由模式改成非模式就行,不过还有问题.就是如果directx游戏<br>//采用了flip来翻转主,付表面的话,仅将窗口由模式改成非模式无法将弹出的窗口<br>//绘制在付表面上,表现为弹出的窗口在画面上闪烁.解决办法我还没想好,因为我对directx<br>//很不了解:(,只是为了帮人做才临时抱佛脚<br><br>给我留一下你说的传奇外挂下载地址,我分析一下,或许能找到解决办法.<br>
 
你可以到www.mir2down.com里找 外挂 99%的外挂都可以在传奇里弹出的<br><br>
 
我改成非模式 &nbsp;可以在游戏 千年里弹出 游戏可以运行 程序的功能可以执行<br><br>出现的问题是 关掉游戏 游戏就会出错<br><br>如果在弹出的窗口中设定可以关闭 并释放资源 就没事!!!<br><br>不知道有没有办法可以做了 游戏关闭 弹出的程序就自动关闭 并释放资源~<br>
 
to tt.t:<br>模态对话框似乎并不能解决所有的问题。<br><br>我也做过类似的程序,在DX7自带的“ddex1”演示程序下出现了问题:<br>我的对话框弹出来了,但是图象的翻转并没有停,但它是响应定时器消息来进行的。<br>这时如果使用使用SuspendThread,将会导致对话框也停止响应,如何处理?<br><br>另外还有一个现象是:<br>在“wormhole”演示程序下,一旦鼠标移出对话框的范围,则对话框消失(存在,但是被覆盖了)<br>此时,又该如何处理呢?<br><br>这两个问题困扰了我很久,还望指教。
 
to 我不怕你:<br>一般说来关掉游戏是不应会出错的,如果这种情况下出错一般是你改的有问题,仅仅简单的<br>把showmodal改成show是不行的,就像你说的是资源释放问题。如果在游戏运行时关掉谈出<br>窗口的程序到有可能使游戏出错,同样是资源释放问题,不过好解决就是自定义一个退出<br>消息,在程序推出时发送,碳出窗口收到这个消息就释放自己。<br>在千年中仅改成非模式就能谈出而不影响游戏说明千年并没有使用flip翻转,或许传奇也是<br>这样,那就很好办了,我发给你的程序改一改就能用,而且其中可以省掉部分代码(专为<br>在用了flip的程序中弹出而写的),这种程序我早就写过了,不过源程序一时找不到了,<br>找到后可以发给你。<br>
 
to astros:<br>模态对话框只能阻断主线程,对timer或程序的其他线程无效。<br>不过我的程序好像在用timer实现翻转的程序中谈出十没问题的(好早前写的程序了,好像<br>测试过在那种程序中谈出,没问题,记不清了~),你能不能把出现的问题在写清楚些。<br>如果是有事对话框能显示出来有事现实不出来,那你可以看我的程序,我有特别处理的,<br>能应付那种情况。<br>你所说的那几个demo我没有看过,我说过的我对dx并不了解,不过可以给你些建议。<br>//这时如果使用使用SuspendThread,将会导致对话框也停止响应,如何处理?<br>我想你可能是挂起了主线程,对话框是属于主线程的自然会失去响应。我想你可以枚举出<br>demo进程的所有线程判断是否为主线程(即由对话框程序中得到的threadhandle),如是<br>不挂起,不是则挂起。<br>再由一个办法就是用你的程序(负责接受热健,探出窗口的程序)挂起demo的所有线程,再<br>新建一个线程,在新建的线程中谈出对话框。<br>这些方法我没试验过,也不知道是否可行,不过我想你可以试试。<br>至于你说的“wormhole”演示程序,我还是没看过,不好说为什么。<br>btw,挂起一个进程的所有线程的方法我不特别清楚(2k下可以用openthread获得<br>threadhandle,9x下怎么做,难道只能用magic number XOR 一下threadid才能得到?)<br>看雪论坛(http://www.chat001.com/forum/crackforum/index.html?id=261689)上的<br>doskey好像有这样的代码,你可以向他问问。<br>又机会的话希望能交流一下!<br>
 
to tt.t:<br>恩恩 其实只要解决了程序关闭时向弹出窗口发个消息<br>让弹出窗口关闭 并释放资源 就可以用用了 <br>
 

Similar threads

I
回复
0
查看
697
import
I
I
回复
0
查看
603
import
I
I
回复
0
查看
508
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部