できますよ。
WindowFromPoint関数を使って、マウスカーソルの直下にあるウィンドウのハンドルを調べることができます。
そのハンドルが監視対象のボタンのものと一致しているかしていないかで判別できます。
但し、ループをまわす必要があります。
サンプルです。
#uselib "user32.dll"
#cfunc WindowFromPoint "WindowFromPoint" int,int
*LAB1
screen 0,600,300,0
objmode 1,1
objsize 100,30
NUM_BTN = 4 ;ボタンの数
dim LIST_HWND,NUM_BTN ;ボタンのウィンドウハンドルリスト
repeat NUM_BTN
pos 10,10+(30+50)*cnt
button gosub "BTN "+cnt+"",*LAB3
LIST_HWND(cnt) = objinfo(cnt,2) ;設置したボタンのウィンドウハンドルを記録
loop
font msgothic,30,16
*LAB2
repeat
redraw 0
color 0,0,0 : boxf
HWND_UnderMouse = WindowFromPoint(ginfo_mx,ginfo_my)
;< マウスカーソルの下に知り合いが居るかどうか調べる >
OBJID_BTN_AIMED = -1
repeat NUM_BTN
if HWND_UnderMouse = LIST_HWND(cnt) : OBJID_BTN_AIMED = cnt : break
loop
if OBJID_BTN_AIMED ! -1 {;居た場合
color 255,255,255
pos 130,10 : mes "第"+OBJID_BTN_AIMED+"ボタンが狙われています。"
}
redraw 1
await 100
loop
stop
*LAB3
dialog "第"+stat+"ボタンが押されました。"
return
でも、「ループを回さずにoncmdみたいに割り込みで検出したい!」という場合も当然あるとおもいます。
ポテトさんがこちらを望んでいる場合は私の紹介した方法ではいけませんね。
そういう場合は、憶測で申し訳ないですが、
本来ならボタンに送られてくる頭上注意のメッセージをフックできれば割り込みという形で検出できるかもしれません。
私はその方面には暗いので、すみませんがこれ以上はなんとも言えません。