易语言D3D HOOK写屏 解决了给500. 100

RT:我想在一个3D游戏的屏幕上画文本,目前已经知道实现的方法,HOOK然后在论坛也找到了D3D写文本的方法,但是不知道怎么搞到游戏上去。所以求助,求高手帮忙。... RT:我想在一个3D游戏的屏幕上画文本,目前已经知道实现的方法,HOOK 然后在论坛也找到了D3D写文本的方法,但是不知道怎么搞到游戏上去。所以求助,求高手帮忙。 展开
 我来答
793580514
2017-03-30
知道答主
回答量:21
采纳率:0%
帮助的人:3万
展开全部
.版本 2
.支持库 spec
.支持库 ogrelib

.子程序 HOOK_安装

集_Direct3DCreate9 = GetProcAddress (GetModuleHandleA (“d3d9.dll”), “Direct3DCreate9”)
.如果真 (D3DxHook.安装ApiHook (集_Direct3DCreate9, 到整数 (&NewDirect3DCreate9)))
D3DxHook.开始Hook ()
.如果真结束

.子程序 NewDirect3DCreate9, 整数型, , No.1
.参数 SDKVersion, 整数型
.局部变量 返回值, 整数型
.局部变量 CreateDevice地址, 整数型

D3DxHook.停止Hook ()
返回值 = Jmp (集_Direct3DCreate9, SDKVersion)
集_CreateDeviceAdd = 取_类_函数地址 (返回值, 17)
HOOKCreateDevice.安装ApiHook (集_CreateDeviceAdd, 到整数 (&NewCreateDevice))
HOOKCreateDevice.开始Hook ()
D3DxHook.开始Hook ()
返回 (返回值)

.子程序 NewCreateDevice, 整数型, , 返回值为设备对象
.参数 pDx9, 整数型
.参数 Adapter, 整数型
.参数 DeviceType, 整数型
.参数 hFocusWindow, 整数型
.参数 BehaviorFlags, 整数型
.参数 pPresentsentationParameters, 整数型
.参数 pPresentturnedDeviceInterface, 整数型
.局部变量 返回值, 整数型
.局部变量 Present地址, 整数型
.局部变量 pFunAddress, 整数型
.局部变量 参数, 整数型, , "1"
.局部变量 局_pPresentturnedDeviceInterface, 整数型

HOOKCreateDevice.停止Hook ()
返回值 = Jmp (集_CreateDeviceAdd, pDx9, Adapter, DeviceType, hFocusWindow, BehaviorFlags, pPresentsentationParameters, pPresentturnedDeviceInterface)
局_pPresentturnedDeviceInterface = 取指针内容_整数 (pPresentturnedDeviceInterface)
EndScene = 取_类_函数地址 (局_pPresentturnedDeviceInterface, 168) ' 读_DWORD (汇编加法 (读_DWORD (局_pPresentturnedDeviceInterface), 169))
' 调试输出 (十到十六 (EndScene))
集_Present = 取_类_函数地址 (局_pPresentturnedDeviceInterface, 18) ' 取_Presen地址 (返回值) '
集_Reset = 取_类_函数地址 (局_pPresentturnedDeviceInterface, 17)
集_Reset跳回地址 = ASM_ADD (集_Reset, 5)
_HookJmp (集_Reset, &NewReset)
HOOKPresent.安装ApiHook (集_Present, 到整数 (&NewPresent))
HOOKPresent.开始Hook ()
HOOKCreateDevice.开始Hook ()
返回 (返回值)

.子程序 NewPresent, 整数型, , No.3
.参数 pDxdevice, 整数型, , 8
.参数 pSourceRect, 整数型, , c
.参数 pDestRect, 整数型, , 10
.参数 hDestWindowOverride, 整数型, , 14
.参数 pDirtyRegion, 整数型, , 18
.局部变量 返回值, 整数型
.局部变量 设备, 整数型

HOOKPresent.停止Hook ()
调试输出 (pDxdevice)
.如果真 (D3D_是否创建 = 假)
D3DCreateFontA (pDxdevice, 12, 6, 400, 0, 0, 1, 7, 0, 0, “宋体”, 集_字体)
D3D_是否创建 = 真
.如果真结束
__DrawMyTextEx (“[欢迎使用菊花科技]”, 10, 10, 合成颜色 (255, 255, 255, 255))
返回值 = Jmp (集_Present, pDxdevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion)
HOOKPresent.开始Hook ()
返回 (返回值)
爱包子脑袋
2015-05-23
知道答主
回答量:1
采纳率:0%
帮助的人:1244
展开全部
呵呵,我也在研究这个问题,我讨厌易语言提供的窗口,不同步,全屏模式还可以,我用系统的API的窗口创建,消息泵问题又来了,我用线程才解决,文字没法写,我用文本转字节集数据传入Dd3d纹理,麻烦死了……,其他还可以,基本完成,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
五十六只凉水
2014-02-14
知道答主
回答量:4
采纳率:0%
帮助的人:2.2万
展开全部
是要弄网游的还是单机的
有些网游有保护 钩挂了D3D函数会出问题
单机游戏的话 就没问题
htt p://bbs.eyuyan.c om/read.php?tid=318360
这是我以前发的帖 你可以参考一下
更多追问追答
追问
能教我一下么?大神。我就是参考了你这个源码和之前aiqing发的那个。但是不太会搞。
我直接把创建设备那里的句柄改为了要写字的屏幕的句柄。画到是能画上去。但是一直在闪啊。
追答
会闪可能是因为你的刷新率和游戏刷新率不同步
钩挂游戏的D3D函数:Present
把Present的第一个参数 当做是句柄 同时在自构建的Present函数里写文本就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虎龙河D
2014-01-12 · 超过25用户采纳过TA的回答
知道答主
回答量:196
采纳率:0%
帮助的人:56.6万
展开全部
去易语言百度贴吧看一下,大神很多!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-12
展开全部
这个我最近也在学
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式