かなり無理やりですが、下の方法でやってみました。
マウスクリックを感知した瞬間に、真下のGUIコントロールに対してマウスの左ボタンの
押し下げ&放し メッセージを送信しています。
HSP側のウィンドウを半透明にしたりすると面白いと思います。
#include "llmod3.hsp"
#include "input.hsp"
#uselib "user32.dll"
#cfunc WindowFromPoint "WindowFromPoint" int,int
#cfunc GetWindow "GetWindow" int,int
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_CHILD 5
#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_OWNER 4
#cfunc GetParent "GetParent" int
#cfunc GetAncestor "GetAncestor" int,int
#define GA_PARENT 1 ;親ウィンドウを返す
#define GA_ROOT 2 ;親子関係を遡って、直近上位のトップレベルウィンドウを返す
#define GA_ROOTOWNER 3 ;親子関係と所有関係を遡って、所有されていないトップレベルウィンドウを返す
;↓ウィンドウメッセージ定義
#define WM_LBUTTONDBLCLK 0x0201 ;マウス左ボタンを押し下げ
#define WM_LBUTTONUP 0x0202 ;マウス左ボタンを離した
#uselib "user32.dll"
#func SetWindowLong "SetWindowLongA" int,int,int;ウィンドウの透明化・半透明化・不透明化_用↓
#func SetLayeredWindowAttributes "SetLayeredWindowAttributes" int,int,int,int
#const LWA_COLORKEY 1 ;透明色を指定
#const LWA_ALPHA 2 ;アルファー値を指定
#const GWL_EXSTYLE -20 ;拡張ウィンドウスタイル
#const WS_EX_LAYERED $00080000 ;透明なウィンドウ属性
screen 0,400,200,0
SetWindowLong hwnd,-20,WS_EX_LAYERED
SetLayeredWindowAttributes hwnd,0,128,LWA_ALPHA
mes "適当に押してください"
onclick gosub *job1
stop
*job1
gsel 0,-1;メインウィンドウを隠す
wait 0;微小時間待つ(∵ウィンドウシステムに処理時間を与えるため...※確信はない。)
hwnd_under_mouse = WindowFromPoint(ginfo(0),ginfo(1));マウスカーソル直下のGUIオブジェクトのハンドルを得る
hwnd_top = GetAncestor(hwnd_under_mouse,GA_ROOT);それ↑の属するトップレベルウィンドウのハンドルを得る
;mes hwnd_under_mouse
;mes hwnd_top
sendmsg hwnd_under_mouse,WM_LBUTTONDBLCLK;左ボタン押し
sendmsg hwnd_under_mouse,WM_LBUTTONUP;左ボタン放し
gsel 0,1;ウィンドウを再出現させる
return