就是说,如果我已经获得了另一个程序(不是窗体)的文本框控件的句柄,如果这个文本框不是灰色的,我用下面的代码可以
获得其内容,
Public Function GetText(WindowHandle As Long) As String
Dim strBuffer As String, Char As String, lngTextLength As Long
strBuffer = Space(255)
'如果是edit控件则等待消息发送成功
If InStr("Edit", FGetClassName(WindowHandle)) And Char <> "0" Then Sleep (10)
'得到edit控件的text
SendMessage WindowHandle, &HD, 255, ByVal strBuffer
GetText = Trim(strBuffer)
End Function
Public Function FGetClassName(hwnd As Long) As String
Dim ClassName As String
Dim Ret As Long
'为类名设置缓存区大小
ClassName = Space(256)
'得到GETCLASSNAME返回值
Ret = GetClassName(hwnd, ClassName, 256)
FGetClassName = Left(ClassName, Ret)
End Function
上段代码可以获得不是灰色的文本框的内容,但是如果那个程序的文本框是灰色的,获取的就是空内容,但实际是有内容,
如何才能获取其内容呢?谢谢!!
获得其内容,
Public Function GetText(WindowHandle As Long) As String
Dim strBuffer As String, Char As String, lngTextLength As Long
strBuffer = Space(255)
'如果是edit控件则等待消息发送成功
If InStr("Edit", FGetClassName(WindowHandle)) And Char <> "0" Then Sleep (10)
'得到edit控件的text
SendMessage WindowHandle, &HD, 255, ByVal strBuffer
GetText = Trim(strBuffer)
End Function
Public Function FGetClassName(hwnd As Long) As String
Dim ClassName As String
Dim Ret As Long
'为类名设置缓存区大小
ClassName = Space(256)
'得到GETCLASSNAME返回值
Ret = GetClassName(hwnd, ClassName, 256)
FGetClassName = Left(ClassName, Ret)
End Function
上段代码可以获得不是灰色的文本框的内容,但是如果那个程序的文本框是灰色的,获取的就是空内容,但实际是有内容,
如何才能获取其内容呢?谢谢!!
Dim strBuffer As String, Char As String, lngTextLength As Long
strBuffer = Space(255)
'如果是edit控件则等待消息发送成功
If InStr("Edit", FGetClassName(WindowHandle)) And Char <> "0" Then Sleep (10)
'得到edit控件的text
'添加一个 EnabledWindow 的api 声明, 然后再添加两个 enabledwindow的 调用
enabledwindow windowhandle,1
SendMessage WindowHandle, &HD, 255, ByVal strBuffer
enabledwindow windowhandle,0
GetText = Trim(strBuffer)
End Function
Public Function FGetClassName(hwnd As Long) As String
Dim ClassName As String
Dim Ret As Long
'为类名设置缓存区大小
ClassName = Space(256)
'得到GETCLASSNAME返回值
Ret = GetClassName(hwnd, ClassName, 256)
FGetClassName = Left(ClassName, Ret)
End Function 如果不行, 那就得想别的办法了