- ベストアンサー
VB6.0で外部アプリの値を取得したい
VB6.0で外部アプリケーションのエディトエディトボックスに書かれている値を取得したいのですが、どのように取得したらわからず困っております。 外部アプリケーションのハンドルIDも、その中にあるエディトボックスのハンドルIDも取得できたのですがその値を取得する方法を調べておりますが、よくわかりません。判る方いらっしゃいましたら教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。簡略化版を回答しておきます。 Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _ (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _ ByVal lpszClass As String, ByVal lpszWindow As String) As Long Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Any) As Long Const WM_GETTEXT As Long = &HD Sub test() Dim hWnd As Long, hWndEdit As Long Dim lngRet As Long Dim myText As String * 255 hWnd = FindWindowEx(0, 0, "Notepad", vbNullString) If hWnd = 0 Then MsgBox "メモ帳が見つかりません。" Exit Sub End If hWndEdit = FindWindowEx(hWnd, 0, "Edit", "") lngRet = SendMessage(hWndEdit, WM_GETTEXT, Len(myText), ByVal myText) Debug.Print myText End Sub
その他の回答 (1)
- mitarashi
- ベストアンサー率59% (574/965)
http://okwave.jp/qa/q5392790.htmlのNo.5に、他アプリのエディットコントロールをマウスでクリックして、ハンドルを取得し、テキストを貼り付けるコードを回答しておりますが、 lngRet = SendMessage(hWnd, WM_SETTEXT, 0, ByVal myText) のところを、 lngRet = SendMessage(hWnd, WM_GETTEXT, Len(myText), ByVal myText) に変更すると、メモ帳のテキストを取得できました。 (注) Dim myText As String * 255等と、事前に領域確保が必要です。 参考コードには、余分な情報が多いと思いますが、ご参考まで。
お礼
ご回答ありがとうございます。 ご連絡が大変遅くなりまして申し訳ございません。 上記方法で解決することが出来ました。
お礼
ご回答ありがとうございます。 ご連絡が大変遅くなりまして申し訳ございません。 上記方法で解決することが出来ました。