
外部アプリケーションの子ウィンドウ(Edit)のテキストが取得できません。
ご指導お願いいたします。
■やりたいこと
外部アプリケーションのEditの文字列を取得(変数に代入まで)
取得したい文字列数は、半角8桁程度です。
開発環境 BVA
●取得済みの情報
外部アプリケーションの親ウィンドウのハンドルを取得済み。
特定の子ウィンドウのコントロールIDを取得済み。
lpStringの使い方が全く分かっていません。
nMaxCountも分かりません。
hDlgには親ウィンドウのハンドルが入っています。
<関数の宣言>
Declare Function GetDlgItemText Lib "user32" Alias "GetDlgItemTextA" _
(ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long
Sub GetTextTest()
nIDDlgItem = "000514F6" 'EditのコントロールID
lpString = Space(10) '分かっていないのですが調べてみてなんとなく
GetText1 = GetDlgItemText(hDlg, nIDDlgItem, lpString, 256)
End Sub
これで、GetText1にEditのテキストが取得できると思っているのですが、
根本的に間違っている気もします。
実行以前に、型が一致しませんと出てしまいます。
型を修正しても、GetText1にはエラーの0が出力されるのではと思っております。
また、別件なのですが、
親ウィンドウの中に子ウィンドウ1があって、
子ウィンドウ1の中に子ウィンドウ2(Edit)があった場合
親ウィンドウのハンドルと、子ウィンドウ2のコントロールIDが
分かっていれば、Editの文字列は取得できるのでしょうか?
No.1ベストアンサー
- 回答日時:
まずはGoogleでGetDlgItemTextを検索しましょう。
http://www.activebasic.com/help_center/Pages/API …
えー違ってる箇所を指摘します。
nIDDlgItemの型はLongなのに、なんで
nIDDlgItem = "000514F6" 'EditのコントロールID
と文字列を入れているのですか?
16進数で入れるには、VBであれば&H000514F6です。
あとGetDlgItemText関数が返す値は取得した文字数です。
なので当然、GetText1に入れるのは間違ってます。lpStringに取得した文字列が入るのですよ。
とりあえずサンプル
Dim bufStr As String
Dim retStr As String
Dim nIDDlgItem As Long
' コントロールID
nIDDlgItem = &H000514F6
' バッファの用意
bufStr = String(255, vbNullChar)
' エディットボックスの文字列を取得する
If GetDlgItemText(hWnd, nIDDlgItem, bufStr, Len(bufStr)) > 0 Then
retStr = Left$(bufStr, InStr(bufStr, vbNullChar) - 1)
End If
' retStrが目的の文字列。
一発で実行できてしまいました! O(≧▽≦)O♪
基本が理解できてないので試行錯誤で悩み続けておりました。
本当にありがとうございます。
基本も全く分かってない者に、非常に分かりやすく
教えていただき本当に助かりました。
こんなにも分かりやすい適切な返答初めてです。
即使えるサンプルも記載いただき感謝感激です。
API関数の使い方自体が漠然と分からず、理解が困難だったのですが、
今回のご返答で理解できるようになりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
エクセルで作った新しいウイン...
-
隠れたウィンドウの画面をキャ...
-
キーボードでのマウスエミュレート
-
タイトルバーの変更
-
VBで外部プログラムを位置のみ...
-
最大化でタスクバーを隠す
-
windows7 access2007 イミデー...
-
Console.WriteLine で表示されない
-
複数のビュー表示について
-
Exelを開く時に困っています
-
C言語でWin32APIを使い、子ウィ...
-
「&HFFFF」「&H1A」とは?
-
ゲームでは結局どっちが良いの?
-
ラジオボタンの初期指定
-
ブック構成の保護
-
Excelの上下を固定したい
-
グラフの交点の求め方(Excel)
-
コントロールの書式設定で、“コ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
Vba LongPtrについて教えてくだ...
-
検索の画面がでなくなってしま...
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
[VBA] UserForm を Excel の W...
-
VBA .Value=.Value ?
-
作成したウインドウのサイズを...
-
Console.WriteLine で表示されない
-
エクセルで1行目から3行目が消...
-
「&HFFFF」「&H1A」とは?
-
【VB2008】 マウス操作の一時的...
-
UWSCで特定のChromeのタブをア...
-
他のアプリケーションの終了処理
-
MFCでハンドルを取得するには
-
VBAで単一ブック複数窓を閉じる...
-
EnumChildWindowsの使い方(VBA)
おすすめ情報