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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0920
cats他ウィンドウのメッセージボックスの内容4解決


cats

リンク

2012/9/20(Thu) 22:51:19|NO.49454

他のウィンドウのメッセージボックス内の文字列を取得するには
どうすればよいでしょうか?
現在、メッセージボックスのあるウィンドウのハンドル、タイトル、クラス名は
分かっているとします。(取得したいメッセージボックスは普通のソフトの画面のものです)
どなたかご教授お願いします。

#include "user32.as" title "TEST" sdim buf,256 buf="この文章を他のHSPのプログラムに取得させたい" mesbox buf,300,100,0 sdim cn,0xFF GetClassName hwnd,varptr(cn),0xFF mes "ハンドル:"+hwnd+"\nクラス名:"+cn stop



この記事に返信する


暇人

リンク

2012/9/21(Fri) 01:32:48|NO.49457

FindWindowExでメッセージボックスのハンドルを取得して
sendmsgでWM_GETTEXTを送ればで出来る

NO.49454のを先に起動しといて

#uselib "user32" #cfunc FindWindow "FindWindowA" str, str #cfunc FindWindowEx "FindWindowExA" int, int, str, str #define WM_GETTEXT 0x000D #define WM_GETTEXTLENGTH 0x000E button "TEXT取得",*a stop *a hEdit = FindWindowEx(FindWindow("hspwnd0","TEST"), 0, "Edit", "") 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+"バイト" mes buf



暇人

リンク

2012/9/21(Fri) 01:53:55|NO.49458

コピペしたからちょっと不味い部分があった
>#cfunc FindWindow "FindWindowA" str, str
>#cfunc FindWindowEx "FindWindowExA" int, int, str, str
これはstrの所に0(""とは違う)が使えないから

#cfunc FindWindow "FindWindowA" sptr, sptr #cfunc FindWindowEx "FindWindowExA" sptr, sptr, sptr, sptr
こっちじゃないと機能的に不具合でる

関数形式じゃ無く命令で良いなら

#include "user32.as"
使えば良いだけだけど・・・



暇人

リンク

2012/9/21(Fri) 02:15:39|NO.49459

ちょい間違いって言うか0にするの忘れた・・・
>sendmsg hEdit, WM_GETTEXTLENGTH, 1024, varptr (buf)


sendmsg hEdit, WM_GETTEXTLENGTH, 0, 0
まぁ、どっちでも動くけど・・・



cats

リンク

2012/9/21(Fri) 19:01:54|NO.49464

>暇人さん
ありがとうございます!!
ここまで詳しく教えてくだされば無事にできそうです。
解決しました。



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