如何hook textout?

fisher_older 2011-07-11 07:46:16
比如,监控一个记事本,当EDIT控件中输入文字的时候将文字记录。注意要用hook TextOutA,TextOutW,ExtTextOutA,ExtTextOutW的方法。搜索发现,屏幕取词采用了这种方法,但是是全屏幕鼠标取词,与我的要求还是有很大区别。所以发帖求助各位大虾。其实主要是实现两个功能:
1. 如何获得指定程序的指定控件的句柄?
2. 如何用hook textout的方法监控获得输入的文字?
...全文
601 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fisher_older 2011-07-14
  • 打赏
  • 举报
回复
网上搜了一下,似乎要用内存映射来传递捕获的字符串,但是具体该怎么做,一筹莫展。请高手出手帮忙。
fisher_older 2011-07-14
  • 打赏
  • 举报
回复
hook API应该是没有问题的。
假设在hookdll文件中如下代码:
Hook := TNtHookClass.Create('gdi32.dll', 'ExtTextOutW', @NewExtTextOutW);

其中:
function NewExtTextOutW(DC: HDC; X, Y: Integer; Options: Longint;
Rect: PRect; Str: PWideChar; Count: Longint; Dx: PInteger): BOOL; stdcall;
begin
Hook.UnHook;
Result:= TrueExtTextOutW(DC, X, Y, Options, Rect, Str, Count, Dx);
Hook.Hook;
end;


这里的str就是我需要的字符串。请问如何在主程序中获取str?如果传递给一个全局变量是否可行?
fisher_older 2011-07-13
  • 打赏
  • 举报
回复
好,我试试吧。
Lactoferrin 2011-07-12
  • 打赏
  • 举报
回复
那个可以hook任意api,你改一下就行
fisher_older 2011-07-12
  • 打赏
  • 举报
回复
如果必须hook textout该怎么做?谢谢!
fisher_older 2011-07-12
  • 打赏
  • 举报
回复
完了,看不懂,这是hook什么api函数的?
Lactoferrin 2011-07-12
  • 打赏
  • 举报
回复
http://download.csdn.net/source/3351392
你可以看一下这个
fisher_older 2011-07-12
  • 打赏
  • 举报
回复
是这样的,有个控件名称是Internet Explorer_Server,要获取里面的文字内容,WM_GETTEXT捕获不到,只能通过hook textout的方法了。不知道该怎么办。
fisher_older 2011-07-12
  • 打赏
  • 举报
回复
需要hook到在该控件中输入文字时调用的TextOutA,TextOutW,ExtTextOutA,ExtTextOutW,并把文字内容搞出来。
fisher_older 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gyk120 的回复:]
你要用全局hook吧?监控输入的文字可以用exttextoutW,也可以SendMessage WM_GETTEXT
[/Quote]

请问具体该怎么做?
Lactoferrin 2011-07-12
  • 打赏
  • 举报
回复
为什么要用TextOutA,TextOutW,ExtTextOutA,ExtTextOutW
你hook WM_CHAR更好
gyk120 2011-07-11
  • 打赏
  • 举报
回复
你要用全局hook吧?监控输入的文字可以用exttextoutW,也可以SendMessage WM_GETTEXT

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧