1

嘿,我正在尝试从外部程序中获取一些文本。目前我正在使用此代码:

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 的值。但是,它们只是值(数字)而不是文本本身。

这是我试图从中获取文本的程序的图像: 前卫

我怎样才能从它找到的那些项目中获取文本?

大卫

4

1 回答 1

0

它实际上已经十多年了,但我很确定您可以使用SendMessage/WM_GETTEXT来处理您想要文本的子窗口的句柄。如果你走这条路,你必须准备 API 可以将结果写入的字符串缓冲区。

似乎还有一个使用SendMessage/WM_GETTEXT我在这里找到的快捷方式:

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)
于 2012-04-04T22:34:59.370 回答