' P.S., Remember VERSION COMPATIBILITY for upgrades and stuff, because the GUID will
' change with every compile you do if you don't put on binary compatibility!
'
' P.P.S., BTW, the resource file stores the icon for this dll ;)
'
' These are the types necessary for transmitting data to the shell
'
Public Type STGMEDIUM
tymed As Long
hGlobal As Long
pUnkForRelease As IUnknown
End Type
Public Type FORMATETC
cfFormat As Long
ptd As Long
dwAspect As Long
lindex As Long
tymed As Long
End Type
Public Type CMINVOKECOMMANDINFO
cbSize As Long ' sizeof(CMINVOKECOMMANDINFO)
fMask As Long ' any combination of CMIC_MASK_*
hWnd As Long ' might be NULL (indicating no owner window)
lpVerb As Long ' either a string or MAKEINTRESOURCE(idOffset)
lpParameters As Long ' might be NULL (indicating no parameter)
lpDirectory As Long ' might be NULL (indicating no specific directory)
nShow As Long ' one of SW_ values for ShowWindow() API
dwHotKey As Long
hIcon As Long
End Type
'
' The API calls...
'
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal HDROP As Long, ByVal pUINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Public Declare Function ReleaseStgMedium Lib "ole32.dll" (pMedium As STGMEDIUM) As Long
Public Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Public Declare Function VirtualProtect Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flNewProtect As Long, ByRef lpflOldProtect As Long) As Long
Public Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Long
Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, lpString2 As Any) As Long
Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpstring As Any) As Long
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
'
' And the constants
'
Public Const CF_HDROP = 15 ' For gettings the files
Public Const DVASPECT_CONTENT = 1 ' "
Public Const TYMED_HGLOBAL = 1 ' "
Public Const REG_SZ = 1& ' Registry access
Public Const PAGE_EXECUTE_READWRITE = &H40& ' Memory functioning
' Menu flags for Add/Check/EnableMenuItem/etc
Public Const MF_INSERT = &H0&
Public Const MF_CHANGE = &H80&
Public Const MF_APPEND = &H100&
Public Const MF_DELETE = &H200&
Public Const MF_REMOVE = &H1000&
Public Const MF_BYCOMMAND = &H0&
Public Const MF_BYPOSITION = &H400&
Public Const MF_SEPARATOR = &H800&
Public Const MF_ENABLED = &H0&
Public Const MF_GRAYED = &H1&
Public Const MF_DISABLED = &H2&
Public Const MF_UNCHECKED = &H0&
Public Const MF_CHECKED = &H8&
Public Const MF_USECHECKBITMAPS = &H200&
Public Const MF_STRING = &H0&
Public Const MF_BITMAP = &H4&
Public Const MF_OWNERDRAW = &H100&
Public Const MF_POPUP = &H10&
Public Const MF_MENUBARBREAK = &H20&
Public Const MF_MENUBREAK = &H40&
Public Const MF_UNHILITE = &H0&
Public Const MF_HILITE = &H80&
Public Const MF_DEFAULT = &H1000&
Public Const MF_SYSMENU = &H2000&
Public Const MF_HELP = &H4000&
Public Const MF_RIGHTJUSTIFY = &H4000&
Public Const MF_MOUSESELECT = &H8000&
Public Const MF_END = &H80&
Public Const MFT_STRING = MF_STRING
Public Const MFT_BITMAP = MF_BITMAP
Public Const MFT_MENUBARBREAK = MF_MENUBARBREAK
Public Const MFT_MENUBREAK = MF_MENUBREAK
Public Const MFT_OWNERDRAW = MF_OWNERDRAW
Public Const MFT_RADIOCHECK = &H200&
Public Const MFT_SEPARATOR = MF_SEPARATOR
Public Const MFT_RIGHTORDER = &H2000&
Public Const MFT_RIGHTJUSTIFY = MF_RIGHTJUSTIFY
' Menu flags for Add/Check/EnableMenuItem/etc
Public Const MFS_GRAYED = &H3&
Public Const MFS_DISABLED = MFS_GRAYED
Public Const MFS_CHECKED = MF_CHECKED
Public Const MFS_HILITE = MF_HILITE
Public Const MFS_ENABLED = MF_ENABLED
Public Const MFS_UNCHECKED = MF_UNCHECKED
Public Const MFS_UNHILITE = MF_UNHILITE
Public Const MFS_DEFAULT = MF_DEFAULT
' QueryContextMenu uFlags
Public Const CMF_NORMAL = &H0&
Public Const CMF_DEFAULTONLY = &H1&
Public Const CMF_VERBSONLY = &H2&
Public Const CMF_EXPLORE = &H4&
Public Const CMF_NOVERBS = &H8&
Public Const CMF_CANRENAME = &H10&
Public Const CMF_NODEFAULT = &H20&
Public Const CMF_INCLUDESTATIC = &H40&
Public Const CMF_RESERVED = &HFFFF0000
' GetCommandString uFlags
Public Const GCS_VERBA = &H0& ' canonical verb
Public Const GCS_HELPTEXTA = &H1& ' help text (for status bar)
Public Const GCS_VALIDATEA = &H2& ' validate command exists
Public Const GCS_VERBW = &H4& ' canonical verb (Unicode)
Public Const GCS_HELPTEXTW = &H5& ' help text (Unicode version)
Public Const GCS_VALIDATEW = &H6& ' validate command exists (Unicode)