質問がいまいち把握できませんが、一応、ドラッグ&ドロップについてのスクリプトがありますので、提供しておきます。
#uselib "shell32.dll"
#func DragAcceptFiles "DragAcceptFiles" int,int
#func DragFinish "DragFinish" int
#cfunc DragQueryFile "DragQueryFileA" int,int,sptr,int
#cfunc DragQueryPoint "DragQueryPoint" int,var
screen 0,800,600,0 : cls 4
DragAcceptFiles hwnd,1 ; ファイルドロップの受付を設定 (ウィンドウハンドル,可否[0 : 受け付けない / 1 : 受付)
oncmd gosub *filedrop,0x0233 ; ファイルをドロップされた時にサブルーチンジャンプ
stop
;---------------------------------------- ここからが、ドロップデータを取得する ----------------------------------------------------------
*filedrop
alloc DropFileData,20480 ; ドロップされたファイルデータを格納する変数のメモリを確保
dim DropPosi,8 ; ドロップされた時の、マウス位置
drophnd=wparam ; ドロップデータ構造体のハンドル
;DragQueryFile 関数説明
;
; 引数説明 DragQueryFile (p1,p2,s1,p3)
;
; p1 は、↑で取得した、ドロップデータ構造体のハンドル
; p2 は、インデックス番号 : ここの場所に -1 を指定した場合、ドロップされたファイルデータの総数が返る
; s1 は、インデックス番号に格納されている、ファイル名文字変数を取得する
; p3 は、ドロップされたファイルデータを格納するメモリの最大サイズ( 基本的に、10240ほどでok)
ind_max=DragQueryFile(drophnd,-1,varptr(DropFileData),20480) ; 引数 p2 に対して、-1 が指定されてるので、インデックスの総数を取得
DropFileString=""
notesel DropFileString
repeat ind_max
ind_max=DragQueryFile(drophnd,cnt,varptr(DropFileData),20480) ; 引数 p2 に対して、-1 が指定されてるので、インデックスの総数を取得
noteadd DropFileData,-1
loop
WinFlg=DragQueryPoint(drophnd,DropPosi) ; 戻り値には、ウィンドウのクライアント上にドロップしたか、そうでないかの情報(0は、クライアント領域に 1 は、キャプションバーなど)
DragFinish drophnd ; ドロップデータ構造体を開放 ← 必ず notesel 命令などに格納したら、その時点で、開放すること。
noteunsel
;------------------------------------------ ここまでがドロップデータ処理 -----------------------------------------------------------------
; ここから先に、独自の処理を記載する。
cls 4 : color 255,255,255
notesel DropFileString
ntmax=notemax
pos 0,0
if WinFlg=0 : mes "クライアント領域以外にドロップされました。"
if WinFlg=1 : mes "クライアント領域 X."+DropPosi(0)+" x Y."+DropPosi(1)+" 上にドロップされました。"
repeat ntmax
noteget temp,cnt
pos 0,(15*cnt)+15 : mes ""+temp
loop
return
↑のソースは、ファイルをドラッグ&ドロップして内容を表示するというソースです。
ウィンドウ自体に対しての移動などの検出は、別なので、その場合は、その趣旨を説明してください。