2012-04-04 8 views
1

ちょっと、テキスト形式の外部プログラムを作成しようとしています。現在、私はこのコードを使用しています:findwindow text

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とlngC​​hild両方の値を取得しています。しかし、それらは値(数値)であり、テキスト自体ではありません。どのように私はそれが見つかったこれらのアイテムからテキストを取得する方法について行くことができる the prog

:ここ

は私がからテキストを取得しようとしていたプログラムのイメージですか?

デビッド

答えて

0

その文字通り十年以上されて、私はあなたがのテキストが欲しい子ウィンドウのハンドル(複数可)にSendMessage/WM_GETTEXTを使用することができますかなり確信しています。あなたは、このルートに行く場合、APIが結果を書き込むことができる文字列バッファを準備する必要があります。

も、私はhereを見つけ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)