tubaba 发表于 2010-2-11 11:04:28

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

本帖最后由 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")
$result_e = DllCall("user32.dll", "int", "GetDlgItemText","hwnd", 0x00220482,"int", 15 ,"str", DllStructGetPtr($stString), "int", 65000)
MsgBox(0,"",DllStructGetData($stString,1))

请哪位大大前来解惑,最好能带例子,谢谢

netegg 发表于 2010-2-11 15:27:21

DllStructGetData($stString,1)直接换成$result_e试试

rikthhpgf2005 发表于 2010-2-11 17:47:43

:face (12):

netegg 发表于 2010-2-11 17:50:59

不好意思,看错了
页: [1]
查看完整版本: 如何用winapi获取其它程序窗体中某一控件的值(比如文本框中的内容)