【问题标题】:findwindow text查找窗口文本
【发布时间】:2012-04-04 22:16:29
【问题描述】:

大家好,我想从外部程序中获取一些文本。目前我正在使用此代码:

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

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

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

大卫

【问题讨论】:

    标签: vb.net findwindow


    【解决方案1】:

    实际上已经有十多年了,但我很确定您可以使用 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)
    

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2019-09-28
      相关资源
      最近更新 更多