vb getwindowtext怎么用

帮助文档说是: 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性)
我找了个例子
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Form_click()
Dim a As Long, s As String

s = String(255, 0)

a = GetWindowText(Me.hwnd, s, 255)
If a <> 0 Then MsgBox s Else MsgBox "获取出错"
End Sub
这个代码可以获取到form1 这个标题
我想问下 getwindowtext后面两个参数,帮助文档说
lpString String,预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入
cch Long,lpString缓冲区的长度 . 这些是什么意思啊
s = String(255, 0) 这个是什么意思?

GetWindowText不是取得一个窗体的标题(caption)文字码,那返回的应该是字符串,If a <> 0 怎么是判断为0,不是应该判断是否为空字符串吗

MsgBox s ,s=string(255,0),要输出所获得的窗口名,不是要输出a吗,a=GetWindowText(Me.hwnd, s, 255), 怎么会是s ?
请求解困.
___________________________________________________________________________________

谢谢你的回答, 看了之后还有几个不懂: a = GetWindowText(Me.hwnd, s, 255) 返回值a 是个数字,标题是存在第二个参数里面的?
lpString是不是可以随便分配各大小 ,比如 s=string(200,0),然后a = GetWindowText(Me.hwnd, s, 200) ?
再次感谢.

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
GetWindowText 定义
ByVal lpString As String '可以看出这个按址传递的,你应该也就知道为什么要先建个缓冲区了!它会把名字返回到这个地址里,不然就会,内存不能为写.
ByVal cch As Long ,这个就是你要定义字符串的长度!不包括终止符,对于一个按址传递的内存块,它不能知道大小!让你传给它!也可以快速存到你指定的位置,不至于溢出!
s = String(255, 0)'这个是为S分配255个空间,并用0填充,0其实也就是终止符

If a <> 0 Then MsgBox s Else MsgBox "获取出错"
写成多行就是
If a <> 0 Then
MsgBox s
else
MsgBox "获取出错"
end if
应该可以看出了吧!是正确的

函数说明
hwnd ----------- Long,欲获取文字的那个窗口的句柄
lpString ------- String,预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入
cch ------------ Long,lpString缓冲区的长度
返回 Long,复制到lpString的字串长度;不包括空中止字符。会设置GetLastError
返回的只是这个函数复制了几个字符,也就是复制到lpString 指向的地址了多少个字符

可以修改,但是你写的有点错
lpString是不是可以随便分配各大小 ,比如 s=string(201,0),然后a = GetWindowText(Me.hwnd, s, 200) ?
这样才可以
lpString ------- String,预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入
温馨提示:答案为网友推荐,仅供参考