第1个回答 2019-10-28
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个字符大小;随同窗口文字载入