hyqhyq 发表于 2009-6-14 19:03:42

请问如何取得鼠标位置窗口中控件的文本

本帖最后由 hyqhyq 于 2009-6-14 19:45 编辑

请问如何取得鼠标位置窗口中控件的文本,就是像窗口信息工具那样的

pusofalse 发表于 2009-6-14 19:40:39

#include <WinAPI.au3>

$iMousePos = MouseGetPos()

$tPoint = DllStructCreate($tagPoint)
DllStructSetData($tPoint, 1, $iMousePos)
DllStructSetData($tPoint, 2, $iMousePos)

$hWin = _WinAPI_WindowFromPoint($tPoint)

$iLength = _SendMessage($hWin, 0xE) + 1
$tBuffer = DllStructCreate("char[" & $iLength & "]")
$pBuffer = DllStructGetPtr($tBuffer)

_SendMessage($hWin, 0xD, $iLength , $pBuffer)
Msgbox(0, $hWin, DllStructGetData($tBuffer, 1))
$tBuffer = 0

kn007 发表于 2009-6-14 19:43:04

楼上的代码还可以。。。不过要反应迅速。。。

hyqhyq 发表于 2009-6-14 19:44:48

thanks a lot,ありがとう

kn007 发表于 2009-6-14 19:58:12

小日本鬼子!

居然用日语说谢谢,假洋鬼子

lynfr8 发表于 2009-6-14 20:25:17

技术交流无国界嘛
楼主用阿富汗语都不稀奇

hyqhyq 发表于 2009-6-14 20:41:49

对于5楼说的话,我不敢反驳你,不然又是一堆愤青对我的攻击,我学日语并不是自愿,是我被分配到的专业必须学的(虽然是软件工程),因为学校日语课开得太多,基本上一个学期有一半的时间都在学日语,偶尔说两句也是难免的,如果你还是认为我亲日,我无话可说,也懒得辩解

pusofalse 发表于 2009-6-14 21:05:52

Re 5#:
都是世界公民,小伙你用的着这样吗。爱国不代表可以对别的国家无礼,况且楼主只是为了感谢解题者而说了一句日本语。你难道不知道学习第二种语言就是拥有第二个灵魂吗?嗯哼,跑题了。

2楼的代码,0xE代表消息WM_GETTEXTLENGTH(获取文本长度),0xD表示消息WM_GETTEXT(获取文本)。先通过发送消息WM_GETTEXTLENGTH获取文本长度,再分配一块如此长度的内存区(不然,获取到的文本往哪放?),最后通过发送消息WM_GETTEXT,将文本复制到指定的内存区域中,然后输出。至于长度+1的原因,只需把+1去掉,重新测试代码,就能明白原因了。

kn007 发表于 2009-6-14 22:44:29

。。。。。。觉得国耻不可忘。。毕竟屠杀了那么多人,国际是国际!但禽兽不如的,总觉得。。。

人总为生活世事所逼迫,我理解。。。

javarike 发表于 2009-6-15 00:52:15

这里不谈论政治,只讨论技术问题..

政治家到其他论坛谈论.

nqawen 发表于 2014-8-16 08:24:06

学习来了,学习中,,,
页: [1]
查看完整版本: 请问如何取得鼠标位置窗口中控件的文本