• ベストアンサー

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

  • html内の値を取得

    下記開発環境で開発を行っています。 VS2005 vb.net あるString型の変数に値が入っています。 その値は下記のようなhtmlです。 <html> ←ここから <head></head> <body> <div id='test1'> OK </div> </body></html> ←ここまで 実装したいことは <div id='test1'> で囲まれた”OK”という値を取得することです。 文字列をHtmlDocumentに格納するとGetAttributeメソッドで取得できるのらしいですが、 方法がわかりません。←すみません、表現がただしくないかもしれません。 どなたかご存知の方ご教授お願い致します。

  • VB2005 ComboBoxの値の取得について

    VB入門者なのですがよろしくお願いします。 VB2005のComboBoxで、   ComboBox1.Items.Add("個人")   ComboBox1.Items.Add("クラス") ComboBox1.Items.Add("全体") これらの項目にそれぞれ値を取得させたいのですが、その方法がわかりません。 もしよろしければ、ご支援お願いします。

  • vbsで取得した値をvb.netで受け取る。

    vbsでデバイスインスタンスパスを取得し、そのデバイスインスタンスパスを vb.netで使用してデバイス制御アプリケーションを作成しようと考えています。 ですがvbsで取得したデバイスインスタンスパスをvb.netで受け取るための手段が調べても わかりませんでした。 ご存じの方がいらしたら教えていただきたいと思います。

  • VBからEXCELのセルの値を取得する方法

    VBからEXCELファイルのあるセルの値を取得すると、本来の書式設定とは 違った形式で取得されてしまいます。 VBから値を取得する方法を教えて下さい。 *EXCELファイルのセルの設定  セルの書式設定-ユ-ザ-定義-[h]:mm   (時刻ではなく、時間として設定しています) これをVBから普通に取得すると「1.7523548785」などといった 数値になってしまいます。

  • VB2008 iniファイルの指定セクション内の値のみを取得

    VB2008 iniファイルの指定セクション内の値のみを取得 VB2008でiniファイルの読込みを行いたいと思っています。 指定セクション内の値のみを取得したいのですが、自分の知る限りではキー名も一緒についてきて しまいます。 簡単に値のみを取得する方法を助言いただきたいと思います。 自分が検討した一番近かった方法は、GetPrivateProfileSection関数を使用し、キー名と値を取得。 ↑ただし、キー名はいらない。 関数で出来ればいいのですが、出来なければ、プログラミングで値のみを抜き取る方法でもいいので なるべく簡単な方法を宜しくお願いします。   

  • VBでRegisterWindowMessage関数を利用したメッセージの取得 2

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1042889 の質問者の方と同じことで悩んでおります。 ---回答引用--- (1)VB側のウインドウハンドル(Me.hWnd)をAPIに渡す。 (2)RegisterWindowMessage("キーワード")でメッセージIDを取得する。 (3)VB側のウインドウをサブクラス化して、(2)のメッセージIDをフックする。 -------------- ということなのですが、 (1)は解決できたと思います。 (2)で、メッセージIDを取得する方法で悩んでいます。 "キーワード"は任意の文字列でいいのでしょうか? APIを使用するのが初めてで、いろいろ調べたのですが、なかなか理解できないで困っております。 APIについておすすめのURLでもよいので教えていただけますでしょうか?

  • FinderSystem等のツールで取得できないハンドルを取得するには?

    他のアプリケーションのボタンで操作したいと思い FinderSystemやNuke++等のツールを使いウィンドウハンドルを調べ SendMessage関数を使ってコマンドボタンのクリックをする所までは できるのですが、ツール等でウィンドウハンドルを取得できないラベル トグルボタンが存在し、画面上では明らかに存在しているのですが そのボタンには反応せず、大きな枠組みでウィンドウハンドルを 取得してしまいます。FindWindow、FindWindowEx、GetWindow EnumChildWindowで子ウィンドウのハンドルまで調べたのですが 値が0になってしまいます。他にもボタンだけではなく タブコントロールも操作したいと思っているのですが 同様に子ウィンドウハンドルの値は0になってしまいます そもそもウィンドウハンドルを全て取得することは不可能なのでしょうか? いろいろな他のアプリケーションのコマンドボタンをFinderSystemで調べて 取得できる場合とできない場合があり、この差は何なのか 疑問に思っています。ご存知のお方がいれば お手数ですが教えていただけないでしょうか? 開発環境は、WindowsXP、VB6.0です。 宜しくお願いいたします。

  • WebRequestでJavascriptの値取得

    VB .Net(2008)のWebRequestでHPのページの値を取得するものを作成しているのですが、Javascriptが表示する部分の値が取得出来ません。 Javascriptが動的に挿入する値を取得する方法はあるでしょうか? よろしくお願いします。

  • VB.netでUSBメモリの固有ID(シリアル)を取得する方法

    VB.netでUSBメモリの固有ID(シリアル)を取得する方法 お世話になります。 VBでアプリケーションを作成しているのですが、その認証にUSBメモリの固有IDを使用したいと考えています。 しかし、固有ID(シリアル)を取得する方法がわからずに悩んでいます。 USBメモリのボリュームシリアルは取得できたのですが・・・。 (ボリュームシリアルだとフォーマットすれば変わってしまう?) よろしくお願いします。

  • vb6です。 現在開いているフォームの次のウィンドウをアクティブにした

    vb6です。 現在開いているフォームの次のウィンドウをアクティブにしたいのです。 ただ、次のウィンドウはエクセルなど他のアプリケーションになります。 ハンドルとかはよくわからないのでハンドル以外の方法があればそちらを使いたいのですが、もしハンドルを取得するしかなければサンプルソースも教えてほしいです。 おねがいします。