找回密码
 加入
搜索
查看: 4409|回复: 3

[GUI管理] 如何用winapi获取其它程序窗体中某一控件的值(比如文本框中的内容)

[复制链接]
发表于 2010-2-11 11:04:28 | 显示全部楼层 |阅读模式
本帖最后由 tubaba 于 2010-2-11 11:07 编辑

比如文本框中写了一行字:你好

是否可以用user32.dll 的getdlgitemtext,看了msdn上的介绍
函数原型:UINT GetDlgItemText(HWND hDlg,int nlDDlItem,LPTSTR IpString int nMazCount);

    参数:

    hDlg:指向含有控制的对话框的句柄。

    nlDDlgItem:指定标题或文本将被检索的控制的标识符。

    IpString:指向获取标题或文本的缓冲器的指针。

    nMaxCount:指定被复制到lpString参数指向的缓冲区的字符串的最大长度。如果字符串的字符最大长度超过范围,则该字符串被截断。

    返回值:如果函数调用成功,则返回值表示被复制缓冲区的字符串的长度,不包括以NULL结尾的字符串。如果函数调用失败,则返回值为零。若想获得更多错误信息,请调用GetLastError函数。

结果我怎么call都得不到这个 Ipstring的值,我哪里有写的不对吗?
0x00220482 是记事本Edit类的句柄,15是控件ID
$stString  = DLLStructCreate("CHAR[128]")
$result_e = DllCall("user32.dll", "int", "GetDlgItemText","hwnd", 0x00220482,"int", 15 ,"str", DllStructGetPtr($stString), "int", 65000)
MsgBox(0,"",DllStructGetData($stString,1))

请哪位大大前来解惑,最好能带例子,谢谢
发表于 2010-2-11 15:27:21 | 显示全部楼层
DllStructGetData($stString,1)直接换成$result_e试试
发表于 2010-2-11 17:47:43 | 显示全部楼层
发表于 2010-2-11 17:50:59 | 显示全部楼层
不好意思,看错了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-25 20:59 , Processed in 0.076682 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表