HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0422
ゆとりアプリ内のinput欄取得4未解決


ゆとり

リンク

2014/4/22(Tue) 20:11:24|NO.61625

例えば test01.exe というアプリ内に
input項目があり、そのクラス名が "msgbox"という名前だったとします。
そのクラス名を取得し。inputに書かれた文字を取得しdialogに表示させたいのですが
どうすればよいでしょうか?



この記事に返信する


cats

リンク

2014/4/22(Tue) 21:25:15|NO.61627

>そのクラス名を取得し
まだクラス名msgboxは分かっていないということですか?
データが「実行ファイル名」と「入力ボックス」ということだけ
なので難しいというか精度が低くなるかもしれません。

入力ボックスの内容を取得するには最終的に
その入力ボックスのハンドルが必要になります。

hEdit = FindWindowEx(FindWindow("msgbox","test"), 0, "Edit", "")
これで「test」というタイトルのウィンドウの「msgbox」というクラス名
の入力ボックスのハンドルが取得できます。
持っているデータが実行ファイル名だけということなので、
そこからウィンドウハンドルを取得してください。
FindWindow("msgbox", "test")の部分をそのウィンドウハンドルに
置き換えても動作します。たぶん。

sendmsg hEdit, 0x000E, 1024, varptr (buf) size=stat+1 sdim buf, size+1 sendmsg hEdit, 0x000D, size+1, varptr (buf)
これで変数bufに内容が代入されます。

と、下手な説明すいません。
私自信もこんな内容を質問したことがあるので回答しているのですが。
参考に。
http://hsp.tv/play/pforum.php?mode=pastwch&num=49454



ゆとり

リンク

2014/4/22(Tue) 21:56:17|NO.61629

ありがとうございます。

ちなみに 今よく見るとinputのTitleがinputに書かれた文字になっていて
クラス名がmsgboxでした

一応これを参考にさせていただきました。

#uselib "user32.dll"
#cfunc FindWindow "FindWindowA" sptr, sptr #cfunc FindWindowEx "FindWindowExA" sptr,sptr,sptr,sptr #define WM_GETTEXT 0x000D #define WM_GETTEXTLENGTH 0x000E button "TEXT取得",*a stop *a aaa=FindWindow(0,"test") bbb=FindWindowEx(aaa,0,"msg","") hEdit=FindWindowEx(bbb,0,"msgbox","") ////ここのタイトルの部分にinputに書かれた文字が入る if hEdit=0 {mes "TESTウィンドウが無い":stop} sendmsg hEdit, WM_GETTEXTLENGTH, 1024, varptr (buf) if stat<=0 {mes "文字が無い":stop} size=stat+1 sdim buf,size+1 sendmsg hEdit, WM_GETTEXT, size+1, varptr (buf) mes "取得サイズ "+stat+"バイト"


これだと取得サイズが0バイトになってしまうので
上記のタイトルに文字が入ってしまうので そこを取得できないでしょうか?



cats

リンク

2014/4/22(Tue) 22:19:28|NO.61630

aaaは正常に取得できていますか?
たぶん親ウィンドウのクラス名が必要かと。
とにかくaaaにウィンドウハンドルが入ったら、
下記のやり方で入力ボックスのハンドルは取得できると思います。

;▼親ウィンドウについて、クラス名=hspwnd0 , タイトル名=TEST aaa=FindWindow("hspwnd0","TEST") //aaa=親ウィンドウのハンドル ;▼親ウィンドウ以下の入力ボックスについて、クラス名=msgbox hEdit=FindWindowEx(aaa,0,"msgbox","") //hEdit=入力ボックスのハンドル

あと修正です。
ゆとりさんは理解されているようですが、
No.61627のレスに誤表記がありました。

誤 hEdit = FindWindowEx(FindWindow("msgbox","test"), 0, "Edit", "")

正 hEdit = FindWindowEx(FindWindow("class","test"), 0, "msgbox", "") //classは親ウィンドウのクラス名



ゆとり

リンク

2014/4/22(Tue) 22:37:18|NO.61632

はい笑
hEditまで全て取得できています。

最後にmesで確認すると0バイトとなります。
取得している場所?が違うのかなと思います・・

hEdit=FindWindowEx(bbb,0,"msgbox","") //// この最後の""のタイトルの部分
ここを取得できればと。。。

dialog hEdit
で確認してもやはり何も表記されていませんでした。



ONION software Copyright 1997-2023(c) All rights reserved.