重新认识GetWindowText

      在实际工作中遇到这样的问题:模块注入到某目标进程获取某个窗口标题的时候失败。工具探测:spy++无法获取窗口标题,其它工具(勇芳窗口管理器、自己写的demo)却可以获取到。

一般来说,获取窗口标题的方法有两个:
1)GetWindowText(hWnd)
2)SendMessage(hWnd,WM_GETTEXT)

另外,根据http://blogs.msdn.com/b/oldnewthing/archive/2003/08/21/54675.aspx知道下面2点:
1)如果是获取本进程窗口标题的话,GetWindowText是发送WM_GETTEXT消息来拿标题内容的,这和主动调用SendMessage发送WM_GETTEXT没区别。
2)如果是获取其它进程窗口标题的话,GetWindowText是直接从窗口内部相关的数据结构中拿到标题内容的,不发送WM_GETTEXT消息。

      所以,当窗口标题只能从窗口内部相关的数据结构中拿到,而我们又是获取本进程的窗口标题的时候,通过GetWindowText和SendMessage都是无法获取的。这时候要使用一个新的API:InternalGetWindowText,it obtains the window text directly from the window structure associated with the specified window's handle and then always provides the text as a unicode string。(比较旧的sdk中是没有的)。

posted on 2014-12-30 22:02 ylka 阅读(2878) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2014年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类

随笔档案

技术博客

技术站点

搜索

最新评论

阅读排行榜