如何在游戏中显示个消息,而游戏又不切换到windows窗口中,就象某些游戏修改软件一样。(100分)

  • 主题发起人 主题发起人 guoyan
  • 开始时间 开始时间
G

guoyan

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在游戏中显示个消息,而游戏又不切换到windows窗口中,就象某些游戏修改软件一样。
 
只讲原理:)

1)先取得游戏的进程ID;
2)在你的程序中调用VXD引用这个ID,使游戏进程进入挂起状态;
3)你的程序运行完毕,再次调用VXD引用这个ID,激活游戏进程。
 
太复杂了吧,只是想在游戏窗口中显示个消息而已!
难道就没有其他方法吗?
 
定时把窗口设为Top,在窗口上显示消息,我发现flashget的拖动篮当更新下载百分比是,会在游戏的画面出现。
 
楼主就是美萍作者。呵呵
抓游戏图然后在此图上操作,东方不败就是那么做的。窗口是切换了的
但让用户感觉好象是游戏本身中弹出消息的假象
 
取得游戏窗口的句柄不行吗?
 
呵呵,目的是在游戏使用 DirectX 全屏模式时能弹出个消息窗口,而当前系统
又不会切换回窗口模式。
 
想办法让程序调用你的DLL(里面有个FORM),然后,你的FORM设置一个HOTKEY来弹出,
你的FORM要设成TOPMOST。
至于怎么让程序调用你的DLL,有几个办法吧:
1、W2K下,注入线程让其调用,例子到PLAYICQ。COM找;
2、通过WINSOCK的中间层SPI,我是作成一个SPI中间层,这样用到WINSOCK的程序都会
调用你的DLL;
3、还有就是注册表注入法,详细情况可以看《DELPHI5开发指南》
4、好象注册HOTKEY就是可以实现DLL注入进程,不过没有试,懒

这个是我实现的方式,不过鼠标一点游戏,又会切换回游戏,那个窗口看不到了,
不过如果不点,游戏的活动情况还是看得到的,如果能够做到点游戏,这个窗口继续保持
可见就好了,这个应该是能实现的,我见过这种程序,但是分析不出原理来。
 
最近在看DX相关的,DX不是有一个叫做:
lpDD->FlipToGDISurface();
MessageBox(Handle,error,"Failure",MB_OK);
Close();
  这样就可以到GDI层,而没真正返回windows,然后你可以再回到DX的主表层啊,你
们说的是不是这个啊
 
我觉得应该截获游戏窗口的最小化信息。

当你通过热键启动你的程序时,游戏窗口会被最小化而弹出你的程序窗口。。

所以呢?我想就是截住最小化信息,且要用到 HOOK 技术。

这是我的理论。实践我自己还在找。
 
看我得回复,没问题的。很简单。
记得给分呀[:D]
ps,行不行都给个回复,ok?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1578788
 
to tt.t
用你的代码测试了一下,主要在游戏CS1.5测试,发现有时候能弹出来,有时候弹不出来。
但起码不会再返回windows界面了。

 
是吗,现在我这没cs,回去给你试一下,找找原因,吧你的qq或邮箱给我,ok?
 
谢谢,我的e-mail是 guoyan@163.net
qq:4425970
 
我想窗口应该是弹出来了,只是无法看到:(
昨天又看了一下金山游侠,发现它好像在弹出前,先截取游戏画面,建立一个全屏的窗口,把
截取的图形放在窗口上,再弹出修改窗口.这样就能避免由于移动弹出窗口而使游戏画面残缺
还可以修正屏幕颜色,亮度等,使弹出窗口颜色不至于太难看.可能是这样,我只是匆匆看了
一下游侠3,试试吧.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
767
import
I
I
回复
0
查看
590
import
I
后退
顶部