社区
Windows SDK/API
帖子详情
delphi中如何在文字输出到屏幕前将其截获,并修改!?
1024office
2007-12-12 04:33:24
如题,我是比较希望能做到截获所有的文字输出的一个通用的办法。当然,这个delphi的source是我自己的。
大家可以把你们实现的方法说出来听听看,我之前有做了个直接修改controls.pas,结果这样似乎只可以截那些caption属性,其他的,如listbox中的那些就截不到。大家帮帮忙,想想办法,谢谢!
...全文
232
11
打赏
收藏
delphi中如何在文字输出到屏幕前将其截获,并修改!?
如题,我是比较希望能做到截获所有的文字输出的一个通用的办法。当然,这个delphi的source是我自己的。 大家可以把你们实现的方法说出来听听看,我之前有做了个直接修改controls.pas,结果这样似乎只可以截那些caption属性,其他的,如listbox中的那些就截不到。大家帮帮忙,想想办法,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
comanche
2007-12-19
打赏
举报
回复
ApplicationEvent OnMessage事件如下
.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
tagMSG = TMsg 如下定义
TMsg = packed record
hwnd: HWND;
message: UINT;
wParam: WPARAM;
lParam: LPARAM;
time: DWORD;
pt: TPoint;
end;
其中 message 取出跟 WM_SETTEXT, LB_ADDSTRING 判断
comanche
2007-12-19
打赏
举报
回复
像 ListBox 之类的他用的是不同的消息, 你要做一个区分
ListBox 是 LB_ADDSTRING, LPARAM 同样是一个 lpsz str
ComboBox 是 CB_ADDSTRING, LPARAM 同样
comanche
2007-12-19
打赏
举报
回复
这个没必要用 hook, 放一个ApplicationEvent就可以,判断 WM_SETTEXT, LPARAM 就是指向 lpsz 的一个指针
1024office
2007-12-18
打赏
举报
回复
结啦,感谢各位协助。
公司最近要换.net了,郁闷中,虽然我社么语言都OK,但还是感觉Delphi比较爽。
^_^
1024office
2007-12-17
打赏
举报
回复
问题已解,用的是EXE中的hook,不过效果真的不咋的,速度有点慢,词典太大了点,郁闷。今天晚上-明天早上结贴。有主意再来说上两句呀
Bear_hx
2007-12-17
打赏
举报
回复
在Hook中不要做太多操作,尤其是费时的,这样整个系统都会很慢的。
Bear_hx
2007-12-13
打赏
举报
回复
截获hook
1024office
2007-12-13
打赏
举报
回复
问一下1、2楼,用hook截这些API我也会的,但是我搞不清楚,这些textout等类似的方法究竟有多少个,一个我怕做的不全,再个就是觉得,我有source的情况下,可否有一些稍微文明点方式(不需要用hook,有些系统监测软件会档掉。)来实现这个方法?拜托各位多多出主意,问题解决后,定当厚分相送!
wxgnolux
2007-12-13
打赏
举报
回复
1.可以用getwindowtext API 取得部分控件的text.
2.彻底的方法是如楼上所说,截获 textout 等一些文字输出的API,类似金山词霸取词功能. 这要用到 hook , 远程代码注射,引入表修改等技术.
你可以按这些线索网上找找,应该有你要的内容。
1024office
2007-12-13
打赏
举报
回复
to fangkailove
你的这个办法我们现在就是在用,是用在多国语言的设计里,但是这样做有一个坏处就是,我必须事先知道各个窗体中所有的元件,而我们这个多国语言通常一用就会是在整个一个大的系统工程中,这里面会设计到30多个的模块程序,20多位程序员的工作,我不能确认他们在以后的设计里是否会用到一些第三方组件等等,所以现在才出现了枚举的弊端呀,有些不是我们底层现在就可以预见到的元件在这里面,所以我们在想改良方案,我原本是想直接更新了VCL的基类,但是后来发现有些元件如listbox等,这里是用items来储存的,这样也还是无异与枚举了,我需要修改太多的VCL的pas文件了,于是我想找出VCL中可以直接将文字画到屏幕的地方,在这里来动态翻译,可结果追进了windows API了,比较郁闷呀。。。。
大家再帮我想想办法呢。拜托啦^_^
wxgnolux
2007-12-13
打赏
举报
回复
我有个想法但不知行不行,因为你有source ,那么取text的代码应该和被取者是在同一进程里的,那通过枚举窗体(包括窗体内所有控件),根据不同的classname转换成对应delphi的类,在取它的属性值...
vc++ 应用源码包_1
不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...
vc++ 应用源码包_6
不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...
vc++ 应用源码包_2
不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...
vc++ 应用源码包_5
不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...
vc++ 应用源码包_3
不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章