嘿所有我想从外部程序中获取一些文本。目前我正在使用此代码:
Dim lngHWND As Long
Dim lngHWNDF As Long
Dim lngID As Long
Dim lngChild As Long
Dim lngRet As Long
lngHWND = FindWindow(vbNullString, "Client - Main")
Do
lngChild = FindWindowEx(lngHWND, 0&, "ThunderRT6Frame", vbNullString)
If lngChild <> 0 Then
lngID = GetWindowLong(lngChild, GWL_ID)
MsgBox("Child HWND: " & Hex(lngChild) & " ID: " & lngID)
lngRet = CloseHandle(lngChild)
End If
Loop Until lngChild = 0
lngRet = CloseHandle(lngHWNDF)
lngRet = CloseHandle(lngHWND)
我正在获取lngHWND,lngHWNDF和lngChild的值。但是,它们只是值(数字)而不是文本本身。
这是我试图从中获取文本的程序的图像:
如何从找到的项目中获取文本?
大卫
答案 0 :(得分:0)
它确实已经超过十年,但我很确定你可以使用SendMessage
/ WM_GETTEXT
来处理你想要文本的子窗口的句柄。你必须准备字符串缓冲区,如果你走这条路线,API可以将结果写入。
使用SendMessage
/ WM_GETTEXT
我发现here似乎还有一条捷径:
Public Declare Ansi Function GetWindowText Lib "User32.dll" Alias "GetWindowTextA" ( _
ByVal hwnd As Integer, _
ByVal lpString As StringBuilder, _
ByVal nMaxCount As Integer) As Integer
' example:
Dim s As New StringBuilder(256)
GetWindowText(hwnd, s, s.Capacity)