REM > DropFiles
      REM Demo drag'n'drop in Windows
      REM R.T.Russell with amendements
      
      WM_DROPFILES = &233
      *SYS 1
      
      MaxDroppedFiles% = 100
      DIM DroppedFile$(MaxDroppedFiles%-1), DroppedAt{x%,y%}
      Dropped% = 0
      
      ON SYS PROCsys(@msg%, @wparam%, @lparam%) : RETURN
      SYS "DragAcceptFiles", @hwnd%, 1
      
      REPEAT
        WAIT 1
        IF Dropped% THEN
          PRINT "Number of objects dropped: ";Dropped%
          PRINT "Objects dropped at x=";DroppedAt.x%;", y=";DroppedAt.y%
          FOR I% = 0 TO Dropped%-1
            IF I% >= MaxDroppedFiles% THEN EXIT FOR
              PRINT "Object ";I%;": ";
              SYS"GetFileAttributes", DroppedFile$(I%) TO sh%
              IF sh% AND 16 THEN PRINT"Dir. "ELSE PRINT"File ";
              PRINT DroppedFile$(I%)
              ch%=OPENIN(DroppedFile$(I%)+".inf")
              IF ch% THEN
                LD$="":EX$="":AT$=""
                A$=GET$#ch%:CLOSE#ch%
                A$=MID$(A$,INSTR(A$," ")+1)
                WHILE LEFT$(A$,1)=" ":A$=MID$(A$,2):ENDWHILE
                A%=INSTR(A$+" "," "):LD$=LEFT$(A$,A%-1):A$=MID$(A$,A%+1)
                WHILE LEFT$(A$,1)=" ":A$=MID$(A$,2):ENDWHILE
                A%=INSTR(A$+" "," "):EX$=LEFT$(A$,A%-1):A$=MID$(A$,A%+1)
                WHILE LEFT$(A$,1)=" ":A$=MID$(A$,2):ENDWHILE
                A%=INSTR(A$+" "," "):SZ$=LEFT$(A$,A%-1):A$=MID$(A$,A%+1)
                WHILE LEFT$(A$,1)=" ":A$=MID$(A$,2):ENDWHILE
                A%=INSTR(A$+" "," "):AT$=LEFT$(A$,A%-1):A$=MID$(A$,A%+1)
                IF LEFT$(AT$,1)="L":A$="08"
                PRINT"BBC info: ";LD$;" ";EX$;" ";SZ$;" ";AT$
              ENDIF
            NEXT I%
            Dropped% = 0
          ENDIF
        UNTIL FALSE
        END
        
        DEFPROCsys(M%,W%,L%)
        CASE M% OF
          WHEN WM_DROPFILES:
          LOCAL B%, I%
          DIM B% LOCAL 260
          SYS "DragQueryFile", W%, -1, 0, 0 TO Dropped%
          IF Dropped% <> 0 THEN
            FOR I% = 0 TO Dropped%-1
              IF I% >= MaxDroppedFiles% THEN EXIT FOR
                SYS "DragQueryFile", W%, I%, B%, 260
                DroppedFile$(I%) = $$B%
              NEXT I%
            ENDIF
            SYS "DragQueryPoint", W%, DroppedAt{}
            SYS "DragFinish", W%
          ENDCASE
          ENDPROC