こういうのがあるようです
http://azumaya.s101.xrea.com/wiki/index.php?%B3%D0%BD%F1%2FC%A2%F4%2F%A5%C7%A5%B9%A5%AF%A5%C8%A5%C3%A5%D7%A4%CE%B2%BF%A4%E2%A4%CA%A4%A4%BE%EC%BD%EA%A4%C7%A4%CE%A5%C0%A5%D6%A5%EB%A5%AF%A5%EA%A5%C3%A5%AF%A4%F2%BC%E8%C6%C0
デスクトップかどうかの判別法はこちらにもありました。
http://www.geocities.jp/fjtkt/index.html
#include "hscallbk.as"
//コールバック関数実装プラグイン
//http://chokuto.ifdef.jp/index.html
#uselib ""
#func MouseProc "" int, int, int
#uselib "user32"
#func SetWindowsHookEx "SetWindowsHookExA" int,sptr,int,int
#func CallNextHookEx "CallNextHookEx" int,int,int,int
#func GetCursorPos "GetCursorPos" sptr
#cfunc WindowFromPoint "WindowFromPoint" sptr,sptr
#cfunc GetAncestor "GetAncestor" sptr,sptr
#func GetClassName "GetClassNameA" sptr,sptr,sptr
#func CharUpper "CharUpperA" sptr
#define WH_MOUSE_LL 0x000E
#define WM_LBUTTONDOWN 0x0201
setcallbk LowLevelMouseProc, MouseProc, *HookedMouseProc
SetWindowsHookEx WH_MOUSE_LL, varptr(LowLevelMouseProc), hinstance, 0
hHookMouse = stat
stop
*HookedMouseProc
nCode = callbkarg(0)
wPrm = callbkarg(1)
lPrm = callbkarg(2)
if nCode < 0 {
CallNextHookEx hHookMouse, nCode, wPrm, lPrm
return stat
}
if nCode == 0 {
switch wPrm
case WM_LBUTTONDOWN
dim LPoint, 2
GetCursorPos varptr(LPoint)
LHandle = GetAncestor(WindowFromPoint(LPoint(0), LPoint(1)), 2)
sdim LClassName
GetClassName LHandle, varptr(LClassName), 64
CharUpper varptr(LClassName)
if LClassName == "PROGMAN" {
dialog "デスクトップです"
}
swbreak
swbreak
default
swend
}
CallNextHookEx hHookMouse, nCode, wPrm, lPrm
return stat