查找窗口文本

时间:2012-04-04 22:16:29

标签: vb.net findwindow

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

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

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

如何从找到的项目中获取文本?

大卫

1 个答案:

答案 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)