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

文字通り10年以上経ちましたが、テキストが必要な子ウィンドウのハンドルにSendMessage/を使用できると確信しています。WM_GETTEXTこのルートに進む場合は、API が結果を書き込むことができる文字列バッファーを準備する必要があります。

SendMessage/ WM_GETTEXTI found 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)
于 2012-04-04T22:34:59.370 に答える