ウィンドウにフォーカスがあたったら、
ウィンドウ上に設置しているIEコンポーネントにフォーカスを当てるサンプルです。
#include "User32.as"
#define WM_SETFOCUS 0x0007
#module "ie_hwnd_m"
#define GW_HWNDNEXT 2
#define GW_CHILD 5
#define NULL 0
#define MAX_CLASSNAME 256
#define IE_CLASS_NAME "Internet Explorer_Server"
// 指定したハンドルの子ウィンドウから、IEを探します
#defcfunc getInternetExplorerWindowHandle int owner_handle, local return_handle, local child_handle, local target_handle, local classname
GetWindow owner_handle, GW_CHILD
child_handle = stat
if(child_handle == NULL) {
return(NULL)
}
return_handle = 0
target_handle = child_handle
repeat
sdim classname, MAX_CLASSNAME
GetClassName target_handle, varptr(classname), MAX_CLASSNAME
if(classname == IE_CLASS_NAME) {
return_handle = target_handle
break
}
return_handle = getInternetExplorerWindowHandle(target_handle)
if(return_handle != NULL) {
break
}
GetWindow target_handle, GW_HWNDNEXT
target_handle = stat
if(target_handle == NULL) {
break
}
loop
return(return_handle)
// IEにフォーカス
#deffunc setFocusMyInternetExplorer local target_handle
target_handle = getInternetExplorerWindowHandle(hwnd)
if(target_handle != NULL) {
SetFocus target_handle
}
return
#global
title "タイトルバーをクリックするだけで、IEの上でマウスホイールが利用できるよ!"
oncmd gosub *onSetFocus, WM_SETFOCUS
pos 0,0
axobj ie, "Shell.Explorer.2", 640, 480
ie -> "Navigate" "https://news.google.co.jp/"
await 500
setFocusMyInternetExplorer
stop
// フォーカスのイベント
*onSetFocus
setFocusMyInternetExplorer
return