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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0508
YuukiウィンドウハンドルからウィンドウIDに変換したい7解決


Yuuki

リンク

2017/5/8(Mon) 16:07:24|NO.79601

ウィンドウハンドルからウィンドウIDに変換したいのですがよくわかりません。
誰か教えてください。
ググっても見つかりませんでした。



この記事に返信する


スペース

リンク

2017/5/8(Mon) 16:24:29|NO.79602

https://msdn.microsoft.com/ja-jp/library/cc364760.aspx
ここを読むとGetWindowLongでウインドウIDを取得できるそうですが・・・
失敗しますね。何か間違ってるのかな・・・

#include "user32.as" #define GWL_ID $FFFFFFF4 GetWindowLong hwnd,GWL_ID mes stat



いののて

リンク

2017/5/8(Mon) 18:23:50|NO.79603

GWL_IDはウィンドウの中のコントロールに対して有効なので、buttonやinput等のコントロールのIDしか取得できません。
#include "user32.as"
#define GWL_ID $FFFFFFF4 input buf:iInput=stat GetWindowLong objinfo(iInput,2),GWL_ID mes stat



スペース

リンク

2017/5/8(Mon) 21:13:08|NO.79607

>>いののてさん
なるほど、勉強になりました。



inovia

リンク

2017/5/8(Mon) 21:34:43|NO.79608

ここで言っている「ウィンドウID」って「HSPのウィンドウID」だったりして。



掘木

リンク

2017/5/8(Mon) 22:06:27|NO.79611

ウィンドウハンドルからHSPウィンドウIDなら、GWL_USERDATAに入ってるよ。
openHSPのbmscr構造体の生成部分とウィンドウ生成箇所にそんな感じの動きがあったような。

#uselib "user32.dll" #cfunc GetWindowLong "GetWindowLongA" int,int #const GWL_USERDATA -21 repeat 16 screen cnt,320,120 mes strf("ウィンドウID[%2d]",cnt) mes strf("WindowHandle[%8X]",hwnd) mes strf("GWL_USERDATA[%2d]",GetWindowLong(hwnd,GWL_USERDATA)) loop
ただ、ウィンドウハンドルからHSPウィンドウIDを取得しなきゃならない状況がいまひとつ分からない。



スペース

リンク

2017/5/8(Mon) 22:50:00|NO.79612

もしくはプロセスIDかなと予想。



Yuuki

リンク

2017/5/10(Wed) 08:50:09|NO.79628

ありがとうございます。

#uselib "user32.dll" #cfunc GetWindowLong "GetWindowLongA" int,int #cfunc WindowFromPoint "WindowFromPoint" int,int #define GWL_USERDATA -21 gsel 0:hwnd0=hwnd screen 1 repeat wait 1 cursor=GetWindowLong(WindowFromPoint(ginfo(0),ginfo(1)),GWL_USERDATA) title str(cursor) loop



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