I made an x64-supporting version of this project in twinBASIC, with the interfaces defined right in the project instead of a TLB.

Not as virtual objects either, tB has a specific feature for using interfaces:
Code:
[ InterfaceId ("4657278B-411B-11D2-839A-00C04FD918D0") ]
Interface IDropTargetHelper Extends stdole.IUnknown
    Sub DragEnter(ByVal hwndTarget As LongPtr, ByVal pDataObject As DragDropDemo.IDataObject, ppt As POINT, ByVal dwEffect As DROPEFFECTS)
    Sub DragLeave()
    Sub DragOver(ppt As POINT, ByVal dwEffect As DROPEFFECTS)
    Sub Drop(ByVal pDataObject As DragDropDemo.IDataObject, ppt As POINT, ByVal dwEffect As DROPEFFECTS)
    Sub Show(ByVal fShow As Long)
End Interface
[twinBASIC] Explorer-style Drag-Drop Images with tB-defined x86+x64 interfaces