Private Type PROCESS_INFORMATION
      hProcess As Long
      hThread As Long
      dwProcessId As Long
      dwThreadId As Long
   End Type

   Private Declare Function WaitForSingleObject Lib "kernel32" ( _
      ByVal hHandle As Long, _
      ByVal dwMilliseconds As Long) As Long

   Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, _
      ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, _
      ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, _
      ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, _
      ByVal lpCurrentDirectory As String, lpStartupInfo As STARTUPINFO, _
      lpProcessInformation As PROCESS_INFORMATION) As Long

   Private Declare Function CloseHandle Lib "kernel32" (ByVal _
      hObject As Long) As Long
         
   Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As Long, _
      ByVal lpOperation As String, ByVal lpFile As String, _
      ByVal lpParameters As String, ByVal lpDirectory As String, _
      ByVal nShowCmd As Long) As Long

   Private Const NORMAL_PRIORITY_CLASS = &H20&
   Private Const INFINITE = -1&
   
   Private Const SHOW_FULLSCREEN = 3
   Private Const SHOW_ICONWINDOW = 2
   Private Const SHOW_OPENNOACTIVATE = 4
   Private Const SHOW_OPENWINDOW = 1
   
#Else

#End If

' ------------------------
' File properties dialog
' Win32 only
'

#If Win32 Then
   Private Type SHELLEXECUTEINFO
      cbSize        As Long
      fMask         As Long
      Hwnd          As Long
      lpVerb        As String
      lpFile        As String
      lpParameters  As String
      lpDirectory   As String
      nShow         As Long
      hInstApp      As Long
      lpIDList      As Long     'Optional parameter
      lpClass       As String   'Optional parameter
      hkeyClass     As Long     'Optional parameter
      dwHotKey      As Long     'Optional parameter
      hIcon         As Long     'Optional parameter
      hProcess      As Long     'Optional parameter
   End Type
   
   Private Const SEE_MASK_INVOKEIDLIST = &HC
   Private Const SEE_MASK_NOCLOSEPROCESS = &H40
   Private Const SEE_MASK_FLAG_NO_UI = &H400

   Private Declare Function ShellExecuteEx Lib "shell32.dll" (SEI As SHELLEXECUTEINFO) As Long
#End If

' --------------------------
' File read/write functions
'

' Shared variables for FreeData, GetData and GetDataBlock

Private hMemory   As Long
Private lpMemory  As Long

#If Win32 Then

   ' OpenFile() Structure
   Private Type OFSTRUCT
      cBytes As String * 1
      fFixedDisk As String * 1
      nErrCode As Integer
      reserved As String * 4
      szPathName As String * 128
   End Type

   Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long

   Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
   Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
   Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
   Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long

   Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (stvDest As Any, stvSource As Any, ByVal cbCopy As Long)

   Private Declare Function hRead Lib "kernel32" Alias "_hread" (ByVal hFile As Long, lpBuffer As Any, ByVal lBytes As Long) As Long
   Private Declare Function hWrite Lib "kernel32" Alias "_hwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal lBytes As Long) As Long
   Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
   Private Declare Function lRead Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long
   Private Declare Function lWrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal wBytes As Long) As Long
   Private Declare Function lSeek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As Long
   Private Declare Function lClose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long

#Else
   Private Declare Sub CopyMemory Lib "Kernel" Alias "hmemcpy" (stvDest As Any, stvSource As Any, ByVal cbCopy As Long)
#End If