• ベストアンサー

VB6.0で外部アプリの値を取得したい

VB6.0で外部アプリケーションのエディトエディトボックスに書かれている値を取得したいのですが、どのように取得したらわからず困っております。 外部アプリケーションのハンドルIDも、その中にあるエディトボックスのハンドルIDも取得できたのですがその値を取得する方法を調べておりますが、よくわかりません。判る方いらっしゃいましたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.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

Simanohito
質問者

お礼

ご回答ありがとうございます。 ご連絡が大変遅くなりまして申し訳ございません。 上記方法で解決することが出来ました。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

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等と、事前に領域確保が必要です。 参考コードには、余分な情報が多いと思いますが、ご参考まで。

Simanohito
質問者

お礼

ご回答ありがとうございます。 ご連絡が大変遅くなりまして申し訳ございません。 上記方法で解決することが出来ました。

関連するQ&A