2012-04-04 21 views
1

嘿,我想獲得一些文本形式的外部程序。目前我使用此代碼: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

我怎麼能去從它找到這些項目獲得的文本?

大衛

回答

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)