! IE.f90

! This module contains the COM interfaces of the objects defined in 
! C:\WIN95\SYSTEM\SHDOCVW.DLL
! Generated by the Fortran Module Wizard on 10/25/98

	MODULE IE
		USE DFCOMTY
		USE DFCOM
		IMPLICIT NONE
	

		! CLSIDs		
		TYPE (GUID), PARAMETER :: CLSID_InternetExplorer = &
			GUID(#0002DF01, #0000, #0000, &
			  CHAR('C0'X)//CHAR('00'X)//CHAR('00'X)//CHAR('00'X)// &
			  CHAR('00'X)//CHAR('00'X)//CHAR('00'X)//CHAR('46'X))
		TYPE (GUID), PARAMETER :: CLSID_ShellDispatchInproc = &
			GUID(#0A89A860, #D7B1, #11CE, &
			  CHAR('83'X)//CHAR('50'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))
		TYPE (GUID), PARAMETER :: CLSID_Shell = &
			GUID(#13709620, #C279, #11CE, &
			  CHAR('A4'X)//CHAR('9E'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))
		TYPE (GUID), PARAMETER :: CLSID_WebViewFolderContents = &
			GUID(#1820FED0, #473E, #11D0, &
			  CHAR('A9'X)//CHAR('6C'X)//CHAR('00'X)//CHAR('C0'X)// &
			  CHAR('4F'X)//CHAR('D7'X)//CHAR('05'X)//CHAR('A2'X))
		TYPE (GUID), PARAMETER :: CLSID_ShellFolderView = &
			GUID(#62112AA1, #EBE4, #11CF, &
			  CHAR('A5'X)//CHAR('FB'X)//CHAR('00'X)//CHAR('20'X)// &
			  CHAR('AF'X)//CHAR('E7'X)//CHAR('29'X)//CHAR('2D'X))
		TYPE (GUID), PARAMETER :: CLSID_ShellUIHelper = &
			GUID(#64AB4BB7, #111E, #11D1, &
			  CHAR('8F'X)//CHAR('79'X)//CHAR('00'X)//CHAR('C0'X)// &
			  CHAR('4F'X)//CHAR('C2'X)//CHAR('FB'X)//CHAR('E1'X))
		TYPE (GUID), PARAMETER :: CLSID_WebBrowser = &
			GUID(#8856F961, #340A, #11D0, &
			  CHAR('A9'X)//CHAR('6B'X)//CHAR('00'X)//CHAR('C0'X)// &
			  CHAR('4F'X)//CHAR('D7'X)//CHAR('05'X)//CHAR('A2'X))
		TYPE (GUID), PARAMETER :: CLSID_ShellFolderViewOC = &
			GUID(#9BA05971, #F6A8, #11CF, &
			  CHAR('A4'X)//CHAR('42'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('8F'X)//CHAR('39'X))
		TYPE (GUID), PARAMETER :: CLSID_WebBrowser_V1 = &
			GUID(#EAB22AC3, #30C1, #11CF, &
			  CHAR('A7'X)//CHAR('EB'X)//CHAR('00'X)//CHAR('00'X)// &
			  CHAR('C0'X)//CHAR('5B'X)//CHAR('AE'X)//CHAR('0B'X))

		! IIDs		
		TYPE (GUID), PARAMETER :: IID_IWebBrowserApp = &
			GUID(#0002DF05, #0000, #0000, &
			  CHAR('C0'X)//CHAR('00'X)//CHAR('00'X)//CHAR('00'X)// &
			  CHAR('00'X)//CHAR('00'X)//CHAR('00'X)//CHAR('46'X))
		TYPE (GUID), PARAMETER :: IID_FolderItemVerb = &
			GUID(#08EC3E00, #50B0, #11CF, &
			  CHAR('96'X)//CHAR('0C'X)//CHAR('00'X)//CHAR('80'X)// &
			  CHAR('C7'X)//CHAR('F4'X)//CHAR('EE'X)//CHAR('85'X))
		TYPE (GUID), PARAMETER :: IID_FolderItemVerbs = &
			GUID(#1F8352C0, #50B0, #11CF, &
			  CHAR('96'X)//CHAR('0C'X)//CHAR('00'X)//CHAR('80'X)// &
			  CHAR('C7'X)//CHAR('F4'X)//CHAR('EE'X)//CHAR('85'X))
		TYPE (GUID), PARAMETER :: IID_IShellUIHelper = &
			GUID(#729FE2F8, #1EA8, #11D1, &
			  CHAR('8F'X)//CHAR('85'X)//CHAR('00'X)//CHAR('C0'X)// &
			  CHAR('4F'X)//CHAR('C2'X)//CHAR('FB'X)//CHAR('E1'X))
		TYPE (GUID), PARAMETER :: IID_FolderItems = &
			GUID(#744129E0, #CBE5, #11CE, &
			  CHAR('83'X)//CHAR('50'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))
		TYPE (GUID), PARAMETER :: IID_IShellWindows = &
			GUID(#85CB6900, #4D95, #11CF, &
			  CHAR('96'X)//CHAR('0C'X)//CHAR('00'X)//CHAR('80'X)// &
			  CHAR('C7'X)//CHAR('F4'X)//CHAR('EE'X)//CHAR('85'X))
		TYPE (GUID), PARAMETER :: IID_IShellLinkDual = &
			GUID(#88A05C00, #F000, #11CE, &
			  CHAR('83'X)//CHAR('50'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))
		TYPE (GUID), PARAMETER :: IID_IFolderViewOC = &
			GUID(#9BA05970, #F6A8, #11CF, &
			  CHAR('A4'X)//CHAR('42'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('8F'X)//CHAR('39'X))
		TYPE (GUID), PARAMETER :: IID_Folder = &
			GUID(#BBCBDE60, #C3FF, #11CE, &
			  CHAR('83'X)//CHAR('50'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))
		TYPE (GUID), PARAMETER :: IID_IWebBrowser2 = &
			GUID(#D30C1661, #CDAF, #11D0, &
			  CHAR('8A'X)//CHAR('3E'X)//CHAR('00'X)//CHAR('C0'X)// &
			  CHAR('4F'X)//CHAR('C9'X)//CHAR('E2'X)//CHAR('6E'X))
		TYPE (GUID), PARAMETER :: IID_IShellDispatch = &
			GUID(#D8F015C0, #C278, #11CE, &
			  CHAR('A4'X)//CHAR('9E'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))
		TYPE (GUID), PARAMETER :: IID_IShellFolderViewDual = &
			GUID(#E7A1AF80, #4D96, #11CF, &
			  CHAR('96'X)//CHAR('0C'X)//CHAR('00'X)//CHAR('80'X)// &
			  CHAR('C7'X)//CHAR('F4'X)//CHAR('EE'X)//CHAR('85'X))
		TYPE (GUID), PARAMETER :: IID_IWebBrowser = &
			GUID(#EAB22AC1, #30C1, #11CF, &
			  CHAR('A7'X)//CHAR('EB'X)//CHAR('00'X)//CHAR('00'X)// &
			  CHAR('C0'X)//CHAR('5B'X)//CHAR('AE'X)//CHAR('0B'X))
		TYPE (GUID), PARAMETER :: IID_FolderItem = &
			GUID(#FAC32C80, #CBE4, #11CE, &
			  CHAR('83'X)//CHAR('50'X)//CHAR('44'X)//CHAR('45'X)// &
			  CHAR('53'X)//CHAR('54'X)//CHAR('00'X)//CHAR('00'X))

		! Enums		
		! CommandStateChangeConstants (Constants for WebBrowser CommandStateChange)
			INTEGER, PARAMETER ::	CSC_UPDATECOMMANDS = -1	! Command Change
			INTEGER, PARAMETER ::	CSC_NAVIGATEFORWARD = 1	! Navigate Forward
			INTEGER, PARAMETER ::	CSC_NAVIGATEBACK = 2	! Navigate Back
		! OLECMDEXECOPT 
			INTEGER, PARAMETER ::	OLECMDEXECOPT_DODEFAULT = 0	
			INTEGER, PARAMETER ::	OLECMDEXECOPT_PROMPTUSER = 1	
			INTEGER, PARAMETER ::	OLECMDEXECOPT_DONTPROMPTUSER = 2	
			INTEGER, PARAMETER ::	OLECMDEXECOPT_SHOWHELP = 3	
		! OLECMDF 
			INTEGER, PARAMETER ::	OLECMDF_SUPPORTED = 1	
			INTEGER, PARAMETER ::	OLECMDF_ENABLED = 2	
			INTEGER, PARAMETER ::	OLECMDF_LATCHED = 4	
			INTEGER, PARAMETER ::	OLECMDF_NINCHED = 8	
		! OLECMDID 
			INTEGER, PARAMETER ::	OLECMDID_OPEN = 1	
			INTEGER, PARAMETER ::	OLECMDID_NEW = 2	
			INTEGER, PARAMETER ::	OLECMDID_SAVE = 3	
			INTEGER, PARAMETER ::	OLECMDID_SAVEAS = 4	
			INTEGER, PARAMETER ::	OLECMDID_SAVECOPYAS = 5	
			INTEGER, PARAMETER ::	OLECMDID_PRINT = 6	
			INTEGER, PARAMETER ::	OLECMDID_PRINTPREVIEW = 7	
			INTEGER, PARAMETER ::	OLECMDID_PAGESETUP = 8	
			INTEGER, PARAMETER ::	OLECMDID_SPELL = 9	
			INTEGER, PARAMETER ::	OLECMDID_PROPERTIES = 10	
			INTEGER, PARAMETER ::	OLECMDID_CUT = 11	
			INTEGER, PARAMETER ::	OLECMDID_COPY = 12	
			INTEGER, PARAMETER ::	OLECMDID_PASTE = 13	
			INTEGER, PARAMETER ::	OLECMDID_PASTESPECIAL = 14	
			INTEGER, PARAMETER ::	OLECMDID_UNDO = 15	
			INTEGER, PARAMETER ::	OLECMDID_REDO = 16	
			INTEGER, PARAMETER ::	OLECMDID_SELECTALL = 17	
			INTEGER, PARAMETER ::	OLECMDID_CLEARSELECTION = 18	
			INTEGER, PARAMETER ::	OLECMDID_ZOOM = 19	
			INTEGER, PARAMETER ::	OLECMDID_GETZOOMRANGE = 20	
			INTEGER, PARAMETER ::	OLECMDID_UPDATECOMMANDS = 21	
			INTEGER, PARAMETER ::	OLECMDID_REFRESH = 22	
			INTEGER, PARAMETER ::	OLECMDID_STOP = 23	
			INTEGER, PARAMETER ::	OLECMDID_HIDETOOLBARS = 24	
			INTEGER, PARAMETER ::	OLECMDID_SETPROGRESSMAX = 25	
			INTEGER, PARAMETER ::	OLECMDID_SETPROGRESSPOS = 26	
			INTEGER, PARAMETER ::	OLECMDID_SETPROGRESSTEXT = 27	
			INTEGER, PARAMETER ::	OLECMDID_SETTITLE = 28	
			INTEGER, PARAMETER ::	OLECMDID_SETDOWNLOADSTATE = 29	
			INTEGER, PARAMETER ::	OLECMDID_STOPDOWNLOAD = 30	
			INTEGER, PARAMETER ::	OLECMDID_ONTOOLBARACTIVATED = 31	
			INTEGER, PARAMETER ::	OLECMDID_FIND = 32	
			INTEGER, PARAMETER ::	OLECMDID_DELETE = 33	
			INTEGER, PARAMETER ::	OLECMDID_HTTPEQUIV = 34	
			INTEGER, PARAMETER ::	OLECMDID_HTTPEQUIV_DONE = 35	
			INTEGER, PARAMETER ::	OLECMDID_ENABLE_INTERACTION = 36	
			INTEGER, PARAMETER ::	OLECMDID_ONUNLOAD = 37	
			INTEGER, PARAMETER ::	OLECMDID_PROPERTYBAG2 = 38	
			INTEGER, PARAMETER ::	OLECMDID_PREREFRESH = 39	
		! ShellFolderViewOptions (Constants for ViewOptions)
			INTEGER, PARAMETER ::	SFVVO_SHOWALLOBJECTS = 1	! Show All Objects
			INTEGER, PARAMETER ::	SFVVO_SHOWEXTENSIONS = 2	! Show File Extensions
			INTEGER, PARAMETER ::	SFVVO_SHOWCOMPCOLOR = 8	! Color encode Compressed files
			INTEGER, PARAMETER ::	SFVVO_SHOWSYSFILES = 32	! Show System Files
			INTEGER, PARAMETER ::	SFVVO_WIN95CLASSIC = 64	! Use Windows 95 UI settings
			INTEGER, PARAMETER ::	SFVVO_DOUBLECLICKINWEBVIEW = 128	! User needs to double click in web View
			INTEGER, PARAMETER ::	SFVVO_DESKTOPHTML = 512	! Is Desktop HTML enabled
		! ShellSpecialFolderConstants (Constants for Special Folders for open/Explore)
			INTEGER, PARAMETER ::	ssfDESKTOP = 0	! Special Folder DESKTOP
			INTEGER, PARAMETER ::	ssfPROGRAMS = 2	! Special Folder PROGRAMS
			INTEGER, PARAMETER ::	ssfCONTROLS = 3	! Special Folder CONTROLS
			INTEGER, PARAMETER ::	ssfPRINTERS = 4	! Special Folder PRINTERS
			INTEGER, PARAMETER ::	ssfPERSONAL = 5	! Special Folder PERSONAL
			INTEGER, PARAMETER ::	ssfFAVORITES = 6	! Special Folder FAVORITES
			INTEGER, PARAMETER ::	ssfSTARTUP = 7	! Special Folder STARTUP
			INTEGER, PARAMETER ::	ssfRECENT = 8	! Special Folder RECENT
			INTEGER, PARAMETER ::	ssfSENDTO = 9	! Special Folder SENDTO
			INTEGER, PARAMETER ::	ssfBITBUCKET = 10	! Special Folder BITBUCKET
			INTEGER, PARAMETER ::	ssfSTARTMENU = 11	! Special Folder STARTMENU
			INTEGER, PARAMETER ::	ssfDESKTOPDIRECTORY = 16	! Special Folder DESKTOPDIRECTORY
			INTEGER, PARAMETER ::	ssfDRIVES = 17	! Special Folder DRIVES
			INTEGER, PARAMETER ::	ssfNETWORK = 18	! Special Folder NETWORK
			INTEGER, PARAMETER ::	ssfNETHOOD = 19	! Special Folder NETHOOD
			INTEGER, PARAMETER ::	ssfFONTS = 20	! Special Folder FONTS
			INTEGER, PARAMETER ::	ssfTEMPLATES = 21	! Special Folder TEMPLATES
		! ShellWindowFindWindowOptions (Options for ShellWindows FindWindow)
			INTEGER, PARAMETER ::	SWFO_NEEDDISPATCH = 1	! Need Dispatch
			INTEGER, PARAMETER ::	SWFO_INCLUDEPENDING = 2	! Include Pending
			INTEGER, PARAMETER ::	SWFO_COOKIEPASSED = 4	! Cookie Passed
		! ShellWindowTypeConstants (Constants for ShellWindows registration)
			INTEGER, PARAMETER ::	SWC_EXPLORER = 0	! Explorer
			INTEGER, PARAMETER ::	SWC_BROWSER = 1	! Various Browsing Windows
			INTEGER, PARAMETER ::	SWC_3RDPARTY = 2	! 3rd Party Browsers
			INTEGER, PARAMETER ::	SWC_CALLBACK = 4	! Creation Callback
		! tagREADYSTATE 
			INTEGER, PARAMETER ::	READYSTATE_UNINITIALIZED = 0	
			INTEGER, PARAMETER ::	READYSTATE_LOADING = 1	
			INTEGER, PARAMETER ::	READYSTATE_LOADED = 2	
			INTEGER, PARAMETER ::	READYSTATE_INTERACTIVE = 3	
			INTEGER, PARAMETER ::	READYSTATE_COMPLETE = 4	

		! Interfaces
		INTERFACE
			!Copy Items to this folder.
 			INTEGER*4 FUNCTION Folder_CopyHere($OBJECT, vItem, vOptions)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vItem	
				!DEC$ ATTRIBUTES VALUE	:: vItem
				TYPE (VARIANT), INTENT(IN)	:: vOptions	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vOptions
			!DEC$ ATTRIBUTES STDCALL :: Folder_CopyHere
			END FUNCTION Folder_CopyHere
		END INTERFACE
		POINTER(Folder_CopyHere_PTR, Folder_CopyHere)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION Folder_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: Folder_GetApplication
			END FUNCTION Folder_GetApplication
		END INTERFACE
		POINTER(Folder_GetApplication_PTR, Folder_GetApplication)	! routine pointer
		INTERFACE
			!Get the details about an item.
 			INTEGER*4 FUNCTION Folder_GetDetailsOf($OBJECT, vItem, iColumn, pbs)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vItem	
				!DEC$ ATTRIBUTES VALUE	:: vItem
				INTEGER, INTENT(IN)	:: iColumn	
				!DEC$ ATTRIBUTES VALUE	:: iColumn
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: Folder_GetDetailsOf
			END FUNCTION Folder_GetDetailsOf
		END INTERFACE
		POINTER(Folder_GetDetailsOf_PTR, Folder_GetDetailsOf)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION Folder_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: Folder_GetParent
			END FUNCTION Folder_GetParent
		END INTERFACE
		POINTER(Folder_GetParent_PTR, Folder_GetParent)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION Folder_GetParentFolder($OBJECT, ppsf)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppsf	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppsf
			!DEC$ ATTRIBUTES STDCALL :: Folder_GetParentFolder
			END FUNCTION Folder_GetParentFolder
		END INTERFACE
		POINTER(Folder_GetParentFolder_PTR, Folder_GetParentFolder)	! routine pointer
		INTERFACE
			!Get the display name for the window
 			INTEGER*4 FUNCTION Folder_GetTitle($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: Folder_GetTitle
			END FUNCTION Folder_GetTitle
		END INTERFACE
		POINTER(Folder_GetTitle_PTR, Folder_GetTitle)	! routine pointer
		INTERFACE
			!The collection of Items in folder
 			INTEGER*4 FUNCTION Folder_Items($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: Folder_Items
			END FUNCTION Folder_Items
		END INTERFACE
		POINTER(Folder_Items_PTR, Folder_Items)	! routine pointer
		INTERFACE
			!Move Items to this folder.
 			INTEGER*4 FUNCTION Folder_MoveHere($OBJECT, vItem, vOptions)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vItem	
				!DEC$ ATTRIBUTES VALUE	:: vItem
				TYPE (VARIANT), INTENT(IN)	:: vOptions	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vOptions
			!DEC$ ATTRIBUTES STDCALL :: Folder_MoveHere
			END FUNCTION Folder_MoveHere
		END INTERFACE
		POINTER(Folder_MoveHere_PTR, Folder_MoveHere)	! routine pointer
		INTERFACE
			!Create a new sub folder in this folder.
 			INTEGER*4 FUNCTION Folder_NewFolder($OBJECT, bName, vOptions)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: bName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: bName
				TYPE (VARIANT), INTENT(IN)	:: vOptions	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vOptions
			!DEC$ ATTRIBUTES STDCALL :: Folder_NewFolder
			END FUNCTION Folder_NewFolder
		END INTERFACE
		POINTER(Folder_NewFolder_PTR, Folder_NewFolder)	! routine pointer
		INTERFACE
			!Parse the name to get an item.
 			INTEGER*4 FUNCTION Folder_ParseName($OBJECT, bName, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: bName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: bName
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: Folder_ParseName
			END FUNCTION Folder_ParseName
		END INTERFACE
		POINTER(Folder_ParseName_PTR, Folder_ParseName)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION FolderItem_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetApplication
			END FUNCTION FolderItem_GetApplication
		END INTERFACE
		POINTER(FolderItem_GetApplication_PTR, FolderItem_GetApplication)	! routine pointer
		INTERFACE
			!If item is a folder return folder object
 			INTEGER*4 FUNCTION FolderItem_GetGetFolder($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetGetFolder
			END FUNCTION FolderItem_GetGetFolder
		END INTERFACE
		POINTER(FolderItem_GetGetFolder_PTR, FolderItem_GetGetFolder)	! routine pointer
		INTERFACE
			!If item is link return link object
 			INTEGER*4 FUNCTION FolderItem_GetGetLink($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetGetLink
			END FUNCTION FolderItem_GetGetLink
		END INTERFACE
		POINTER(FolderItem_GetGetLink_PTR, FolderItem_GetGetLink)	! routine pointer
		INTERFACE
			!Is the item browsable?
 			INTEGER*4 FUNCTION FolderItem_GetIsBrowsable($OBJECT, pb)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetIsBrowsable
			END FUNCTION FolderItem_GetIsBrowsable
		END INTERFACE
		POINTER(FolderItem_GetIsBrowsable_PTR, FolderItem_GetIsBrowsable)	! routine pointer
		INTERFACE
			!Is the item a file system object?
 			INTEGER*4 FUNCTION FolderItem_GetIsFileSystem($OBJECT, pb)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetIsFileSystem
			END FUNCTION FolderItem_GetIsFileSystem
		END INTERFACE
		POINTER(FolderItem_GetIsFileSystem_PTR, FolderItem_GetIsFileSystem)	! routine pointer
		INTERFACE
			!Is the item a Folder?
 			INTEGER*4 FUNCTION FolderItem_GetIsFolder($OBJECT, pb)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetIsFolder
			END FUNCTION FolderItem_GetIsFolder
		END INTERFACE
		POINTER(FolderItem_GetIsFolder_PTR, FolderItem_GetIsFolder)	! routine pointer
		INTERFACE
			!Is the item a link?
 			INTEGER*4 FUNCTION FolderItem_GetIsLink($OBJECT, pb)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetIsLink
			END FUNCTION FolderItem_GetIsLink
		END INTERFACE
		POINTER(FolderItem_GetIsLink_PTR, FolderItem_GetIsLink)	! routine pointer
		INTERFACE
			!Modification Date?
 			INTEGER*4 FUNCTION FolderItem_GetModifyDate($OBJECT, pdt)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pdt	! Unsupported type
				!DEC$ ATTRIBUTES REFERENCE	:: pdt
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetModifyDate
			END FUNCTION FolderItem_GetModifyDate
		END INTERFACE
		POINTER(FolderItem_GetModifyDate_PTR, FolderItem_GetModifyDate)	! routine pointer
		INTERFACE
			!Get display name for item
 			INTEGER*4 FUNCTION FolderItem_GetName($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetName
			END FUNCTION FolderItem_GetName
		END INTERFACE
		POINTER(FolderItem_GetName_PTR, FolderItem_GetName)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION FolderItem_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetParent
			END FUNCTION FolderItem_GetParent
		END INTERFACE
		POINTER(FolderItem_GetParent_PTR, FolderItem_GetParent)	! routine pointer
		INTERFACE
			!Get the pathname to the item
 			INTEGER*4 FUNCTION FolderItem_GetPath($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetPath
			END FUNCTION FolderItem_GetPath
		END INTERFACE
		POINTER(FolderItem_GetPath_PTR, FolderItem_GetPath)	! routine pointer
		INTERFACE
			!Size
 			INTEGER*4 FUNCTION FolderItem_GetSize($OBJECT, pul)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pul	
				!DEC$ ATTRIBUTES REFERENCE	:: pul
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetSize
			END FUNCTION FolderItem_GetSize
		END INTERFACE
		POINTER(FolderItem_GetSize_PTR, FolderItem_GetSize)	! routine pointer
		INTERFACE
			!Type
 			INTEGER*4 FUNCTION FolderItem_GetType($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_GetType
			END FUNCTION FolderItem_GetType
		END INTERFACE
		POINTER(FolderItem_GetType_PTR, FolderItem_GetType)	! routine pointer
		INTERFACE
			!Execute a command on the item
 			INTEGER*4 FUNCTION FolderItem_InvokeVerb($OBJECT, vVerb)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vVerb	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vVerb
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_InvokeVerb
			END FUNCTION FolderItem_InvokeVerb
		END INTERFACE
		POINTER(FolderItem_InvokeVerb_PTR, FolderItem_InvokeVerb)	! routine pointer
		INTERFACE
			!Modification Date?
 			INTEGER*4 FUNCTION FolderItem_SetModifyDate($OBJECT, pdt)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pdt	! Unsupported type
				!DEC$ ATTRIBUTES VALUE	:: pdt
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_SetModifyDate
			END FUNCTION FolderItem_SetModifyDate
		END INTERFACE
		POINTER(FolderItem_SetModifyDate_PTR, FolderItem_SetModifyDate)	! routine pointer
		INTERFACE
			!Get display name for item
 			INTEGER*4 FUNCTION FolderItem_SetName($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_SetName
			END FUNCTION FolderItem_SetName
		END INTERFACE
		POINTER(FolderItem_SetName_PTR, FolderItem_SetName)	! routine pointer
		INTERFACE
			!Get the list of verbs for the object
 			INTEGER*4 FUNCTION FolderItem_Verbs($OBJECT, ppfic)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppfic	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppfic
			!DEC$ ATTRIBUTES STDCALL :: FolderItem_Verbs
			END FUNCTION FolderItem_Verbs
		END INTERFACE
		POINTER(FolderItem_Verbs_PTR, FolderItem_Verbs)	! routine pointer
		INTERFACE
			!Enumerates the figures
 			INTEGER*4 FUNCTION FolderItems__NewEnum($OBJECT, ppunk)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppunk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: ppunk
			!DEC$ ATTRIBUTES STDCALL :: FolderItems__NewEnum
			END FUNCTION FolderItems__NewEnum
		END INTERFACE
		POINTER(FolderItems__NewEnum_PTR, FolderItems__NewEnum)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION FolderItems_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItems_GetApplication
			END FUNCTION FolderItems_GetApplication
		END INTERFACE
		POINTER(FolderItems_GetApplication_PTR, FolderItems_GetApplication)	! routine pointer
		INTERFACE
			!Get count of items in the folder
 			INTEGER*4 FUNCTION FolderItems_GetCount($OBJECT, plCount)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plCount	
				!DEC$ ATTRIBUTES REFERENCE	:: plCount
			!DEC$ ATTRIBUTES STDCALL :: FolderItems_GetCount
			END FUNCTION FolderItems_GetCount
		END INTERFACE
		POINTER(FolderItems_GetCount_PTR, FolderItems_GetCount)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION FolderItems_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItems_GetParent
			END FUNCTION FolderItems_GetParent
		END INTERFACE
		POINTER(FolderItems_GetParent_PTR, FolderItems_GetParent)	! routine pointer
		INTERFACE
			!Return the figure for the given index
 			INTEGER*4 FUNCTION FolderItems_Item($OBJECT, index, ppid)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: index	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: index
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItems_Item
			END FUNCTION FolderItems_Item
		END INTERFACE
		POINTER(FolderItems_Item_PTR, FolderItems_Item)	! routine pointer
		INTERFACE
			!Execute the verb
 			INTEGER*4 FUNCTION FolderItemVerb_DoIt($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerb_DoIt
			END FUNCTION FolderItemVerb_DoIt
		END INTERFACE
		POINTER(FolderItemVerb_DoIt_PTR, FolderItemVerb_DoIt)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION FolderItemVerb_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerb_GetApplication
			END FUNCTION FolderItemVerb_GetApplication
		END INTERFACE
		POINTER(FolderItemVerb_GetApplication_PTR, FolderItemVerb_GetApplication)	! routine pointer
		INTERFACE
			!Get display name for item
 			INTEGER*4 FUNCTION FolderItemVerb_GetName($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerb_GetName
			END FUNCTION FolderItemVerb_GetName
		END INTERFACE
		POINTER(FolderItemVerb_GetName_PTR, FolderItemVerb_GetName)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION FolderItemVerb_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerb_GetParent
			END FUNCTION FolderItemVerb_GetParent
		END INTERFACE
		POINTER(FolderItemVerb_GetParent_PTR, FolderItemVerb_GetParent)	! routine pointer
		INTERFACE
			!Enumerates the figures
 			INTEGER*4 FUNCTION FolderItemVerbs__NewEnum($OBJECT, ppunk)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppunk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: ppunk
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerbs__NewEnum
			END FUNCTION FolderItemVerbs__NewEnum
		END INTERFACE
		POINTER(FolderItemVerbs__NewEnum_PTR, FolderItemVerbs__NewEnum)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION FolderItemVerbs_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerbs_GetApplication
			END FUNCTION FolderItemVerbs_GetApplication
		END INTERFACE
		POINTER(FolderItemVerbs_GetApplication_PTR, FolderItemVerbs_GetApplication)	! routine pointer
		INTERFACE
			!Get count of open folder windows
 			INTEGER*4 FUNCTION FolderItemVerbs_GetCount($OBJECT, plCount)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plCount	
				!DEC$ ATTRIBUTES REFERENCE	:: plCount
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerbs_GetCount
			END FUNCTION FolderItemVerbs_GetCount
		END INTERFACE
		POINTER(FolderItemVerbs_GetCount_PTR, FolderItemVerbs_GetCount)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION FolderItemVerbs_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerbs_GetParent
			END FUNCTION FolderItemVerbs_GetParent
		END INTERFACE
		POINTER(FolderItemVerbs_GetParent_PTR, FolderItemVerbs_GetParent)	! routine pointer
		INTERFACE
			!Return the specified verb
 			INTEGER*4 FUNCTION FolderItemVerbs_Item($OBJECT, index, ppid)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: index	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: index
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: FolderItemVerbs_Item
			END FUNCTION FolderItemVerbs_Item
		END INTERFACE
		POINTER(FolderItemVerbs_Item_PTR, FolderItemVerbs_Item)	! routine pointer
		INTERFACE
			!Set the ShellFolderView object to monitor events of.
 			INTEGER*4 FUNCTION IFolderViewOC_SetFolderView($OBJECT, pDisp)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pDisp	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: pDisp
			!DEC$ ATTRIBUTES STDCALL :: IFolderViewOC_SetFolderView
			END FUNCTION IFolderViewOC_SetFolderView
		END INTERFACE
		POINTER(IFolderViewOC_SetFolderView_PTR, IFolderViewOC_SetFolderView)	! routine pointer
		INTERFACE
			!Browse the name space for a Folder
 			INTEGER*4 FUNCTION IShellDispatch_BrowseForFolder($OBJECT, HWND, Title, Options, RootFolder, ppsdf)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: HWND	
				!DEC$ ATTRIBUTES VALUE	:: HWND
				INTEGER*4, INTENT(IN)	:: Title	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: Title
				INTEGER*4, INTENT(IN)	:: Options	
				!DEC$ ATTRIBUTES VALUE	:: Options
				TYPE (VARIANT), INTENT(IN)	:: RootFolder	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: RootFolder
				INTEGER*4, INTENT(OUT)	:: ppsdf	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppsdf
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_BrowseForFolder
			END FUNCTION IShellDispatch_BrowseForFolder
		END INTERFACE
		POINTER(IShellDispatch_BrowseForFolder_PTR, IShellDispatch_BrowseForFolder)	! routine pointer
		INTERFACE
			!Cascade Windows
 			INTEGER*4 FUNCTION IShellDispatch_CascadeWindows($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_CascadeWindows
			END FUNCTION IShellDispatch_CascadeWindows
		END INTERFACE
		POINTER(IShellDispatch_CascadeWindows_PTR, IShellDispatch_CascadeWindows)	! routine pointer
		INTERFACE
			!Run a controlpanelItem
 			INTEGER*4 FUNCTION IShellDispatch_ControlPanelItem($OBJECT, szDir)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: szDir	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szDir
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_ControlPanelItem
			END FUNCTION IShellDispatch_ControlPanelItem
		END INTERFACE
		POINTER(IShellDispatch_ControlPanelItem_PTR, IShellDispatch_ControlPanelItem)	! routine pointer
		INTERFACE
			!Eject the pc
 			INTEGER*4 FUNCTION IShellDispatch_EjectPC($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_EjectPC
			END FUNCTION IShellDispatch_EjectPC
		END INTERFACE
		POINTER(IShellDispatch_EjectPC_PTR, IShellDispatch_EjectPC)	! routine pointer
		INTERFACE
			!Explore a folder
 			INTEGER*4 FUNCTION IShellDispatch_Explore($OBJECT, vDir)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vDir	
				!DEC$ ATTRIBUTES VALUE	:: vDir
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_Explore
			END FUNCTION IShellDispatch_Explore
		END INTERFACE
		POINTER(IShellDispatch_Explore_PTR, IShellDispatch_Explore)	! routine pointer
		INTERFACE
			!Bring up the file run
 			INTEGER*4 FUNCTION IShellDispatch_FileRun($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_FileRun
			END FUNCTION IShellDispatch_FileRun
		END INTERFACE
		POINTER(IShellDispatch_FileRun_PTR, IShellDispatch_FileRun)	! routine pointer
		INTERFACE
			!Find a computer
 			INTEGER*4 FUNCTION IShellDispatch_FindComputer($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_FindComputer
			END FUNCTION IShellDispatch_FindComputer
		END INTERFACE
		POINTER(IShellDispatch_FindComputer_PTR, IShellDispatch_FindComputer)	! routine pointer
		INTERFACE
			!Find Files
 			INTEGER*4 FUNCTION IShellDispatch_FindFiles($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_FindFiles
			END FUNCTION IShellDispatch_FindFiles
		END INTERFACE
		POINTER(IShellDispatch_FindFiles_PTR, IShellDispatch_FindFiles)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION IShellDispatch_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_GetApplication
			END FUNCTION IShellDispatch_GetApplication
		END INTERFACE
		POINTER(IShellDispatch_GetApplication_PTR, IShellDispatch_GetApplication)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION IShellDispatch_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_GetParent
			END FUNCTION IShellDispatch_GetParent
		END INTERFACE
		POINTER(IShellDispatch_GetParent_PTR, IShellDispatch_GetParent)	! routine pointer
		INTERFACE
			!Display shell help
 			INTEGER*4 FUNCTION IShellDispatch_Help($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_Help
			END FUNCTION IShellDispatch_Help
		END INTERFACE
		POINTER(IShellDispatch_Help_PTR, IShellDispatch_Help)	! routine pointer
		INTERFACE
			!Minimize all windows
 			INTEGER*4 FUNCTION IShellDispatch_MinimizeAll($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_MinimizeAll
			END FUNCTION IShellDispatch_MinimizeAll
		END INTERFACE
		POINTER(IShellDispatch_MinimizeAll_PTR, IShellDispatch_MinimizeAll)	! routine pointer
		INTERFACE
			!Enum the contents of a folder
 			INTEGER*4 FUNCTION IShellDispatch_NameSpace($OBJECT, vDir, ppsdf)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vDir	
				!DEC$ ATTRIBUTES VALUE	:: vDir
				INTEGER*4, INTENT(OUT)	:: ppsdf	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppsdf
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_NameSpace
			END FUNCTION IShellDispatch_NameSpace
		END INTERFACE
		POINTER(IShellDispatch_NameSpace_PTR, IShellDispatch_NameSpace)	! routine pointer
		INTERFACE
			!Open a folder
 			INTEGER*4 FUNCTION IShellDispatch_Open($OBJECT, vDir)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vDir	
				!DEC$ ATTRIBUTES VALUE	:: vDir
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_Open
			END FUNCTION IShellDispatch_Open
		END INTERFACE
		POINTER(IShellDispatch_Open_PTR, IShellDispatch_Open)	! routine pointer
		INTERFACE
			!Refresh the menu
 			INTEGER*4 FUNCTION IShellDispatch_RefreshMenu($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_RefreshMenu
			END FUNCTION IShellDispatch_RefreshMenu
		END INTERFACE
		POINTER(IShellDispatch_RefreshMenu_PTR, IShellDispatch_RefreshMenu)	! routine pointer
		INTERFACE
			!Bring up the Set time dialog
 			INTEGER*4 FUNCTION IShellDispatch_SetTime($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_SetTime
			END FUNCTION IShellDispatch_SetTime
		END INTERFACE
		POINTER(IShellDispatch_SetTime_PTR, IShellDispatch_SetTime)	! routine pointer
		INTERFACE
			!Exit Windows
 			INTEGER*4 FUNCTION IShellDispatch_ShutdownWindows($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_ShutdownWindows
			END FUNCTION IShellDispatch_ShutdownWindows
		END INTERFACE
		POINTER(IShellDispatch_ShutdownWindows_PTR, IShellDispatch_ShutdownWindows)	! routine pointer
		INTERFACE
			!Suspend the pc
 			INTEGER*4 FUNCTION IShellDispatch_Suspend($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_Suspend
			END FUNCTION IShellDispatch_Suspend
		END INTERFACE
		POINTER(IShellDispatch_Suspend_PTR, IShellDispatch_Suspend)	! routine pointer
		INTERFACE
			!Tile windows horizontally
 			INTEGER*4 FUNCTION IShellDispatch_TileHorizontally($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_TileHorizontally
			END FUNCTION IShellDispatch_TileHorizontally
		END INTERFACE
		POINTER(IShellDispatch_TileHorizontally_PTR, IShellDispatch_TileHorizontally)	! routine pointer
		INTERFACE
			!Tile windows vertically
 			INTEGER*4 FUNCTION IShellDispatch_TileVertically($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_TileVertically
			END FUNCTION IShellDispatch_TileVertically
		END INTERFACE
		POINTER(IShellDispatch_TileVertically_PTR, IShellDispatch_TileVertically)	! routine pointer
		INTERFACE
			!Handle Tray properties
 			INTEGER*4 FUNCTION IShellDispatch_TrayProperties($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_TrayProperties
			END FUNCTION IShellDispatch_TrayProperties
		END INTERFACE
		POINTER(IShellDispatch_TrayProperties_PTR, IShellDispatch_TrayProperties)	! routine pointer
		INTERFACE
			!Undo Minimize All
 			INTEGER*4 FUNCTION IShellDispatch_UndoMinimizeALL($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_UndoMinimizeALL
			END FUNCTION IShellDispatch_UndoMinimizeALL
		END INTERFACE
		POINTER(IShellDispatch_UndoMinimizeALL_PTR, IShellDispatch_UndoMinimizeALL)	! routine pointer
		INTERFACE
			!The collection of open folder windows
 			INTEGER*4 FUNCTION IShellDispatch_Windows($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellDispatch_Windows
			END FUNCTION IShellDispatch_Windows
		END INTERFACE
		POINTER(IShellDispatch_Windows_PTR, IShellDispatch_Windows)	! routine pointer
		INTERFACE
			!Get Application object
 			INTEGER*4 FUNCTION IShellFolderViewDual_GetApplication($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_GetApplication
			END FUNCTION IShellFolderViewDual_GetApplication
		END INTERFACE
		POINTER(IShellFolderViewDual_GetApplication_PTR, IShellFolderViewDual_GetApplication)	! routine pointer
		INTERFACE
			!The currently focused item in the folder
 			INTEGER*4 FUNCTION IShellFolderViewDual_GetFocusedItem($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_GetFocusedItem
			END FUNCTION IShellFolderViewDual_GetFocusedItem
		END INTERFACE
		POINTER(IShellFolderViewDual_GetFocusedItem_PTR, IShellFolderViewDual_GetFocusedItem)	! routine pointer
		INTERFACE
			!Get the folder being viewed
 			INTEGER*4 FUNCTION IShellFolderViewDual_GetFolder($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_GetFolder
			END FUNCTION IShellFolderViewDual_GetFolder
		END INTERFACE
		POINTER(IShellFolderViewDual_GetFolder_PTR, IShellFolderViewDual_GetFolder)	! routine pointer
		INTERFACE
			!Get Parent object
 			INTEGER*4 FUNCTION IShellFolderViewDual_GetParent($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_GetParent
			END FUNCTION IShellFolderViewDual_GetParent
		END INTERFACE
		POINTER(IShellFolderViewDual_GetParent_PTR, IShellFolderViewDual_GetParent)	! routine pointer
		INTERFACE
			!Returns the scripting automation model.
 			INTEGER*4 FUNCTION IShellFolderViewDual_GetScript($OBJECT, ppDisp)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_GetScript
			END FUNCTION IShellFolderViewDual_GetScript
		END INTERFACE
		POINTER(IShellFolderViewDual_GetScript_PTR, IShellFolderViewDual_GetScript)	! routine pointer
		INTERFACE
			!Returns the view options for showing a folder.
 			INTEGER*4 FUNCTION IShellFolderViewDual_GetViewOptions($OBJECT, plViewOptions)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plViewOptions	
				!DEC$ ATTRIBUTES REFERENCE	:: plViewOptions
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_GetViewOptions
			END FUNCTION IShellFolderViewDual_GetViewOptions
		END INTERFACE
		POINTER(IShellFolderViewDual_GetViewOptions_PTR, IShellFolderViewDual_GetViewOptions)	! routine pointer
		INTERFACE
			!Show items menu and return command selected
 			INTEGER*4 FUNCTION IShellFolderViewDual_PopupItemMenu($OBJECT, pfi, vx, vy, pbs)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pfi	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pfi
				TYPE (VARIANT), INTENT(IN)	:: vx	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vx
				TYPE (VARIANT), INTENT(IN)	:: vy	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vy
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_PopupItemMenu
			END FUNCTION IShellFolderViewDual_PopupItemMenu
		END INTERFACE
		POINTER(IShellFolderViewDual_PopupItemMenu_PTR, IShellFolderViewDual_PopupItemMenu)	! routine pointer
		INTERFACE
			!The collection of Selected Items in folder
 			INTEGER*4 FUNCTION IShellFolderViewDual_SelectedItems($OBJECT, ppid)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_SelectedItems
			END FUNCTION IShellFolderViewDual_SelectedItems
		END INTERFACE
		POINTER(IShellFolderViewDual_SelectedItems_PTR, IShellFolderViewDual_SelectedItems)	! routine pointer
		INTERFACE
			!Select the item
 			INTEGER*4 FUNCTION IShellFolderViewDual_SelectItem($OBJECT, pvfi, dwFlags)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: pvfi	
				!DEC$ ATTRIBUTES REFERENCE	:: pvfi
				INTEGER, INTENT(IN)	:: dwFlags	
				!DEC$ ATTRIBUTES VALUE	:: dwFlags
			!DEC$ ATTRIBUTES STDCALL :: IShellFolderViewDual_SelectItem
			END FUNCTION IShellFolderViewDual_SelectItem
		END INTERFACE
		POINTER(IShellFolderViewDual_SelectItem_PTR, IShellFolderViewDual_SelectItem)	! routine pointer
		INTERFACE
			!Get the arguments for the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetArguments($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetArguments
			END FUNCTION IShellLinkDual_GetArguments
		END INTERFACE
		POINTER(IShellLinkDual_GetArguments_PTR, IShellLinkDual_GetArguments)	! routine pointer
		INTERFACE
			!Get the description for the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetDescription($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetDescription
			END FUNCTION IShellLinkDual_GetDescription
		END INTERFACE
		POINTER(IShellLinkDual_GetDescription_PTR, IShellLinkDual_GetDescription)	! routine pointer
		INTERFACE
			!Get the Hotkey for the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetHotkey($OBJECT, piHK)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(OUT)	:: piHK	
				!DEC$ ATTRIBUTES REFERENCE	:: piHK
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetHotkey
			END FUNCTION IShellLinkDual_GetHotkey
		END INTERFACE
		POINTER(IShellLinkDual_GetHotkey_PTR, IShellLinkDual_GetHotkey)	! routine pointer
		INTERFACE
			!Get the IconLocation for the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetIconLocation($OBJECT, pbs, piIcon)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER, INTENT(OUT)	:: piIcon	
				!DEC$ ATTRIBUTES REFERENCE	:: piIcon
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetIconLocation
			END FUNCTION IShellLinkDual_GetIconLocation
		END INTERFACE
		POINTER(IShellLinkDual_GetIconLocation_PTR, IShellLinkDual_GetIconLocation)	! routine pointer
		INTERFACE
			!Get the path of the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetPath($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetPath
			END FUNCTION IShellLinkDual_GetPath
		END INTERFACE
		POINTER(IShellLinkDual_GetPath_PTR, IShellLinkDual_GetPath)	! routine pointer
		INTERFACE
			!Get the Show Command for the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetShowCommand($OBJECT, piShowCommand)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(OUT)	:: piShowCommand	
				!DEC$ ATTRIBUTES REFERENCE	:: piShowCommand
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetShowCommand
			END FUNCTION IShellLinkDual_GetShowCommand
		END INTERFACE
		POINTER(IShellLinkDual_GetShowCommand_PTR, IShellLinkDual_GetShowCommand)	! routine pointer
		INTERFACE
			!Get the working directory for the link
 			INTEGER*4 FUNCTION IShellLinkDual_GetWorkingDirectory($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_GetWorkingDirectory
			END FUNCTION IShellLinkDual_GetWorkingDirectory
		END INTERFACE
		POINTER(IShellLinkDual_GetWorkingDirectory_PTR, IShellLinkDual_GetWorkingDirectory)	! routine pointer
		INTERFACE
			!Tell the link to resolve itself
 			INTEGER*4 FUNCTION IShellLinkDual_Resolve($OBJECT, fFlags)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: fFlags	
				!DEC$ ATTRIBUTES VALUE	:: fFlags
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_Resolve
			END FUNCTION IShellLinkDual_Resolve
		END INTERFACE
		POINTER(IShellLinkDual_Resolve_PTR, IShellLinkDual_Resolve)	! routine pointer
		INTERFACE
			!Tell the link to save the changes
 			INTEGER*4 FUNCTION IShellLinkDual_Save($OBJECT, vWhere)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vWhere	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vWhere
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_Save
			END FUNCTION IShellLinkDual_Save
		END INTERFACE
		POINTER(IShellLinkDual_Save_PTR, IShellLinkDual_Save)	! routine pointer
		INTERFACE
			!Get the arguments for the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetArguments($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetArguments
			END FUNCTION IShellLinkDual_SetArguments
		END INTERFACE
		POINTER(IShellLinkDual_SetArguments_PTR, IShellLinkDual_SetArguments)	! routine pointer
		INTERFACE
			!Get the description for the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetDescription($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetDescription
			END FUNCTION IShellLinkDual_SetDescription
		END INTERFACE
		POINTER(IShellLinkDual_SetDescription_PTR, IShellLinkDual_SetDescription)	! routine pointer
		INTERFACE
			!Get the Hotkey for the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetHotkey($OBJECT, piHK)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: piHK	
				!DEC$ ATTRIBUTES VALUE	:: piHK
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetHotkey
			END FUNCTION IShellLinkDual_SetHotkey
		END INTERFACE
		POINTER(IShellLinkDual_SetHotkey_PTR, IShellLinkDual_SetHotkey)	! routine pointer
		INTERFACE
			!Set the IconLocation for the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetIconLocation($OBJECT, bs, iIcon)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: bs	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: bs
				INTEGER, INTENT(IN)	:: iIcon	
				!DEC$ ATTRIBUTES VALUE	:: iIcon
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetIconLocation
			END FUNCTION IShellLinkDual_SetIconLocation
		END INTERFACE
		POINTER(IShellLinkDual_SetIconLocation_PTR, IShellLinkDual_SetIconLocation)	! routine pointer
		INTERFACE
			!Get the path of the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetPath($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetPath
			END FUNCTION IShellLinkDual_SetPath
		END INTERFACE
		POINTER(IShellLinkDual_SetPath_PTR, IShellLinkDual_SetPath)	! routine pointer
		INTERFACE
			!Get the Show Command for the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetShowCommand($OBJECT, piShowCommand)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: piShowCommand	
				!DEC$ ATTRIBUTES VALUE	:: piShowCommand
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetShowCommand
			END FUNCTION IShellLinkDual_SetShowCommand
		END INTERFACE
		POINTER(IShellLinkDual_SetShowCommand_PTR, IShellLinkDual_SetShowCommand)	! routine pointer
		INTERFACE
			!Get the working directory for the link
 			INTEGER*4 FUNCTION IShellLinkDual_SetWorkingDirectory($OBJECT, pbs)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pbs
			!DEC$ ATTRIBUTES STDCALL :: IShellLinkDual_SetWorkingDirectory
			END FUNCTION IShellLinkDual_SetWorkingDirectory
		END INTERFACE
		POINTER(IShellLinkDual_SetWorkingDirectory_PTR, IShellLinkDual_SetWorkingDirectory)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_AddChannel($OBJECT, URL)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: URL
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_AddChannel
			END FUNCTION IShellUIHelper_AddChannel
		END INTERFACE
		POINTER(IShellUIHelper_AddChannel_PTR, IShellUIHelper_AddChannel)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_AddDesktopComponent($OBJECT, URL, Type, Left, Top, Width, Height)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: URL
				INTEGER*4, INTENT(IN)	:: Type	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: Type
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Left	
				!DEC$ ATTRIBUTES REFERENCE	:: Left
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Top	
				!DEC$ ATTRIBUTES REFERENCE	:: Top
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Width	
				!DEC$ ATTRIBUTES REFERENCE	:: Width
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Height	
				!DEC$ ATTRIBUTES REFERENCE	:: Height
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_AddDesktopComponent
			END FUNCTION IShellUIHelper_AddDesktopComponent
		END INTERFACE
		POINTER(IShellUIHelper_AddDesktopComponent_PTR, IShellUIHelper_AddDesktopComponent)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_AddFavorite($OBJECT, URL, Title)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: URL
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Title	
				!DEC$ ATTRIBUTES REFERENCE	:: Title
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_AddFavorite
			END FUNCTION IShellUIHelper_AddFavorite
		END INTERFACE
		POINTER(IShellUIHelper_AddFavorite_PTR, IShellUIHelper_AddFavorite)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_IsSubscribed($OBJECT, URL, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: URL
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_IsSubscribed
			END FUNCTION IShellUIHelper_IsSubscribed
		END INTERFACE
		POINTER(IShellUIHelper_IsSubscribed_PTR, IShellUIHelper_IsSubscribed)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_RefreshOfflineDesktop($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_RefreshOfflineDesktop
			END FUNCTION IShellUIHelper_RefreshOfflineDesktop
		END INTERFACE
		POINTER(IShellUIHelper_RefreshOfflineDesktop_PTR, IShellUIHelper_RefreshOfflineDesktop)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_ResetFirstBootMode($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_ResetFirstBootMode
			END FUNCTION IShellUIHelper_ResetFirstBootMode
		END INTERFACE
		POINTER(IShellUIHelper_ResetFirstBootMode_PTR, IShellUIHelper_ResetFirstBootMode)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IShellUIHelper_ResetSafeMode($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IShellUIHelper_ResetSafeMode
			END FUNCTION IShellUIHelper_ResetSafeMode
		END INTERFACE
		POINTER(IShellUIHelper_ResetSafeMode_PTR, IShellUIHelper_ResetSafeMode)	! routine pointer
		INTERFACE
			!Enumerates the figures
 			INTEGER*4 FUNCTION IShellWindows__NewEnum($OBJECT, ppunk)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppunk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: ppunk
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows__NewEnum
			END FUNCTION IShellWindows__NewEnum
		END INTERFACE
		POINTER(IShellWindows__NewEnum_PTR, IShellWindows__NewEnum)	! routine pointer
		INTERFACE
			!Find the window based on the location
 			INTEGER*4 FUNCTION IShellWindows_FindWindow($OBJECT, pvarloc, pvarlocRoot, swClass, pHWND, swfwOptions, ppdispOut)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: pvarloc	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarloc
				TYPE (VARIANT), INTENT(IN)	:: pvarlocRoot	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarlocRoot
				INTEGER, INTENT(IN)	:: swClass	
				!DEC$ ATTRIBUTES VALUE	:: swClass
				INTEGER*4, INTENT(OUT)	:: pHWND	
				!DEC$ ATTRIBUTES REFERENCE	:: pHWND
				INTEGER, INTENT(IN)	:: swfwOptions	
				!DEC$ ATTRIBUTES VALUE	:: swfwOptions
				INTEGER*4, INTENT(OUT)	:: ppdispOut	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppdispOut
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_FindWindow
			END FUNCTION IShellWindows_FindWindow
		END INTERFACE
		POINTER(IShellWindows_FindWindow_PTR, IShellWindows_FindWindow)	! routine pointer
		INTERFACE
			!Get count of open Shell windows
 			INTEGER*4 FUNCTION IShellWindows_GetCount($OBJECT, Count)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_GetCount
			END FUNCTION IShellWindows_GetCount
		END INTERFACE
		POINTER(IShellWindows_GetCount_PTR, IShellWindows_GetCount)	! routine pointer
		INTERFACE
			!Return the shell window for the given index
 			INTEGER*4 FUNCTION IShellWindows_Item($OBJECT, index, Folder)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: index	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: index
				INTEGER*4, INTENT(OUT)	:: Folder	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Folder
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_Item
			END FUNCTION IShellWindows_Item
		END INTERFACE
		POINTER(IShellWindows_Item_PTR, IShellWindows_Item)	! routine pointer
		INTERFACE
			!Notifies the activation
 			INTEGER*4 FUNCTION IShellWindows_OnActivated($OBJECT, lCookie, fActive)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES VALUE	:: lCookie
				LOGICAL*2, INTENT(IN)	:: fActive	
				!DEC$ ATTRIBUTES VALUE	:: fActive
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_OnActivated
			END FUNCTION IShellWindows_OnActivated
		END INTERFACE
		POINTER(IShellWindows_OnActivated_PTR, IShellWindows_OnActivated)	! routine pointer
		INTERFACE
			!Notifies on creation and frame name set
 			INTEGER*4 FUNCTION IShellWindows_OnCreated($OBJECT, lCookie, punk)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES VALUE	:: lCookie
				INTEGER*4, INTENT(IN)	:: punk	! IUnknown
				!DEC$ ATTRIBUTES VALUE	:: punk
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_OnCreated
			END FUNCTION IShellWindows_OnCreated
		END INTERFACE
		POINTER(IShellWindows_OnCreated_PTR, IShellWindows_OnCreated)	! routine pointer
		INTERFACE
			!Notifies the new location
 			INTEGER*4 FUNCTION IShellWindows_OnNavigate($OBJECT, lCookie, pvarloc)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES VALUE	:: lCookie
				TYPE (VARIANT), INTENT(IN)	:: pvarloc	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarloc
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_OnNavigate
			END FUNCTION IShellWindows_OnNavigate
		END INTERFACE
		POINTER(IShellWindows_OnNavigate_PTR, IShellWindows_OnNavigate)	! routine pointer
		INTERFACE
			!Used by IExplore to register different processes
 			INTEGER*4 FUNCTION IShellWindows_ProcessAttachDetach($OBJECT, fAttach)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: fAttach	
				!DEC$ ATTRIBUTES VALUE	:: fAttach
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_ProcessAttachDetach
			END FUNCTION IShellWindows_ProcessAttachDetach
		END INTERFACE
		POINTER(IShellWindows_ProcessAttachDetach_PTR, IShellWindows_ProcessAttachDetach)	! routine pointer
		INTERFACE
			!Register a window with the list
 			INTEGER*4 FUNCTION IShellWindows_Register($OBJECT, pid, HWND, swClass, plCookie)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pid	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: pid
				INTEGER*4, INTENT(IN)	:: HWND	
				!DEC$ ATTRIBUTES VALUE	:: HWND
				INTEGER, INTENT(IN)	:: swClass	
				!DEC$ ATTRIBUTES VALUE	:: swClass
				INTEGER*4, INTENT(OUT)	:: plCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: plCookie
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_Register
			END FUNCTION IShellWindows_Register
		END INTERFACE
		POINTER(IShellWindows_Register_PTR, IShellWindows_Register)	! routine pointer
		INTERFACE
			!Register a pending open with the list
 			INTEGER*4 FUNCTION IShellWindows_RegisterPending($OBJECT, lThreadId, pvarloc, pvarlocRoot, swClass, plCookie)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lThreadId	
				!DEC$ ATTRIBUTES VALUE	:: lThreadId
				TYPE (VARIANT), INTENT(IN)	:: pvarloc	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarloc
				TYPE (VARIANT), INTENT(IN)	:: pvarlocRoot	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarlocRoot
				INTEGER, INTENT(IN)	:: swClass	
				!DEC$ ATTRIBUTES VALUE	:: swClass
				INTEGER*4, INTENT(OUT)	:: plCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: plCookie
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_RegisterPending
			END FUNCTION IShellWindows_RegisterPending
		END INTERFACE
		POINTER(IShellWindows_RegisterPending_PTR, IShellWindows_RegisterPending)	! routine pointer
		INTERFACE
			!Remove a window from the list
 			INTEGER*4 FUNCTION IShellWindows_Revoke($OBJECT, lCookie)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES VALUE	:: lCookie
			!DEC$ ATTRIBUTES STDCALL :: IShellWindows_Revoke
			END FUNCTION IShellWindows_Revoke
		END INTERFACE
		POINTER(IShellWindows_Revoke_PTR, IShellWindows_Revoke)	! routine pointer
		INTERFACE
			!Returns the application automation object if accessible, this automation object otherwise..
 			INTEGER*4 FUNCTION IWebBrowser_GetApplication($OBJECT, ppDisp)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetApplication
			END FUNCTION IWebBrowser_GetApplication
		END INTERFACE
		POINTER(IWebBrowser_GetApplication_PTR, IWebBrowser_GetApplication)	! routine pointer
		INTERFACE
			!Query to see if something is still in progress.
 			INTEGER*4 FUNCTION IWebBrowser_GetBusy($OBJECT, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetBusy
			END FUNCTION IWebBrowser_GetBusy
		END INTERFACE
		POINTER(IWebBrowser_GetBusy_PTR, IWebBrowser_GetBusy)	! routine pointer
		INTERFACE
			!Returns the container/parent automation object, if any.
 			INTEGER*4 FUNCTION IWebBrowser_GetContainer($OBJECT, ppDisp)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetContainer
			END FUNCTION IWebBrowser_GetContainer
		END INTERFACE
		POINTER(IWebBrowser_GetContainer_PTR, IWebBrowser_GetContainer)	! routine pointer
		INTERFACE
			!Returns the active Document automation object, if any.
 			INTEGER*4 FUNCTION IWebBrowser_GetDocument($OBJECT, ppDisp)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetDocument
			END FUNCTION IWebBrowser_GetDocument
		END INTERFACE
		POINTER(IWebBrowser_GetDocument_PTR, IWebBrowser_GetDocument)	! routine pointer
		INTERFACE
			!The vertical dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION IWebBrowser_GetHeight($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetHeight
			END FUNCTION IWebBrowser_GetHeight
		END INTERFACE
		POINTER(IWebBrowser_GetHeight_PTR, IWebBrowser_GetHeight)	! routine pointer
		INTERFACE
			!The horizontal position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION IWebBrowser_GetLeft($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetLeft
			END FUNCTION IWebBrowser_GetLeft
		END INTERFACE
		POINTER(IWebBrowser_GetLeft_PTR, IWebBrowser_GetLeft)	! routine pointer
		INTERFACE
			!Gets the short (UI-friendly) name of the URL/file currently viewed.
 			INTEGER*4 FUNCTION IWebBrowser_GetLocationName($OBJECT, LocationName)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: LocationName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: LocationName
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetLocationName
			END FUNCTION IWebBrowser_GetLocationName
		END INTERFACE
		POINTER(IWebBrowser_GetLocationName_PTR, IWebBrowser_GetLocationName)	! routine pointer
		INTERFACE
			!Gets the full URL/path currently viewed.
 			INTEGER*4 FUNCTION IWebBrowser_GetLocationURL($OBJECT, LocationURL)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: LocationURL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: LocationURL
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetLocationURL
			END FUNCTION IWebBrowser_GetLocationURL
		END INTERFACE
		POINTER(IWebBrowser_GetLocationURL_PTR, IWebBrowser_GetLocationURL)	! routine pointer
		INTERFACE
			!Returns the automation object of the container/parent if one exists or this automation object.
 			INTEGER*4 FUNCTION IWebBrowser_GetParent($OBJECT, ppDisp)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetParent
			END FUNCTION IWebBrowser_GetParent
		END INTERFACE
		POINTER(IWebBrowser_GetParent_PTR, IWebBrowser_GetParent)	! routine pointer
		INTERFACE
			!The vertical position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION IWebBrowser_GetTop($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetTop
			END FUNCTION IWebBrowser_GetTop
		END INTERFACE
		POINTER(IWebBrowser_GetTop_PTR, IWebBrowser_GetTop)	! routine pointer
		INTERFACE
			!Returns True if this is the top level object.
 			INTEGER*4 FUNCTION IWebBrowser_GetTopLevelContainer($OBJECT, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetTopLevelContainer
			END FUNCTION IWebBrowser_GetTopLevelContainer
		END INTERFACE
		POINTER(IWebBrowser_GetTopLevelContainer_PTR, IWebBrowser_GetTopLevelContainer)	! routine pointer
		INTERFACE
			!Returns the type of the contained document object.
 			INTEGER*4 FUNCTION IWebBrowser_GetType($OBJECT, Type)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Type	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Type
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetType
			END FUNCTION IWebBrowser_GetType
		END INTERFACE
		POINTER(IWebBrowser_GetType_PTR, IWebBrowser_GetType)	! routine pointer
		INTERFACE
			!The horizontal dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION IWebBrowser_GetWidth($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GetWidth
			END FUNCTION IWebBrowser_GetWidth
		END INTERFACE
		POINTER(IWebBrowser_GetWidth_PTR, IWebBrowser_GetWidth)	! routine pointer
		INTERFACE
			!Navigates to the previous item in the history list.
 			INTEGER*4 FUNCTION IWebBrowser_GoBack($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GoBack
			END FUNCTION IWebBrowser_GoBack
		END INTERFACE
		POINTER(IWebBrowser_GoBack_PTR, IWebBrowser_GoBack)	! routine pointer
		INTERFACE
			!Navigates to the next item in the history list.
 			INTEGER*4 FUNCTION IWebBrowser_GoForward($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GoForward
			END FUNCTION IWebBrowser_GoForward
		END INTERFACE
		POINTER(IWebBrowser_GoForward_PTR, IWebBrowser_GoForward)	! routine pointer
		INTERFACE
			!Go home/start page.
 			INTEGER*4 FUNCTION IWebBrowser_GoHome($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GoHome
			END FUNCTION IWebBrowser_GoHome
		END INTERFACE
		POINTER(IWebBrowser_GoHome_PTR, IWebBrowser_GoHome)	! routine pointer
		INTERFACE
			!Go Search Page.
 			INTEGER*4 FUNCTION IWebBrowser_GoSearch($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_GoSearch
			END FUNCTION IWebBrowser_GoSearch
		END INTERFACE
		POINTER(IWebBrowser_GoSearch_PTR, IWebBrowser_GoSearch)	! routine pointer
		INTERFACE
			!Navigates to a URL or file.
 			INTEGER*4 FUNCTION IWebBrowser_Navigate($OBJECT, URL, Flags, TargetFrameName, PostData, Headers)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: URL
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: TargetFrameName	
				!DEC$ ATTRIBUTES REFERENCE	:: TargetFrameName
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: PostData	
				!DEC$ ATTRIBUTES REFERENCE	:: PostData
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Headers	
				!DEC$ ATTRIBUTES REFERENCE	:: Headers
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_Navigate
			END FUNCTION IWebBrowser_Navigate
		END INTERFACE
		POINTER(IWebBrowser_Navigate_PTR, IWebBrowser_Navigate)	! routine pointer
		INTERFACE
			!Refresh the currently viewed page.
 			INTEGER*4 FUNCTION IWebBrowser_Refresh($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_Refresh
			END FUNCTION IWebBrowser_Refresh
		END INTERFACE
		POINTER(IWebBrowser_Refresh_PTR, IWebBrowser_Refresh)	! routine pointer
		INTERFACE
			!Refresh the currently viewed page.
 			INTEGER*4 FUNCTION IWebBrowser_Refresh2($OBJECT, Level)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Level	
				!DEC$ ATTRIBUTES REFERENCE	:: Level
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_Refresh2
			END FUNCTION IWebBrowser_Refresh2
		END INTERFACE
		POINTER(IWebBrowser_Refresh2_PTR, IWebBrowser_Refresh2)	! routine pointer
		INTERFACE
			!The vertical dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION IWebBrowser_SetHeight($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES VALUE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_SetHeight
			END FUNCTION IWebBrowser_SetHeight
		END INTERFACE
		POINTER(IWebBrowser_SetHeight_PTR, IWebBrowser_SetHeight)	! routine pointer
		INTERFACE
			!The horizontal position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION IWebBrowser_SetLeft($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES VALUE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_SetLeft
			END FUNCTION IWebBrowser_SetLeft
		END INTERFACE
		POINTER(IWebBrowser_SetLeft_PTR, IWebBrowser_SetLeft)	! routine pointer
		INTERFACE
			!The vertical position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION IWebBrowser_SetTop($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES VALUE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_SetTop
			END FUNCTION IWebBrowser_SetTop
		END INTERFACE
		POINTER(IWebBrowser_SetTop_PTR, IWebBrowser_SetTop)	! routine pointer
		INTERFACE
			!The horizontal dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION IWebBrowser_SetWidth($OBJECT, pl)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES VALUE	:: pl
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_SetWidth
			END FUNCTION IWebBrowser_SetWidth
		END INTERFACE
		POINTER(IWebBrowser_SetWidth_PTR, IWebBrowser_SetWidth)	! routine pointer
		INTERFACE
			!Stops opening a file.
 			INTEGER*4 FUNCTION IWebBrowser_Stop($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser_Stop
			END FUNCTION IWebBrowser_Stop
		END INTERFACE
		POINTER(IWebBrowser_Stop_PTR, IWebBrowser_Stop)	! routine pointer
		INTERFACE
			!IOleCommandTarget::Exec
 			INTEGER*4 FUNCTION IWebBrowser2_ExecWB($OBJECT, cmdID, cmdexecopt, pvaIn, pvaOut)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: cmdID	! Void
				!DEC$ ATTRIBUTES VALUE	:: cmdID
				INTEGER*4, INTENT(IN)	:: cmdexecopt	! Void
				!DEC$ ATTRIBUTES VALUE	:: cmdexecopt
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: pvaIn	
				!DEC$ ATTRIBUTES REFERENCE	:: pvaIn
				TYPE (VARIANT), INTENT(INOUT), OPTIONAL	:: pvaOut	
				!DEC$ ATTRIBUTES REFERENCE	:: pvaOut
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_ExecWB
			END FUNCTION IWebBrowser2_ExecWB
		END INTERFACE
		POINTER(IWebBrowser2_ExecWB_PTR, IWebBrowser2_ExecWB)	! routine pointer
		INTERFACE
			!Controls whether address bar is shown
 			INTEGER*4 FUNCTION IWebBrowser2_GetAddressBar($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetAddressBar
			END FUNCTION IWebBrowser2_GetAddressBar
		END INTERFACE
		POINTER(IWebBrowser2_GetAddressBar_PTR, IWebBrowser2_GetAddressBar)	! routine pointer
		INTERFACE
			!Controls if the frame is offline (read from cache)
 			INTEGER*4 FUNCTION IWebBrowser2_GetOffline($OBJECT, pbOffline)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbOffline	
				!DEC$ ATTRIBUTES REFERENCE	:: pbOffline
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetOffline
			END FUNCTION IWebBrowser2_GetOffline
		END INTERFACE
		POINTER(IWebBrowser2_GetOffline_PTR, IWebBrowser2_GetOffline)	! routine pointer
		INTERFACE
 			INTEGER*4 FUNCTION IWebBrowser2_GetReadyState($OBJECT, plReadyState)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plReadyState	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plReadyState
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetReadyState
			END FUNCTION IWebBrowser2_GetReadyState
		END INTERFACE
		POINTER(IWebBrowser2_GetReadyState_PTR, IWebBrowser2_GetReadyState)	! routine pointer
		INTERFACE
			!Registers OC as a top-level browser (for target name resolution)
 			INTEGER*4 FUNCTION IWebBrowser2_GetRegisterAsBrowser($OBJECT, pbRegister)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetRegisterAsBrowser
			END FUNCTION IWebBrowser2_GetRegisterAsBrowser
		END INTERFACE
		POINTER(IWebBrowser2_GetRegisterAsBrowser_PTR, IWebBrowser2_GetRegisterAsBrowser)	! routine pointer
		INTERFACE
			!Registers OC as a drop target for navigation
 			INTEGER*4 FUNCTION IWebBrowser2_GetRegisterAsDropTarget($OBJECT, pbRegister)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetRegisterAsDropTarget
			END FUNCTION IWebBrowser2_GetRegisterAsDropTarget
		END INTERFACE
		POINTER(IWebBrowser2_GetRegisterAsDropTarget_PTR, IWebBrowser2_GetRegisterAsDropTarget)	! routine pointer
		INTERFACE
			!Controls whether the window is resizable
 			INTEGER*4 FUNCTION IWebBrowser2_GetResizable($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetResizable
			END FUNCTION IWebBrowser2_GetResizable
		END INTERFACE
		POINTER(IWebBrowser2_GetResizable_PTR, IWebBrowser2_GetResizable)	! routine pointer
		INTERFACE
			!Controls if any dialog boxes can be shown
 			INTEGER*4 FUNCTION IWebBrowser2_GetSilent($OBJECT, pbSilent)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbSilent	
				!DEC$ ATTRIBUTES REFERENCE	:: pbSilent
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetSilent
			END FUNCTION IWebBrowser2_GetSilent
		END INTERFACE
		POINTER(IWebBrowser2_GetSilent_PTR, IWebBrowser2_GetSilent)	! routine pointer
		INTERFACE
			!Controls if the browser is in theater mode
 			INTEGER*4 FUNCTION IWebBrowser2_GetTheaterMode($OBJECT, pbRegister)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_GetTheaterMode
			END FUNCTION IWebBrowser2_GetTheaterMode
		END INTERFACE
		POINTER(IWebBrowser2_GetTheaterMode_PTR, IWebBrowser2_GetTheaterMode)	! routine pointer
		INTERFACE
			!Navigates to a URL or file or pidl.
 			INTEGER*4 FUNCTION IWebBrowser2_Navigate2($OBJECT, URL, Flags, TargetFrameName, PostData, Headers)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: URL	
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: TargetFrameName	
				!DEC$ ATTRIBUTES REFERENCE	:: TargetFrameName
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: PostData	
				!DEC$ ATTRIBUTES REFERENCE	:: PostData
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Headers	
				!DEC$ ATTRIBUTES REFERENCE	:: Headers
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_Navigate2
			END FUNCTION IWebBrowser2_Navigate2
		END INTERFACE
		POINTER(IWebBrowser2_Navigate2_PTR, IWebBrowser2_Navigate2)	! routine pointer
		INTERFACE
			!IOleCommandTarget::QueryStatus
 			INTEGER*4 FUNCTION IWebBrowser2_QueryStatusWB($OBJECT, cmdID, pcmdf)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: cmdID	! Void
				!DEC$ ATTRIBUTES VALUE	:: cmdID
				INTEGER*4, INTENT(OUT)	:: pcmdf	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pcmdf
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_QueryStatusWB
			END FUNCTION IWebBrowser2_QueryStatusWB
		END INTERFACE
		POINTER(IWebBrowser2_QueryStatusWB_PTR, IWebBrowser2_QueryStatusWB)	! routine pointer
		INTERFACE
			!Controls whether address bar is shown
 			INTEGER*4 FUNCTION IWebBrowser2_SetAddressBar($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES VALUE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetAddressBar
			END FUNCTION IWebBrowser2_SetAddressBar
		END INTERFACE
		POINTER(IWebBrowser2_SetAddressBar_PTR, IWebBrowser2_SetAddressBar)	! routine pointer
		INTERFACE
			!Controls if the frame is offline (read from cache)
 			INTEGER*4 FUNCTION IWebBrowser2_SetOffline($OBJECT, pbOffline)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbOffline	
				!DEC$ ATTRIBUTES VALUE	:: pbOffline
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetOffline
			END FUNCTION IWebBrowser2_SetOffline
		END INTERFACE
		POINTER(IWebBrowser2_SetOffline_PTR, IWebBrowser2_SetOffline)	! routine pointer
		INTERFACE
			!Registers OC as a top-level browser (for target name resolution)
 			INTEGER*4 FUNCTION IWebBrowser2_SetRegisterAsBrowser($OBJECT, pbRegister)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbRegister	
				!DEC$ ATTRIBUTES VALUE	:: pbRegister
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetRegisterAsBrowser
			END FUNCTION IWebBrowser2_SetRegisterAsBrowser
		END INTERFACE
		POINTER(IWebBrowser2_SetRegisterAsBrowser_PTR, IWebBrowser2_SetRegisterAsBrowser)	! routine pointer
		INTERFACE
			!Registers OC as a drop target for navigation
 			INTEGER*4 FUNCTION IWebBrowser2_SetRegisterAsDropTarget($OBJECT, pbRegister)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbRegister	
				!DEC$ ATTRIBUTES VALUE	:: pbRegister
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetRegisterAsDropTarget
			END FUNCTION IWebBrowser2_SetRegisterAsDropTarget
		END INTERFACE
		POINTER(IWebBrowser2_SetRegisterAsDropTarget_PTR, IWebBrowser2_SetRegisterAsDropTarget)	! routine pointer
		INTERFACE
			!Controls whether the window is resizable
 			INTEGER*4 FUNCTION IWebBrowser2_SetResizable($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES VALUE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetResizable
			END FUNCTION IWebBrowser2_SetResizable
		END INTERFACE
		POINTER(IWebBrowser2_SetResizable_PTR, IWebBrowser2_SetResizable)	! routine pointer
		INTERFACE
			!Controls if any dialog boxes can be shown
 			INTEGER*4 FUNCTION IWebBrowser2_SetSilent($OBJECT, pbSilent)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbSilent	
				!DEC$ ATTRIBUTES VALUE	:: pbSilent
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetSilent
			END FUNCTION IWebBrowser2_SetSilent
		END INTERFACE
		POINTER(IWebBrowser2_SetSilent_PTR, IWebBrowser2_SetSilent)	! routine pointer
		INTERFACE
			!Controls if the browser is in theater mode
 			INTEGER*4 FUNCTION IWebBrowser2_SetTheaterMode($OBJECT, pbRegister)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbRegister	
				!DEC$ ATTRIBUTES VALUE	:: pbRegister
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_SetTheaterMode
			END FUNCTION IWebBrowser2_SetTheaterMode
		END INTERFACE
		POINTER(IWebBrowser2_SetTheaterMode_PTR, IWebBrowser2_SetTheaterMode)	! routine pointer
		INTERFACE
			!Set BrowserBar to Clsid
 			INTEGER*4 FUNCTION IWebBrowser2_ShowBrowserBar($OBJECT, pvaClsid, pvarShow, pvarSize)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: pvaClsid	
				!DEC$ ATTRIBUTES REFERENCE	:: pvaClsid
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: pvarShow	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarShow
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: pvarSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarSize
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowser2_ShowBrowserBar
			END FUNCTION IWebBrowser2_ShowBrowserBar
		END INTERFACE
		POINTER(IWebBrowser2_ShowBrowserBar_PTR, IWebBrowser2_ShowBrowserBar)	! routine pointer
		INTERFACE
			!Converts client sizes into window sizes.
 			INTEGER*4 FUNCTION IWebBrowserApp_ClientToWindow($OBJECT, pcx, pcy)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(INOUT)	:: pcx	
				!DEC$ ATTRIBUTES REFERENCE	:: pcx
				INTEGER, INTENT(INOUT)	:: pcy	
				!DEC$ ATTRIBUTES REFERENCE	:: pcy
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_ClientToWindow
			END FUNCTION IWebBrowserApp_ClientToWindow
		END INTERFACE
		POINTER(IWebBrowserApp_ClientToWindow_PTR, IWebBrowserApp_ClientToWindow)	! routine pointer
		INTERFACE
			!Returns file specification of the application, including path.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetFullName($OBJECT, FullName)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: FullName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FullName
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetFullName
			END FUNCTION IWebBrowserApp_GetFullName
		END INTERFACE
		POINTER(IWebBrowserApp_GetFullName_PTR, IWebBrowserApp_GetFullName)	! routine pointer
		INTERFACE
			!Maximizes window and turns off statusbar, toolbar, menubar, and titlebar.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetFullScreen($OBJECT, pbFullScreen)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbFullScreen	
				!DEC$ ATTRIBUTES REFERENCE	:: pbFullScreen
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetFullScreen
			END FUNCTION IWebBrowserApp_GetFullScreen
		END INTERFACE
		POINTER(IWebBrowserApp_GetFullScreen_PTR, IWebBrowserApp_GetFullScreen)	! routine pointer
		INTERFACE
			!Returns the HWND of the current IE window.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetHWND($OBJECT, pHWND)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pHWND	
				!DEC$ ATTRIBUTES REFERENCE	:: pHWND
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetHWND
			END FUNCTION IWebBrowserApp_GetHWND
		END INTERFACE
		POINTER(IWebBrowserApp_GetHWND_PTR, IWebBrowserApp_GetHWND)	! routine pointer
		INTERFACE
			!Controls whether menubar is shown.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetMenuBar($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetMenuBar
			END FUNCTION IWebBrowserApp_GetMenuBar
		END INTERFACE
		POINTER(IWebBrowserApp_GetMenuBar_PTR, IWebBrowserApp_GetMenuBar)	! routine pointer
		INTERFACE
			!Returns name of the application.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetName($OBJECT, Name)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetName
			END FUNCTION IWebBrowserApp_GetName
		END INTERFACE
		POINTER(IWebBrowserApp_GetName_PTR, IWebBrowserApp_GetName)	! routine pointer
		INTERFACE
			!Returns the path to the application.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetPath($OBJECT, Path)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Path	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Path
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetPath
			END FUNCTION IWebBrowserApp_GetPath
		END INTERFACE
		POINTER(IWebBrowserApp_GetPath_PTR, IWebBrowserApp_GetPath)	! routine pointer
		INTERFACE
			!Retrieve the Associated value for the property vtValue in the context of the object.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetProperty($OBJECT, Property, pvtValue)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Property	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: Property
				TYPE (VARIANT), INTENT(OUT)	:: pvtValue	
				!DEC$ ATTRIBUTES REFERENCE	:: pvtValue
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetProperty
			END FUNCTION IWebBrowserApp_GetProperty
		END INTERFACE
		POINTER(IWebBrowserApp_GetProperty_PTR, IWebBrowserApp_GetProperty)	! routine pointer
		INTERFACE
			!Turn on or off the statusbar.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetStatusBar($OBJECT, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetStatusBar
			END FUNCTION IWebBrowserApp_GetStatusBar
		END INTERFACE
		POINTER(IWebBrowserApp_GetStatusBar_PTR, IWebBrowserApp_GetStatusBar)	! routine pointer
		INTERFACE
			!Text of Status window.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetStatusText($OBJECT, StatusText)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: StatusText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: StatusText
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetStatusText
			END FUNCTION IWebBrowserApp_GetStatusText
		END INTERFACE
		POINTER(IWebBrowserApp_GetStatusText_PTR, IWebBrowserApp_GetStatusText)	! routine pointer
		INTERFACE
			!Controls which toolbar is shown.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetToolBar($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetToolBar
			END FUNCTION IWebBrowserApp_GetToolBar
		END INTERFACE
		POINTER(IWebBrowserApp_GetToolBar_PTR, IWebBrowserApp_GetToolBar)	! routine pointer
		INTERFACE
			!Determines whether the application is visible or hidden.
 			INTEGER*4 FUNCTION IWebBrowserApp_GetVisible($OBJECT, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_GetVisible
			END FUNCTION IWebBrowserApp_GetVisible
		END INTERFACE
		POINTER(IWebBrowserApp_GetVisible_PTR, IWebBrowserApp_GetVisible)	! routine pointer
		INTERFACE
			!Associates vtValue with the name szProperty in the context of the object.
 			INTEGER*4 FUNCTION IWebBrowserApp_PutProperty($OBJECT, Property, vtValue)
				USE DFCOMTY
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Property	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: Property
				TYPE (VARIANT), INTENT(IN)	:: vtValue	
				!DEC$ ATTRIBUTES VALUE	:: vtValue
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_PutProperty
			END FUNCTION IWebBrowserApp_PutProperty
		END INTERFACE
		POINTER(IWebBrowserApp_PutProperty_PTR, IWebBrowserApp_PutProperty)	! routine pointer
		INTERFACE
			!Exits application and closes the open document.
 			INTEGER*4 FUNCTION IWebBrowserApp_Quit($OBJECT)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_Quit
			END FUNCTION IWebBrowserApp_Quit
		END INTERFACE
		POINTER(IWebBrowserApp_Quit_PTR, IWebBrowserApp_Quit)	! routine pointer
		INTERFACE
			!Maximizes window and turns off statusbar, toolbar, menubar, and titlebar.
 			INTEGER*4 FUNCTION IWebBrowserApp_SetFullScreen($OBJECT, pbFullScreen)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbFullScreen	
				!DEC$ ATTRIBUTES VALUE	:: pbFullScreen
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_SetFullScreen
			END FUNCTION IWebBrowserApp_SetFullScreen
		END INTERFACE
		POINTER(IWebBrowserApp_SetFullScreen_PTR, IWebBrowserApp_SetFullScreen)	! routine pointer
		INTERFACE
			!Controls whether menubar is shown.
 			INTEGER*4 FUNCTION IWebBrowserApp_SetMenuBar($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES VALUE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_SetMenuBar
			END FUNCTION IWebBrowserApp_SetMenuBar
		END INTERFACE
		POINTER(IWebBrowserApp_SetMenuBar_PTR, IWebBrowserApp_SetMenuBar)	! routine pointer
		INTERFACE
			!Turn on or off the statusbar.
 			INTEGER*4 FUNCTION IWebBrowserApp_SetStatusBar($OBJECT, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pBool	
				!DEC$ ATTRIBUTES VALUE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_SetStatusBar
			END FUNCTION IWebBrowserApp_SetStatusBar
		END INTERFACE
		POINTER(IWebBrowserApp_SetStatusBar_PTR, IWebBrowserApp_SetStatusBar)	! routine pointer
		INTERFACE
			!Text of Status window.
 			INTEGER*4 FUNCTION IWebBrowserApp_SetStatusText($OBJECT, StatusText)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: StatusText	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: StatusText
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_SetStatusText
			END FUNCTION IWebBrowserApp_SetStatusText
		END INTERFACE
		POINTER(IWebBrowserApp_SetStatusText_PTR, IWebBrowserApp_SetStatusText)	! routine pointer
		INTERFACE
			!Controls which toolbar is shown.
 			INTEGER*4 FUNCTION IWebBrowserApp_SetToolBar($OBJECT, Value)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES VALUE	:: Value
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_SetToolBar
			END FUNCTION IWebBrowserApp_SetToolBar
		END INTERFACE
		POINTER(IWebBrowserApp_SetToolBar_PTR, IWebBrowserApp_SetToolBar)	! routine pointer
		INTERFACE
			!Determines whether the application is visible or hidden.
 			INTEGER*4 FUNCTION IWebBrowserApp_SetVisible($OBJECT, pBool)
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pBool	
				!DEC$ ATTRIBUTES VALUE	:: pBool
			!DEC$ ATTRIBUTES STDCALL :: IWebBrowserApp_SetVisible
			END FUNCTION IWebBrowserApp_SetVisible
		END INTERFACE
		POINTER(IWebBrowserApp_SetVisible_PTR, IWebBrowserApp_SetVisible)	! routine pointer


		! Module Procedures
		CONTAINS
			!Copy Items to this folder.
 			INTEGER*4 FUNCTION $Folder_CopyHere($OBJECT, vItem, vOptions)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_CopyHere
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vItem	
				!DEC$ ATTRIBUTES REFERENCE	:: vItem
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vOptions	
				!DEC$ ATTRIBUTES REFERENCE	:: vOptions
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vOptions
				IF (PRESENT(vOptions)) THEN 
					$VAR_vOptions = vOptions
				ELSE
					$VAR_vOptions = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				Folder_CopyHere_PTR = $VTBL
				$RETURN = Folder_CopyHere($OBJECT, vItem, $VAR_vOptions)
				$Folder_CopyHere = $RETURN
			END FUNCTION $Folder_CopyHere
			!Get Application object
 			INTEGER*4 FUNCTION $Folder_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				Folder_GetApplication_PTR = $VTBL
				$RETURN = Folder_GetApplication($OBJECT, ppid)
				$Folder_GetApplication = $RETURN
			END FUNCTION $Folder_GetApplication
			!Get the details about an item.
 			INTEGER*4 FUNCTION $Folder_GetDetailsOf($OBJECT, vItem, iColumn, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_GetDetailsOf
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vItem	
				!DEC$ ATTRIBUTES REFERENCE	:: vItem
				INTEGER, INTENT(IN)	:: iColumn	
				!DEC$ ATTRIBUTES REFERENCE	:: iColumn
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				Folder_GetDetailsOf_PTR = $VTBL
				$RETURN = Folder_GetDetailsOf($OBJECT, vItem, iColumn, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$Folder_GetDetailsOf = $RETURN
			END FUNCTION $Folder_GetDetailsOf
			!Get Parent object
 			INTEGER*4 FUNCTION $Folder_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				Folder_GetParent_PTR = $VTBL
				$RETURN = Folder_GetParent($OBJECT, ppid)
				$Folder_GetParent = $RETURN
			END FUNCTION $Folder_GetParent
			!Get Parent object
 			INTEGER*4 FUNCTION $Folder_GetParentFolder($OBJECT, ppsf)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_GetParentFolder
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppsf	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppsf
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				Folder_GetParentFolder_PTR = $VTBL
				$RETURN = Folder_GetParentFolder($OBJECT, ppsf)
				$Folder_GetParentFolder = $RETURN
			END FUNCTION $Folder_GetParentFolder
			!Get the display name for the window
 			INTEGER*4 FUNCTION $Folder_GetTitle($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_GetTitle
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				Folder_GetTitle_PTR = $VTBL
				$RETURN = Folder_GetTitle($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$Folder_GetTitle = $RETURN
			END FUNCTION $Folder_GetTitle
			!The collection of Items in folder
 			INTEGER*4 FUNCTION $Folder_Items($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_Items
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				Folder_Items_PTR = $VTBL
				$RETURN = Folder_Items($OBJECT, ppid)
				$Folder_Items = $RETURN
			END FUNCTION $Folder_Items
			!Move Items to this folder.
 			INTEGER*4 FUNCTION $Folder_MoveHere($OBJECT, vItem, vOptions)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_MoveHere
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vItem	
				!DEC$ ATTRIBUTES REFERENCE	:: vItem
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vOptions	
				!DEC$ ATTRIBUTES REFERENCE	:: vOptions
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vOptions
				IF (PRESENT(vOptions)) THEN 
					$VAR_vOptions = vOptions
				ELSE
					$VAR_vOptions = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				Folder_MoveHere_PTR = $VTBL
				$RETURN = Folder_MoveHere($OBJECT, vItem, $VAR_vOptions)
				$Folder_MoveHere = $RETURN
			END FUNCTION $Folder_MoveHere
			!Create a new sub folder in this folder.
 			INTEGER*4 FUNCTION $Folder_NewFolder($OBJECT, bName, vOptions)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_NewFolder
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: bName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: bName
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vOptions	
				!DEC$ ATTRIBUTES REFERENCE	:: vOptions
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_bName    ! BSTR
				TYPE (VARIANT) :: $VAR_vOptions
				$BSTR_bName = ConvertStringToBSTR(bName)
				IF (PRESENT(vOptions)) THEN 
					$VAR_vOptions = vOptions
				ELSE
					$VAR_vOptions = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				Folder_NewFolder_PTR = $VTBL
				$RETURN = Folder_NewFolder($OBJECT, $BSTR_bName, $VAR_vOptions)
				$Folder_NewFolder = $RETURN
			END FUNCTION $Folder_NewFolder
			!Parse the name to get an item.
 			INTEGER*4 FUNCTION $Folder_ParseName($OBJECT, bName, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $Folder_ParseName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: bName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: bName
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_bName    ! BSTR
				$BSTR_bName = ConvertStringToBSTR(bName)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				Folder_ParseName_PTR = $VTBL
				$RETURN = Folder_ParseName($OBJECT, $BSTR_bName, ppid)
				$Folder_ParseName = $RETURN
			END FUNCTION $Folder_ParseName
			!Get Application object
 			INTEGER*4 FUNCTION $FolderItem_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				FolderItem_GetApplication_PTR = $VTBL
				$RETURN = FolderItem_GetApplication($OBJECT, ppid)
				$FolderItem_GetApplication = $RETURN
			END FUNCTION $FolderItem_GetApplication
			!If item is a folder return folder object
 			INTEGER*4 FUNCTION $FolderItem_GetGetFolder($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetGetFolder
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				FolderItem_GetGetFolder_PTR = $VTBL
				$RETURN = FolderItem_GetGetFolder($OBJECT, ppid)
				$FolderItem_GetGetFolder = $RETURN
			END FUNCTION $FolderItem_GetGetFolder
			!If item is link return link object
 			INTEGER*4 FUNCTION $FolderItem_GetGetLink($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetGetLink
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				FolderItem_GetGetLink_PTR = $VTBL
				$RETURN = FolderItem_GetGetLink($OBJECT, ppid)
				$FolderItem_GetGetLink = $RETURN
			END FUNCTION $FolderItem_GetGetLink
			!Is the item browsable?
 			INTEGER*4 FUNCTION $FolderItem_GetIsBrowsable($OBJECT, pb)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetIsBrowsable
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				FolderItem_GetIsBrowsable_PTR = $VTBL
				$RETURN = FolderItem_GetIsBrowsable($OBJECT, pb)
				$FolderItem_GetIsBrowsable = $RETURN
			END FUNCTION $FolderItem_GetIsBrowsable
			!Is the item a file system object?
 			INTEGER*4 FUNCTION $FolderItem_GetIsFileSystem($OBJECT, pb)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetIsFileSystem
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				FolderItem_GetIsFileSystem_PTR = $VTBL
				$RETURN = FolderItem_GetIsFileSystem($OBJECT, pb)
				$FolderItem_GetIsFileSystem = $RETURN
			END FUNCTION $FolderItem_GetIsFileSystem
			!Is the item a Folder?
 			INTEGER*4 FUNCTION $FolderItem_GetIsFolder($OBJECT, pb)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetIsFolder
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				FolderItem_GetIsFolder_PTR = $VTBL
				$RETURN = FolderItem_GetIsFolder($OBJECT, pb)
				$FolderItem_GetIsFolder = $RETURN
			END FUNCTION $FolderItem_GetIsFolder
			!Is the item a link?
 			INTEGER*4 FUNCTION $FolderItem_GetIsLink($OBJECT, pb)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetIsLink
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pb	
				!DEC$ ATTRIBUTES REFERENCE	:: pb
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				FolderItem_GetIsLink_PTR = $VTBL
				$RETURN = FolderItem_GetIsLink($OBJECT, pb)
				$FolderItem_GetIsLink = $RETURN
			END FUNCTION $FolderItem_GetIsLink
			!Modification Date?
 			INTEGER*4 FUNCTION $FolderItem_GetModifyDate($OBJECT, pdt)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetModifyDate
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pdt	! Unsupported type
				!DEC$ ATTRIBUTES REFERENCE	:: pdt
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				FolderItem_GetModifyDate_PTR = $VTBL
				$RETURN = FolderItem_GetModifyDate($OBJECT, pdt)
				$FolderItem_GetModifyDate = $RETURN
			END FUNCTION $FolderItem_GetModifyDate
			!Get display name for item
 			INTEGER*4 FUNCTION $FolderItem_GetName($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				FolderItem_GetName_PTR = $VTBL
				$RETURN = FolderItem_GetName($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$FolderItem_GetName = $RETURN
			END FUNCTION $FolderItem_GetName
			!Get Parent object
 			INTEGER*4 FUNCTION $FolderItem_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				FolderItem_GetParent_PTR = $VTBL
				$RETURN = FolderItem_GetParent($OBJECT, ppid)
				$FolderItem_GetParent = $RETURN
			END FUNCTION $FolderItem_GetParent
			!Get the pathname to the item
 			INTEGER*4 FUNCTION $FolderItem_GetPath($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetPath
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				FolderItem_GetPath_PTR = $VTBL
				$RETURN = FolderItem_GetPath($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$FolderItem_GetPath = $RETURN
			END FUNCTION $FolderItem_GetPath
			!Size
 			INTEGER*4 FUNCTION $FolderItem_GetSize($OBJECT, pul)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetSize
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pul	
				!DEC$ ATTRIBUTES REFERENCE	:: pul
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				FolderItem_GetSize_PTR = $VTBL
				$RETURN = FolderItem_GetSize($OBJECT, pul)
				$FolderItem_GetSize = $RETURN
			END FUNCTION $FolderItem_GetSize
			!Type
 			INTEGER*4 FUNCTION $FolderItem_GetType($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_GetType
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				FolderItem_GetType_PTR = $VTBL
				$RETURN = FolderItem_GetType($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$FolderItem_GetType = $RETURN
			END FUNCTION $FolderItem_GetType
			!Execute a command on the item
 			INTEGER*4 FUNCTION $FolderItem_InvokeVerb($OBJECT, vVerb)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_InvokeVerb
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vVerb	
				!DEC$ ATTRIBUTES REFERENCE	:: vVerb
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vVerb
				IF (PRESENT(vVerb)) THEN 
					$VAR_vVerb = vVerb
				ELSE
					$VAR_vVerb = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				FolderItem_InvokeVerb_PTR = $VTBL
				$RETURN = FolderItem_InvokeVerb($OBJECT, $VAR_vVerb)
				$FolderItem_InvokeVerb = $RETURN
			END FUNCTION $FolderItem_InvokeVerb
			!Modification Date?
 			INTEGER*4 FUNCTION $FolderItem_SetModifyDate($OBJECT, pdt)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_SetModifyDate
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pdt	! Unsupported type
				!DEC$ ATTRIBUTES REFERENCE	:: pdt
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				FolderItem_SetModifyDate_PTR = $VTBL
				$RETURN = FolderItem_SetModifyDate($OBJECT, pdt)
				$FolderItem_SetModifyDate = $RETURN
			END FUNCTION $FolderItem_SetModifyDate
			!Get display name for item
 			INTEGER*4 FUNCTION $FolderItem_SetName($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_SetName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				$BSTR_pbs = ConvertStringToBSTR(pbs)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				FolderItem_SetName_PTR = $VTBL
				$RETURN = FolderItem_SetName($OBJECT, $BSTR_pbs)
				$FolderItem_SetName = $RETURN
			END FUNCTION $FolderItem_SetName
			!Get the list of verbs for the object
 			INTEGER*4 FUNCTION $FolderItem_Verbs($OBJECT, ppfic)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItem_Verbs
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppfic	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppfic
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				FolderItem_Verbs_PTR = $VTBL
				$RETURN = FolderItem_Verbs($OBJECT, ppfic)
				$FolderItem_Verbs = $RETURN
			END FUNCTION $FolderItem_Verbs
			!Enumerates the figures
 			INTEGER*4 FUNCTION $FolderItems__NewEnum($OBJECT, ppunk)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItems__NewEnum
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppunk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: ppunk
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				FolderItems__NewEnum_PTR = $VTBL
				$RETURN = FolderItems__NewEnum($OBJECT, ppunk)
				$FolderItems__NewEnum = $RETURN
			END FUNCTION $FolderItems__NewEnum
			!Get Application object
 			INTEGER*4 FUNCTION $FolderItems_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItems_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				FolderItems_GetApplication_PTR = $VTBL
				$RETURN = FolderItems_GetApplication($OBJECT, ppid)
				$FolderItems_GetApplication = $RETURN
			END FUNCTION $FolderItems_GetApplication
			!Get count of items in the folder
 			INTEGER*4 FUNCTION $FolderItems_GetCount($OBJECT, plCount)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItems_GetCount
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plCount	
				!DEC$ ATTRIBUTES REFERENCE	:: plCount
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				FolderItems_GetCount_PTR = $VTBL
				$RETURN = FolderItems_GetCount($OBJECT, plCount)
				$FolderItems_GetCount = $RETURN
			END FUNCTION $FolderItems_GetCount
			!Get Parent object
 			INTEGER*4 FUNCTION $FolderItems_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItems_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				FolderItems_GetParent_PTR = $VTBL
				$RETURN = FolderItems_GetParent($OBJECT, ppid)
				$FolderItems_GetParent = $RETURN
			END FUNCTION $FolderItems_GetParent
			!Return the figure for the given index
 			INTEGER*4 FUNCTION $FolderItems_Item($OBJECT, index, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItems_Item
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: index	
				!DEC$ ATTRIBUTES REFERENCE	:: index
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_index
				IF (PRESENT(index)) THEN 
					$VAR_index = index
				ELSE
					$VAR_index = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				FolderItems_Item_PTR = $VTBL
				$RETURN = FolderItems_Item($OBJECT, $VAR_index, ppid)
				$FolderItems_Item = $RETURN
			END FUNCTION $FolderItems_Item
			!Execute the verb
 			INTEGER*4 FUNCTION $FolderItemVerb_DoIt($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerb_DoIt
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				FolderItemVerb_DoIt_PTR = $VTBL
				$RETURN = FolderItemVerb_DoIt($OBJECT)
				$FolderItemVerb_DoIt = $RETURN
			END FUNCTION $FolderItemVerb_DoIt
			!Get Application object
 			INTEGER*4 FUNCTION $FolderItemVerb_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerb_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				FolderItemVerb_GetApplication_PTR = $VTBL
				$RETURN = FolderItemVerb_GetApplication($OBJECT, ppid)
				$FolderItemVerb_GetApplication = $RETURN
			END FUNCTION $FolderItemVerb_GetApplication
			!Get display name for item
 			INTEGER*4 FUNCTION $FolderItemVerb_GetName($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerb_GetName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				FolderItemVerb_GetName_PTR = $VTBL
				$RETURN = FolderItemVerb_GetName($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$FolderItemVerb_GetName = $RETURN
			END FUNCTION $FolderItemVerb_GetName
			!Get Parent object
 			INTEGER*4 FUNCTION $FolderItemVerb_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerb_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				FolderItemVerb_GetParent_PTR = $VTBL
				$RETURN = FolderItemVerb_GetParent($OBJECT, ppid)
				$FolderItemVerb_GetParent = $RETURN
			END FUNCTION $FolderItemVerb_GetParent
			!Enumerates the figures
 			INTEGER*4 FUNCTION $FolderItemVerbs__NewEnum($OBJECT, ppunk)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerbs__NewEnum
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppunk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: ppunk
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				FolderItemVerbs__NewEnum_PTR = $VTBL
				$RETURN = FolderItemVerbs__NewEnum($OBJECT, ppunk)
				$FolderItemVerbs__NewEnum = $RETURN
			END FUNCTION $FolderItemVerbs__NewEnum
			!Get Application object
 			INTEGER*4 FUNCTION $FolderItemVerbs_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerbs_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				FolderItemVerbs_GetApplication_PTR = $VTBL
				$RETURN = FolderItemVerbs_GetApplication($OBJECT, ppid)
				$FolderItemVerbs_GetApplication = $RETURN
			END FUNCTION $FolderItemVerbs_GetApplication
			!Get count of open folder windows
 			INTEGER*4 FUNCTION $FolderItemVerbs_GetCount($OBJECT, plCount)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerbs_GetCount
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plCount	
				!DEC$ ATTRIBUTES REFERENCE	:: plCount
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				FolderItemVerbs_GetCount_PTR = $VTBL
				$RETURN = FolderItemVerbs_GetCount($OBJECT, plCount)
				$FolderItemVerbs_GetCount = $RETURN
			END FUNCTION $FolderItemVerbs_GetCount
			!Get Parent object
 			INTEGER*4 FUNCTION $FolderItemVerbs_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerbs_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				FolderItemVerbs_GetParent_PTR = $VTBL
				$RETURN = FolderItemVerbs_GetParent($OBJECT, ppid)
				$FolderItemVerbs_GetParent = $RETURN
			END FUNCTION $FolderItemVerbs_GetParent
			!Return the specified verb
 			INTEGER*4 FUNCTION $FolderItemVerbs_Item($OBJECT, index, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $FolderItemVerbs_Item
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: index	
				!DEC$ ATTRIBUTES REFERENCE	:: index
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_index
				IF (PRESENT(index)) THEN 
					$VAR_index = index
				ELSE
					$VAR_index = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				FolderItemVerbs_Item_PTR = $VTBL
				$RETURN = FolderItemVerbs_Item($OBJECT, $VAR_index, ppid)
				$FolderItemVerbs_Item = $RETURN
			END FUNCTION $FolderItemVerbs_Item
			!Set the ShellFolderView object to monitor events of.
 			INTEGER*4 FUNCTION $IFolderViewOC_SetFolderView($OBJECT, pDisp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IFolderViewOC_SetFolderView
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pDisp
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IFolderViewOC_SetFolderView_PTR = $VTBL
				$RETURN = IFolderViewOC_SetFolderView($OBJECT, pDisp)
				$IFolderViewOC_SetFolderView = $RETURN
			END FUNCTION $IFolderViewOC_SetFolderView
			!Browse the name space for a Folder
 			INTEGER*4 FUNCTION $IShellDispatch_BrowseForFolder($OBJECT, HWND, Title, Options, RootFolder, ppsdf)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_BrowseForFolder
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: HWND	
				!DEC$ ATTRIBUTES REFERENCE	:: HWND
				CHARACTER*(*), INTENT(IN)	:: Title	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Title
				INTEGER*4, INTENT(IN)	:: Options	
				!DEC$ ATTRIBUTES REFERENCE	:: Options
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: RootFolder	
				!DEC$ ATTRIBUTES REFERENCE	:: RootFolder
				INTEGER*4, INTENT(OUT)	:: ppsdf	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppsdf
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_Title    ! BSTR
				TYPE (VARIANT) :: $VAR_RootFolder
				$BSTR_Title = ConvertStringToBSTR(Title)
				IF (PRESENT(RootFolder)) THEN 
					$VAR_RootFolder = RootFolder
				ELSE
					$VAR_RootFolder = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IShellDispatch_BrowseForFolder_PTR = $VTBL
				$RETURN = IShellDispatch_BrowseForFolder($OBJECT, HWND, $BSTR_Title, Options, $VAR_RootFolder, ppsdf)
				$IShellDispatch_BrowseForFolder = $RETURN
			END FUNCTION $IShellDispatch_BrowseForFolder
			!Cascade Windows
 			INTEGER*4 FUNCTION $IShellDispatch_CascadeWindows($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_CascadeWindows
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IShellDispatch_CascadeWindows_PTR = $VTBL
				$RETURN = IShellDispatch_CascadeWindows($OBJECT)
				$IShellDispatch_CascadeWindows = $RETURN
			END FUNCTION $IShellDispatch_CascadeWindows
			!Run a controlpanelItem
 			INTEGER*4 FUNCTION $IShellDispatch_ControlPanelItem($OBJECT, szDir)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_ControlPanelItem
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szDir	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szDir
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_szDir    ! BSTR
				$BSTR_szDir = ConvertStringToBSTR(szDir)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IShellDispatch_ControlPanelItem_PTR = $VTBL
				$RETURN = IShellDispatch_ControlPanelItem($OBJECT, $BSTR_szDir)
				$IShellDispatch_ControlPanelItem = $RETURN
			END FUNCTION $IShellDispatch_ControlPanelItem
			!Eject the pc
 			INTEGER*4 FUNCTION $IShellDispatch_EjectPC($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_EjectPC
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IShellDispatch_EjectPC_PTR = $VTBL
				$RETURN = IShellDispatch_EjectPC($OBJECT)
				$IShellDispatch_EjectPC = $RETURN
			END FUNCTION $IShellDispatch_EjectPC
			!Explore a folder
 			INTEGER*4 FUNCTION $IShellDispatch_Explore($OBJECT, vDir)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_Explore
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vDir	
				!DEC$ ATTRIBUTES REFERENCE	:: vDir
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IShellDispatch_Explore_PTR = $VTBL
				$RETURN = IShellDispatch_Explore($OBJECT, vDir)
				$IShellDispatch_Explore = $RETURN
			END FUNCTION $IShellDispatch_Explore
			!Bring up the file run
 			INTEGER*4 FUNCTION $IShellDispatch_FileRun($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_FileRun
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IShellDispatch_FileRun_PTR = $VTBL
				$RETURN = IShellDispatch_FileRun($OBJECT)
				$IShellDispatch_FileRun = $RETURN
			END FUNCTION $IShellDispatch_FileRun
			!Find a computer
 			INTEGER*4 FUNCTION $IShellDispatch_FindComputer($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_FindComputer
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IShellDispatch_FindComputer_PTR = $VTBL
				$RETURN = IShellDispatch_FindComputer($OBJECT)
				$IShellDispatch_FindComputer = $RETURN
			END FUNCTION $IShellDispatch_FindComputer
			!Find Files
 			INTEGER*4 FUNCTION $IShellDispatch_FindFiles($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_FindFiles
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IShellDispatch_FindFiles_PTR = $VTBL
				$RETURN = IShellDispatch_FindFiles($OBJECT)
				$IShellDispatch_FindFiles = $RETURN
			END FUNCTION $IShellDispatch_FindFiles
			!Get Application object
 			INTEGER*4 FUNCTION $IShellDispatch_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IShellDispatch_GetApplication_PTR = $VTBL
				$RETURN = IShellDispatch_GetApplication($OBJECT, ppid)
				$IShellDispatch_GetApplication = $RETURN
			END FUNCTION $IShellDispatch_GetApplication
			!Get Parent object
 			INTEGER*4 FUNCTION $IShellDispatch_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IShellDispatch_GetParent_PTR = $VTBL
				$RETURN = IShellDispatch_GetParent($OBJECT, ppid)
				$IShellDispatch_GetParent = $RETURN
			END FUNCTION $IShellDispatch_GetParent
			!Display shell help
 			INTEGER*4 FUNCTION $IShellDispatch_Help($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_Help
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IShellDispatch_Help_PTR = $VTBL
				$RETURN = IShellDispatch_Help($OBJECT)
				$IShellDispatch_Help = $RETURN
			END FUNCTION $IShellDispatch_Help
			!Minimize all windows
 			INTEGER*4 FUNCTION $IShellDispatch_MinimizeAll($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_MinimizeAll
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IShellDispatch_MinimizeAll_PTR = $VTBL
				$RETURN = IShellDispatch_MinimizeAll($OBJECT)
				$IShellDispatch_MinimizeAll = $RETURN
			END FUNCTION $IShellDispatch_MinimizeAll
			!Enum the contents of a folder
 			INTEGER*4 FUNCTION $IShellDispatch_NameSpace($OBJECT, vDir, ppsdf)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_NameSpace
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vDir	
				!DEC$ ATTRIBUTES REFERENCE	:: vDir
				INTEGER*4, INTENT(OUT)	:: ppsdf	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppsdf
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IShellDispatch_NameSpace_PTR = $VTBL
				$RETURN = IShellDispatch_NameSpace($OBJECT, vDir, ppsdf)
				$IShellDispatch_NameSpace = $RETURN
			END FUNCTION $IShellDispatch_NameSpace
			!Open a folder
 			INTEGER*4 FUNCTION $IShellDispatch_Open($OBJECT, vDir)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_Open
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vDir	
				!DEC$ ATTRIBUTES REFERENCE	:: vDir
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IShellDispatch_Open_PTR = $VTBL
				$RETURN = IShellDispatch_Open($OBJECT, vDir)
				$IShellDispatch_Open = $RETURN
			END FUNCTION $IShellDispatch_Open
			!Refresh the menu
 			INTEGER*4 FUNCTION $IShellDispatch_RefreshMenu($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_RefreshMenu
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IShellDispatch_RefreshMenu_PTR = $VTBL
				$RETURN = IShellDispatch_RefreshMenu($OBJECT)
				$IShellDispatch_RefreshMenu = $RETURN
			END FUNCTION $IShellDispatch_RefreshMenu
			!Bring up the Set time dialog
 			INTEGER*4 FUNCTION $IShellDispatch_SetTime($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_SetTime
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IShellDispatch_SetTime_PTR = $VTBL
				$RETURN = IShellDispatch_SetTime($OBJECT)
				$IShellDispatch_SetTime = $RETURN
			END FUNCTION $IShellDispatch_SetTime
			!Exit Windows
 			INTEGER*4 FUNCTION $IShellDispatch_ShutdownWindows($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_ShutdownWindows
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IShellDispatch_ShutdownWindows_PTR = $VTBL
				$RETURN = IShellDispatch_ShutdownWindows($OBJECT)
				$IShellDispatch_ShutdownWindows = $RETURN
			END FUNCTION $IShellDispatch_ShutdownWindows
			!Suspend the pc
 			INTEGER*4 FUNCTION $IShellDispatch_Suspend($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_Suspend
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IShellDispatch_Suspend_PTR = $VTBL
				$RETURN = IShellDispatch_Suspend($OBJECT)
				$IShellDispatch_Suspend = $RETURN
			END FUNCTION $IShellDispatch_Suspend
			!Tile windows horizontally
 			INTEGER*4 FUNCTION $IShellDispatch_TileHorizontally($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_TileHorizontally
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IShellDispatch_TileHorizontally_PTR = $VTBL
				$RETURN = IShellDispatch_TileHorizontally($OBJECT)
				$IShellDispatch_TileHorizontally = $RETURN
			END FUNCTION $IShellDispatch_TileHorizontally
			!Tile windows vertically
 			INTEGER*4 FUNCTION $IShellDispatch_TileVertically($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_TileVertically
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IShellDispatch_TileVertically_PTR = $VTBL
				$RETURN = IShellDispatch_TileVertically($OBJECT)
				$IShellDispatch_TileVertically = $RETURN
			END FUNCTION $IShellDispatch_TileVertically
			!Handle Tray properties
 			INTEGER*4 FUNCTION $IShellDispatch_TrayProperties($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_TrayProperties
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IShellDispatch_TrayProperties_PTR = $VTBL
				$RETURN = IShellDispatch_TrayProperties($OBJECT)
				$IShellDispatch_TrayProperties = $RETURN
			END FUNCTION $IShellDispatch_TrayProperties
			!Undo Minimize All
 			INTEGER*4 FUNCTION $IShellDispatch_UndoMinimizeALL($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_UndoMinimizeALL
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IShellDispatch_UndoMinimizeALL_PTR = $VTBL
				$RETURN = IShellDispatch_UndoMinimizeALL($OBJECT)
				$IShellDispatch_UndoMinimizeALL = $RETURN
			END FUNCTION $IShellDispatch_UndoMinimizeALL
			!The collection of open folder windows
 			INTEGER*4 FUNCTION $IShellDispatch_Windows($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellDispatch_Windows
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IShellDispatch_Windows_PTR = $VTBL
				$RETURN = IShellDispatch_Windows($OBJECT, ppid)
				$IShellDispatch_Windows = $RETURN
			END FUNCTION $IShellDispatch_Windows
			!Get Application object
 			INTEGER*4 FUNCTION $IShellFolderViewDual_GetApplication($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IShellFolderViewDual_GetApplication_PTR = $VTBL
				$RETURN = IShellFolderViewDual_GetApplication($OBJECT, ppid)
				$IShellFolderViewDual_GetApplication = $RETURN
			END FUNCTION $IShellFolderViewDual_GetApplication
			!The currently focused item in the folder
 			INTEGER*4 FUNCTION $IShellFolderViewDual_GetFocusedItem($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_GetFocusedItem
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IShellFolderViewDual_GetFocusedItem_PTR = $VTBL
				$RETURN = IShellFolderViewDual_GetFocusedItem($OBJECT, ppid)
				$IShellFolderViewDual_GetFocusedItem = $RETURN
			END FUNCTION $IShellFolderViewDual_GetFocusedItem
			!Get the folder being viewed
 			INTEGER*4 FUNCTION $IShellFolderViewDual_GetFolder($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_GetFolder
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IShellFolderViewDual_GetFolder_PTR = $VTBL
				$RETURN = IShellFolderViewDual_GetFolder($OBJECT, ppid)
				$IShellFolderViewDual_GetFolder = $RETURN
			END FUNCTION $IShellFolderViewDual_GetFolder
			!Get Parent object
 			INTEGER*4 FUNCTION $IShellFolderViewDual_GetParent($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IShellFolderViewDual_GetParent_PTR = $VTBL
				$RETURN = IShellFolderViewDual_GetParent($OBJECT, ppid)
				$IShellFolderViewDual_GetParent = $RETURN
			END FUNCTION $IShellFolderViewDual_GetParent
			!Returns the scripting automation model.
 			INTEGER*4 FUNCTION $IShellFolderViewDual_GetScript($OBJECT, ppDisp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_GetScript
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IShellFolderViewDual_GetScript_PTR = $VTBL
				$RETURN = IShellFolderViewDual_GetScript($OBJECT, ppDisp)
				$IShellFolderViewDual_GetScript = $RETURN
			END FUNCTION $IShellFolderViewDual_GetScript
			!Returns the view options for showing a folder.
 			INTEGER*4 FUNCTION $IShellFolderViewDual_GetViewOptions($OBJECT, plViewOptions)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_GetViewOptions
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plViewOptions	
				!DEC$ ATTRIBUTES REFERENCE	:: plViewOptions
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IShellFolderViewDual_GetViewOptions_PTR = $VTBL
				$RETURN = IShellFolderViewDual_GetViewOptions($OBJECT, plViewOptions)
				$IShellFolderViewDual_GetViewOptions = $RETURN
			END FUNCTION $IShellFolderViewDual_GetViewOptions
			!Show items menu and return command selected
 			INTEGER*4 FUNCTION $IShellFolderViewDual_PopupItemMenu($OBJECT, pfi, vx, vy, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_PopupItemMenu
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pfi	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pfi
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vx	
				!DEC$ ATTRIBUTES REFERENCE	:: vx
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vy	
				!DEC$ ATTRIBUTES REFERENCE	:: vy
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				TYPE (VARIANT) :: $VAR_vx
				TYPE (VARIANT) :: $VAR_vy
				INTEGER*4 $STATUS
				IF (PRESENT(vx)) THEN 
					$VAR_vx = vx
				ELSE
					$VAR_vx = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(vy)) THEN 
					$VAR_vy = vy
				ELSE
					$VAR_vy = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IShellFolderViewDual_PopupItemMenu_PTR = $VTBL
				$RETURN = IShellFolderViewDual_PopupItemMenu($OBJECT, pfi, $VAR_vx, $VAR_vy, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$IShellFolderViewDual_PopupItemMenu = $RETURN
			END FUNCTION $IShellFolderViewDual_PopupItemMenu
			!The collection of Selected Items in folder
 			INTEGER*4 FUNCTION $IShellFolderViewDual_SelectedItems($OBJECT, ppid)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_SelectedItems
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppid
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IShellFolderViewDual_SelectedItems_PTR = $VTBL
				$RETURN = IShellFolderViewDual_SelectedItems($OBJECT, ppid)
				$IShellFolderViewDual_SelectedItems = $RETURN
			END FUNCTION $IShellFolderViewDual_SelectedItems
			!Select the item
 			INTEGER*4 FUNCTION $IShellFolderViewDual_SelectItem($OBJECT, pvfi, dwFlags)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellFolderViewDual_SelectItem
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: pvfi	
				!DEC$ ATTRIBUTES REFERENCE	:: pvfi
				INTEGER, INTENT(IN)	:: dwFlags	
				!DEC$ ATTRIBUTES REFERENCE	:: dwFlags
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IShellFolderViewDual_SelectItem_PTR = $VTBL
				$RETURN = IShellFolderViewDual_SelectItem($OBJECT, pvfi, dwFlags)
				$IShellFolderViewDual_SelectItem = $RETURN
			END FUNCTION $IShellFolderViewDual_SelectItem
			!Get the arguments for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetArguments($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetArguments
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IShellLinkDual_GetArguments_PTR = $VTBL
				$RETURN = IShellLinkDual_GetArguments($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$IShellLinkDual_GetArguments = $RETURN
			END FUNCTION $IShellLinkDual_GetArguments
			!Get the description for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetDescription($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetDescription
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IShellLinkDual_GetDescription_PTR = $VTBL
				$RETURN = IShellLinkDual_GetDescription($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$IShellLinkDual_GetDescription = $RETURN
			END FUNCTION $IShellLinkDual_GetDescription
			!Get the Hotkey for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetHotkey($OBJECT, piHK)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetHotkey
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(OUT)	:: piHK	
				!DEC$ ATTRIBUTES REFERENCE	:: piHK
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IShellLinkDual_GetHotkey_PTR = $VTBL
				$RETURN = IShellLinkDual_GetHotkey($OBJECT, piHK)
				$IShellLinkDual_GetHotkey = $RETURN
			END FUNCTION $IShellLinkDual_GetHotkey
			!Get the IconLocation for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetIconLocation($OBJECT, pbs, piIcon)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetIconLocation
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER, INTENT(OUT)	:: piIcon	
				!DEC$ ATTRIBUTES REFERENCE	:: piIcon
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IShellLinkDual_GetIconLocation_PTR = $VTBL
				$RETURN = IShellLinkDual_GetIconLocation($OBJECT, $BSTR_pbs, piIcon)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$IShellLinkDual_GetIconLocation = $RETURN
			END FUNCTION $IShellLinkDual_GetIconLocation
			!Get the path of the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetPath($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetPath
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IShellLinkDual_GetPath_PTR = $VTBL
				$RETURN = IShellLinkDual_GetPath($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$IShellLinkDual_GetPath = $RETURN
			END FUNCTION $IShellLinkDual_GetPath
			!Get the Show Command for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetShowCommand($OBJECT, piShowCommand)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetShowCommand
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(OUT)	:: piShowCommand	
				!DEC$ ATTRIBUTES REFERENCE	:: piShowCommand
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IShellLinkDual_GetShowCommand_PTR = $VTBL
				$RETURN = IShellLinkDual_GetShowCommand($OBJECT, piShowCommand)
				$IShellLinkDual_GetShowCommand = $RETURN
			END FUNCTION $IShellLinkDual_GetShowCommand
			!Get the working directory for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_GetWorkingDirectory($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_GetWorkingDirectory
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IShellLinkDual_GetWorkingDirectory_PTR = $VTBL
				$RETURN = IShellLinkDual_GetWorkingDirectory($OBJECT, $BSTR_pbs)
				$STATUS = ConvertBSTRToString($BSTR_pbs, pbs)
				CALL SysFreeString($BSTR_pbs)
				$IShellLinkDual_GetWorkingDirectory = $RETURN
			END FUNCTION $IShellLinkDual_GetWorkingDirectory
			!Tell the link to resolve itself
 			INTEGER*4 FUNCTION $IShellLinkDual_Resolve($OBJECT, fFlags)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_Resolve
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: fFlags	
				!DEC$ ATTRIBUTES REFERENCE	:: fFlags
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IShellLinkDual_Resolve_PTR = $VTBL
				$RETURN = IShellLinkDual_Resolve($OBJECT, fFlags)
				$IShellLinkDual_Resolve = $RETURN
			END FUNCTION $IShellLinkDual_Resolve
			!Tell the link to save the changes
 			INTEGER*4 FUNCTION $IShellLinkDual_Save($OBJECT, vWhere)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_Save
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vWhere	
				!DEC$ ATTRIBUTES REFERENCE	:: vWhere
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vWhere
				IF (PRESENT(vWhere)) THEN 
					$VAR_vWhere = vWhere
				ELSE
					$VAR_vWhere = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IShellLinkDual_Save_PTR = $VTBL
				$RETURN = IShellLinkDual_Save($OBJECT, $VAR_vWhere)
				$IShellLinkDual_Save = $RETURN
			END FUNCTION $IShellLinkDual_Save
			!Get the arguments for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetArguments($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetArguments
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				$BSTR_pbs = ConvertStringToBSTR(pbs)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IShellLinkDual_SetArguments_PTR = $VTBL
				$RETURN = IShellLinkDual_SetArguments($OBJECT, $BSTR_pbs)
				$IShellLinkDual_SetArguments = $RETURN
			END FUNCTION $IShellLinkDual_SetArguments
			!Get the description for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetDescription($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetDescription
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				$BSTR_pbs = ConvertStringToBSTR(pbs)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IShellLinkDual_SetDescription_PTR = $VTBL
				$RETURN = IShellLinkDual_SetDescription($OBJECT, $BSTR_pbs)
				$IShellLinkDual_SetDescription = $RETURN
			END FUNCTION $IShellLinkDual_SetDescription
			!Get the Hotkey for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetHotkey($OBJECT, piHK)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetHotkey
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: piHK	
				!DEC$ ATTRIBUTES REFERENCE	:: piHK
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IShellLinkDual_SetHotkey_PTR = $VTBL
				$RETURN = IShellLinkDual_SetHotkey($OBJECT, piHK)
				$IShellLinkDual_SetHotkey = $RETURN
			END FUNCTION $IShellLinkDual_SetHotkey
			!Set the IconLocation for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetIconLocation($OBJECT, bs, iIcon)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetIconLocation
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: bs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: bs
				INTEGER, INTENT(IN)	:: iIcon	
				!DEC$ ATTRIBUTES REFERENCE	:: iIcon
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_bs    ! BSTR
				$BSTR_bs = ConvertStringToBSTR(bs)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IShellLinkDual_SetIconLocation_PTR = $VTBL
				$RETURN = IShellLinkDual_SetIconLocation($OBJECT, $BSTR_bs, iIcon)
				$IShellLinkDual_SetIconLocation = $RETURN
			END FUNCTION $IShellLinkDual_SetIconLocation
			!Get the path of the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetPath($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetPath
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				$BSTR_pbs = ConvertStringToBSTR(pbs)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IShellLinkDual_SetPath_PTR = $VTBL
				$RETURN = IShellLinkDual_SetPath($OBJECT, $BSTR_pbs)
				$IShellLinkDual_SetPath = $RETURN
			END FUNCTION $IShellLinkDual_SetPath
			!Get the Show Command for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetShowCommand($OBJECT, piShowCommand)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetShowCommand
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: piShowCommand	
				!DEC$ ATTRIBUTES REFERENCE	:: piShowCommand
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IShellLinkDual_SetShowCommand_PTR = $VTBL
				$RETURN = IShellLinkDual_SetShowCommand($OBJECT, piShowCommand)
				$IShellLinkDual_SetShowCommand = $RETURN
			END FUNCTION $IShellLinkDual_SetShowCommand
			!Get the working directory for the link
 			INTEGER*4 FUNCTION $IShellLinkDual_SetWorkingDirectory($OBJECT, pbs)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellLinkDual_SetWorkingDirectory
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pbs	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbs
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_pbs    ! BSTR
				$BSTR_pbs = ConvertStringToBSTR(pbs)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IShellLinkDual_SetWorkingDirectory_PTR = $VTBL
				$RETURN = IShellLinkDual_SetWorkingDirectory($OBJECT, $BSTR_pbs)
				$IShellLinkDual_SetWorkingDirectory = $RETURN
			END FUNCTION $IShellLinkDual_SetWorkingDirectory
 			INTEGER*4 FUNCTION $IShellUIHelper_AddChannel($OBJECT, URL)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_AddChannel
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_URL    ! BSTR
				$BSTR_URL = ConvertStringToBSTR(URL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IShellUIHelper_AddChannel_PTR = $VTBL
				$RETURN = IShellUIHelper_AddChannel($OBJECT, $BSTR_URL)
				$IShellUIHelper_AddChannel = $RETURN
			END FUNCTION $IShellUIHelper_AddChannel
 			INTEGER*4 FUNCTION $IShellUIHelper_AddDesktopComponent($OBJECT, URL, Type, Left, Top, Width, Height)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_AddDesktopComponent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				CHARACTER*(*), INTENT(IN)	:: Type	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Type
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Left	
				!DEC$ ATTRIBUTES REFERENCE	:: Left
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Top	
				!DEC$ ATTRIBUTES REFERENCE	:: Top
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Width	
				!DEC$ ATTRIBUTES REFERENCE	:: Width
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Height	
				!DEC$ ATTRIBUTES REFERENCE	:: Height
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_URL    ! BSTR
				INTEGER*4 $BSTR_Type    ! BSTR
				TYPE (VARIANT) :: $VAR_Left
				TYPE (VARIANT) :: $VAR_Top
				TYPE (VARIANT) :: $VAR_Width
				TYPE (VARIANT) :: $VAR_Height
				$BSTR_URL = ConvertStringToBSTR(URL)
				$BSTR_Type = ConvertStringToBSTR(Type)
				IF (PRESENT(Left)) THEN 
					$VAR_Left = Left
				ELSE
					$VAR_Left = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Top)) THEN 
					$VAR_Top = Top
				ELSE
					$VAR_Top = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Width)) THEN 
					$VAR_Width = Width
				ELSE
					$VAR_Width = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Height)) THEN 
					$VAR_Height = Height
				ELSE
					$VAR_Height = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IShellUIHelper_AddDesktopComponent_PTR = $VTBL
				$RETURN = IShellUIHelper_AddDesktopComponent($OBJECT, $BSTR_URL, $BSTR_Type, $VAR_Left, $VAR_Top, $VAR_Width, $VAR_Height)
				$IShellUIHelper_AddDesktopComponent = $RETURN
			END FUNCTION $IShellUIHelper_AddDesktopComponent
 			INTEGER*4 FUNCTION $IShellUIHelper_AddFavorite($OBJECT, URL, Title)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_AddFavorite
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Title	
				!DEC$ ATTRIBUTES REFERENCE	:: Title
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_URL    ! BSTR
				TYPE (VARIANT) :: $VAR_Title
				$BSTR_URL = ConvertStringToBSTR(URL)
				IF (PRESENT(Title)) THEN 
					$VAR_Title = Title
				ELSE
					$VAR_Title = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IShellUIHelper_AddFavorite_PTR = $VTBL
				$RETURN = IShellUIHelper_AddFavorite($OBJECT, $BSTR_URL, $VAR_Title)
				$IShellUIHelper_AddFavorite = $RETURN
			END FUNCTION $IShellUIHelper_AddFavorite
 			INTEGER*4 FUNCTION $IShellUIHelper_IsSubscribed($OBJECT, URL, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_IsSubscribed
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_URL    ! BSTR
				$BSTR_URL = ConvertStringToBSTR(URL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IShellUIHelper_IsSubscribed_PTR = $VTBL
				$RETURN = IShellUIHelper_IsSubscribed($OBJECT, $BSTR_URL, pBool)
				$IShellUIHelper_IsSubscribed = $RETURN
			END FUNCTION $IShellUIHelper_IsSubscribed
 			INTEGER*4 FUNCTION $IShellUIHelper_RefreshOfflineDesktop($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_RefreshOfflineDesktop
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IShellUIHelper_RefreshOfflineDesktop_PTR = $VTBL
				$RETURN = IShellUIHelper_RefreshOfflineDesktop($OBJECT)
				$IShellUIHelper_RefreshOfflineDesktop = $RETURN
			END FUNCTION $IShellUIHelper_RefreshOfflineDesktop
 			INTEGER*4 FUNCTION $IShellUIHelper_ResetFirstBootMode($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_ResetFirstBootMode
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IShellUIHelper_ResetFirstBootMode_PTR = $VTBL
				$RETURN = IShellUIHelper_ResetFirstBootMode($OBJECT)
				$IShellUIHelper_ResetFirstBootMode = $RETURN
			END FUNCTION $IShellUIHelper_ResetFirstBootMode
 			INTEGER*4 FUNCTION $IShellUIHelper_ResetSafeMode($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellUIHelper_ResetSafeMode
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IShellUIHelper_ResetSafeMode_PTR = $VTBL
				$RETURN = IShellUIHelper_ResetSafeMode($OBJECT)
				$IShellUIHelper_ResetSafeMode = $RETURN
			END FUNCTION $IShellUIHelper_ResetSafeMode
			!Enumerates the figures
 			INTEGER*4 FUNCTION $IShellWindows__NewEnum($OBJECT, ppunk)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows__NewEnum
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppunk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: ppunk
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IShellWindows__NewEnum_PTR = $VTBL
				$RETURN = IShellWindows__NewEnum($OBJECT, ppunk)
				$IShellWindows__NewEnum = $RETURN
			END FUNCTION $IShellWindows__NewEnum
			!Find the window based on the location
 			INTEGER*4 FUNCTION $IShellWindows_FindWindow($OBJECT, pvarloc, pvarlocRoot, swClass, pHWND, swfwOptions, ppdispOut)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_FindWindow
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: pvarloc	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarloc
				TYPE (VARIANT), INTENT(IN)	:: pvarlocRoot	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarlocRoot
				INTEGER, INTENT(IN)	:: swClass	
				!DEC$ ATTRIBUTES REFERENCE	:: swClass
				INTEGER*4, INTENT(OUT)	:: pHWND	
				!DEC$ ATTRIBUTES REFERENCE	:: pHWND
				INTEGER, INTENT(IN)	:: swfwOptions	
				!DEC$ ATTRIBUTES REFERENCE	:: swfwOptions
				INTEGER*4, INTENT(OUT)	:: ppdispOut	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppdispOut
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IShellWindows_FindWindow_PTR = $VTBL
				$RETURN = IShellWindows_FindWindow($OBJECT, pvarloc, pvarlocRoot, swClass, pHWND, swfwOptions, ppdispOut)
				$IShellWindows_FindWindow = $RETURN
			END FUNCTION $IShellWindows_FindWindow
			!Get count of open Shell windows
 			INTEGER*4 FUNCTION $IShellWindows_GetCount($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_GetCount
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IShellWindows_GetCount_PTR = $VTBL
				$RETURN = IShellWindows_GetCount($OBJECT, Count)
				$IShellWindows_GetCount = $RETURN
			END FUNCTION $IShellWindows_GetCount
			!Return the shell window for the given index
 			INTEGER*4 FUNCTION $IShellWindows_Item($OBJECT, index, Folder)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_Item
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: index	
				!DEC$ ATTRIBUTES REFERENCE	:: index
				INTEGER*4, INTENT(OUT)	:: Folder	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Folder
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_index
				IF (PRESENT(index)) THEN 
					$VAR_index = index
				ELSE
					$VAR_index = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IShellWindows_Item_PTR = $VTBL
				$RETURN = IShellWindows_Item($OBJECT, $VAR_index, Folder)
				$IShellWindows_Item = $RETURN
			END FUNCTION $IShellWindows_Item
			!Notifies the activation
 			INTEGER*4 FUNCTION $IShellWindows_OnActivated($OBJECT, lCookie, fActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_OnActivated
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: lCookie
				LOGICAL*2, INTENT(IN)	:: fActive	
				!DEC$ ATTRIBUTES REFERENCE	:: fActive
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IShellWindows_OnActivated_PTR = $VTBL
				$RETURN = IShellWindows_OnActivated($OBJECT, lCookie, fActive)
				$IShellWindows_OnActivated = $RETURN
			END FUNCTION $IShellWindows_OnActivated
			!Notifies on creation and frame name set
 			INTEGER*4 FUNCTION $IShellWindows_OnCreated($OBJECT, lCookie, punk)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_OnCreated
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: lCookie
				INTEGER*4, INTENT(IN)	:: punk	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: punk
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IShellWindows_OnCreated_PTR = $VTBL
				$RETURN = IShellWindows_OnCreated($OBJECT, lCookie, punk)
				$IShellWindows_OnCreated = $RETURN
			END FUNCTION $IShellWindows_OnCreated
			!Notifies the new location
 			INTEGER*4 FUNCTION $IShellWindows_OnNavigate($OBJECT, lCookie, pvarloc)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_OnNavigate
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: lCookie
				TYPE (VARIANT), INTENT(IN)	:: pvarloc	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarloc
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IShellWindows_OnNavigate_PTR = $VTBL
				$RETURN = IShellWindows_OnNavigate($OBJECT, lCookie, pvarloc)
				$IShellWindows_OnNavigate = $RETURN
			END FUNCTION $IShellWindows_OnNavigate
			!Used by IExplore to register different processes
 			INTEGER*4 FUNCTION $IShellWindows_ProcessAttachDetach($OBJECT, fAttach)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_ProcessAttachDetach
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: fAttach	
				!DEC$ ATTRIBUTES REFERENCE	:: fAttach
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IShellWindows_ProcessAttachDetach_PTR = $VTBL
				$RETURN = IShellWindows_ProcessAttachDetach($OBJECT, fAttach)
				$IShellWindows_ProcessAttachDetach = $RETURN
			END FUNCTION $IShellWindows_ProcessAttachDetach
			!Register a window with the list
 			INTEGER*4 FUNCTION $IShellWindows_Register($OBJECT, pid, HWND, swClass, plCookie)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_Register
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pid	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pid
				INTEGER*4, INTENT(IN)	:: HWND	
				!DEC$ ATTRIBUTES REFERENCE	:: HWND
				INTEGER, INTENT(IN)	:: swClass	
				!DEC$ ATTRIBUTES REFERENCE	:: swClass
				INTEGER*4, INTENT(OUT)	:: plCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: plCookie
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IShellWindows_Register_PTR = $VTBL
				$RETURN = IShellWindows_Register($OBJECT, pid, HWND, swClass, plCookie)
				$IShellWindows_Register = $RETURN
			END FUNCTION $IShellWindows_Register
			!Register a pending open with the list
 			INTEGER*4 FUNCTION $IShellWindows_RegisterPending($OBJECT, lThreadId, pvarloc, pvarlocRoot, swClass, plCookie)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_RegisterPending
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lThreadId	
				!DEC$ ATTRIBUTES REFERENCE	:: lThreadId
				TYPE (VARIANT), INTENT(IN)	:: pvarloc	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarloc
				TYPE (VARIANT), INTENT(IN)	:: pvarlocRoot	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarlocRoot
				INTEGER, INTENT(IN)	:: swClass	
				!DEC$ ATTRIBUTES REFERENCE	:: swClass
				INTEGER*4, INTENT(OUT)	:: plCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: plCookie
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IShellWindows_RegisterPending_PTR = $VTBL
				$RETURN = IShellWindows_RegisterPending($OBJECT, lThreadId, pvarloc, pvarlocRoot, swClass, plCookie)
				$IShellWindows_RegisterPending = $RETURN
			END FUNCTION $IShellWindows_RegisterPending
			!Remove a window from the list
 			INTEGER*4 FUNCTION $IShellWindows_Revoke($OBJECT, lCookie)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IShellWindows_Revoke
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: lCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: lCookie
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IShellWindows_Revoke_PTR = $VTBL
				$RETURN = IShellWindows_Revoke($OBJECT, lCookie)
				$IShellWindows_Revoke = $RETURN
			END FUNCTION $IShellWindows_Revoke
			!Returns the application automation object if accessible, this automation object otherwise..
 			INTEGER*4 FUNCTION $IWebBrowser_GetApplication($OBJECT, ppDisp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetApplication
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IWebBrowser_GetApplication_PTR = $VTBL
				$RETURN = IWebBrowser_GetApplication($OBJECT, ppDisp)
				$IWebBrowser_GetApplication = $RETURN
			END FUNCTION $IWebBrowser_GetApplication
			!Query to see if something is still in progress.
 			INTEGER*4 FUNCTION $IWebBrowser_GetBusy($OBJECT, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetBusy
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				IWebBrowser_GetBusy_PTR = $VTBL
				$RETURN = IWebBrowser_GetBusy($OBJECT, pBool)
				$IWebBrowser_GetBusy = $RETURN
			END FUNCTION $IWebBrowser_GetBusy
			!Returns the container/parent automation object, if any.
 			INTEGER*4 FUNCTION $IWebBrowser_GetContainer($OBJECT, ppDisp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetContainer
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IWebBrowser_GetContainer_PTR = $VTBL
				$RETURN = IWebBrowser_GetContainer($OBJECT, ppDisp)
				$IWebBrowser_GetContainer = $RETURN
			END FUNCTION $IWebBrowser_GetContainer
			!Returns the active Document automation object, if any.
 			INTEGER*4 FUNCTION $IWebBrowser_GetDocument($OBJECT, ppDisp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetDocument
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IWebBrowser_GetDocument_PTR = $VTBL
				$RETURN = IWebBrowser_GetDocument($OBJECT, ppDisp)
				$IWebBrowser_GetDocument = $RETURN
			END FUNCTION $IWebBrowser_GetDocument
			!The vertical dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION $IWebBrowser_GetHeight($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetHeight
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IWebBrowser_GetHeight_PTR = $VTBL
				$RETURN = IWebBrowser_GetHeight($OBJECT, pl)
				$IWebBrowser_GetHeight = $RETURN
			END FUNCTION $IWebBrowser_GetHeight
			!The horizontal position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION $IWebBrowser_GetLeft($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetLeft
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IWebBrowser_GetLeft_PTR = $VTBL
				$RETURN = IWebBrowser_GetLeft($OBJECT, pl)
				$IWebBrowser_GetLeft = $RETURN
			END FUNCTION $IWebBrowser_GetLeft
			!Gets the short (UI-friendly) name of the URL/file currently viewed.
 			INTEGER*4 FUNCTION $IWebBrowser_GetLocationName($OBJECT, LocationName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetLocationName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: LocationName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: LocationName
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_LocationName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IWebBrowser_GetLocationName_PTR = $VTBL
				$RETURN = IWebBrowser_GetLocationName($OBJECT, $BSTR_LocationName)
				$STATUS = ConvertBSTRToString($BSTR_LocationName, LocationName)
				CALL SysFreeString($BSTR_LocationName)
				$IWebBrowser_GetLocationName = $RETURN
			END FUNCTION $IWebBrowser_GetLocationName
			!Gets the full URL/path currently viewed.
 			INTEGER*4 FUNCTION $IWebBrowser_GetLocationURL($OBJECT, LocationURL)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetLocationURL
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: LocationURL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: LocationURL
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_LocationURL    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				IWebBrowser_GetLocationURL_PTR = $VTBL
				$RETURN = IWebBrowser_GetLocationURL($OBJECT, $BSTR_LocationURL)
				$STATUS = ConvertBSTRToString($BSTR_LocationURL, LocationURL)
				CALL SysFreeString($BSTR_LocationURL)
				$IWebBrowser_GetLocationURL = $RETURN
			END FUNCTION $IWebBrowser_GetLocationURL
			!Returns the automation object of the container/parent if one exists or this automation object.
 			INTEGER*4 FUNCTION $IWebBrowser_GetParent($OBJECT, ppDisp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetParent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: ppDisp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDisp
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IWebBrowser_GetParent_PTR = $VTBL
				$RETURN = IWebBrowser_GetParent($OBJECT, ppDisp)
				$IWebBrowser_GetParent = $RETURN
			END FUNCTION $IWebBrowser_GetParent
			!The vertical position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION $IWebBrowser_GetTop($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetTop
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IWebBrowser_GetTop_PTR = $VTBL
				$RETURN = IWebBrowser_GetTop($OBJECT, pl)
				$IWebBrowser_GetTop = $RETURN
			END FUNCTION $IWebBrowser_GetTop
			!Returns True if this is the top level object.
 			INTEGER*4 FUNCTION $IWebBrowser_GetTopLevelContainer($OBJECT, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetTopLevelContainer
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IWebBrowser_GetTopLevelContainer_PTR = $VTBL
				$RETURN = IWebBrowser_GetTopLevelContainer($OBJECT, pBool)
				$IWebBrowser_GetTopLevelContainer = $RETURN
			END FUNCTION $IWebBrowser_GetTopLevelContainer
			!Returns the type of the contained document object.
 			INTEGER*4 FUNCTION $IWebBrowser_GetType($OBJECT, Type)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetType
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Type	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Type
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_Type    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IWebBrowser_GetType_PTR = $VTBL
				$RETURN = IWebBrowser_GetType($OBJECT, $BSTR_Type)
				$STATUS = ConvertBSTRToString($BSTR_Type, Type)
				CALL SysFreeString($BSTR_Type)
				$IWebBrowser_GetType = $RETURN
			END FUNCTION $IWebBrowser_GetType
			!The horizontal dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION $IWebBrowser_GetWidth($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GetWidth
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IWebBrowser_GetWidth_PTR = $VTBL
				$RETURN = IWebBrowser_GetWidth($OBJECT, pl)
				$IWebBrowser_GetWidth = $RETURN
			END FUNCTION $IWebBrowser_GetWidth
			!Navigates to the previous item in the history list.
 			INTEGER*4 FUNCTION $IWebBrowser_GoBack($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GoBack
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IWebBrowser_GoBack_PTR = $VTBL
				$RETURN = IWebBrowser_GoBack($OBJECT)
				$IWebBrowser_GoBack = $RETURN
			END FUNCTION $IWebBrowser_GoBack
			!Navigates to the next item in the history list.
 			INTEGER*4 FUNCTION $IWebBrowser_GoForward($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GoForward
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IWebBrowser_GoForward_PTR = $VTBL
				$RETURN = IWebBrowser_GoForward($OBJECT)
				$IWebBrowser_GoForward = $RETURN
			END FUNCTION $IWebBrowser_GoForward
			!Go home/start page.
 			INTEGER*4 FUNCTION $IWebBrowser_GoHome($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GoHome
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IWebBrowser_GoHome_PTR = $VTBL
				$RETURN = IWebBrowser_GoHome($OBJECT)
				$IWebBrowser_GoHome = $RETURN
			END FUNCTION $IWebBrowser_GoHome
			!Go Search Page.
 			INTEGER*4 FUNCTION $IWebBrowser_GoSearch($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_GoSearch
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IWebBrowser_GoSearch_PTR = $VTBL
				$RETURN = IWebBrowser_GoSearch($OBJECT)
				$IWebBrowser_GoSearch = $RETURN
			END FUNCTION $IWebBrowser_GoSearch
			!Navigates to a URL or file.
 			INTEGER*4 FUNCTION $IWebBrowser_Navigate($OBJECT, URL, Flags, TargetFrameName, PostData, Headers)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_Navigate
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: URL	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: TargetFrameName	
				!DEC$ ATTRIBUTES REFERENCE	:: TargetFrameName
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: PostData	
				!DEC$ ATTRIBUTES REFERENCE	:: PostData
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Headers	
				!DEC$ ATTRIBUTES REFERENCE	:: Headers
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_URL    ! BSTR
				TYPE (VARIANT) :: $VAR_Flags
				TYPE (VARIANT) :: $VAR_TargetFrameName
				TYPE (VARIANT) :: $VAR_PostData
				TYPE (VARIANT) :: $VAR_Headers
				$BSTR_URL = ConvertStringToBSTR(URL)
				IF (PRESENT(Flags)) THEN 
					$VAR_Flags = Flags
				ELSE
					$VAR_Flags = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(TargetFrameName)) THEN 
					$VAR_TargetFrameName = TargetFrameName
				ELSE
					$VAR_TargetFrameName = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(PostData)) THEN 
					$VAR_PostData = PostData
				ELSE
					$VAR_PostData = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Headers)) THEN 
					$VAR_Headers = Headers
				ELSE
					$VAR_Headers = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IWebBrowser_Navigate_PTR = $VTBL
				$RETURN = IWebBrowser_Navigate($OBJECT, $BSTR_URL, $VAR_Flags, $VAR_TargetFrameName, $VAR_PostData, $VAR_Headers)
				$IWebBrowser_Navigate = $RETURN
			END FUNCTION $IWebBrowser_Navigate
			!Refresh the currently viewed page.
 			INTEGER*4 FUNCTION $IWebBrowser_Refresh($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_Refresh
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IWebBrowser_Refresh_PTR = $VTBL
				$RETURN = IWebBrowser_Refresh($OBJECT)
				$IWebBrowser_Refresh = $RETURN
			END FUNCTION $IWebBrowser_Refresh
			!Refresh the currently viewed page.
 			INTEGER*4 FUNCTION $IWebBrowser_Refresh2($OBJECT, Level)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_Refresh2
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Level	
				!DEC$ ATTRIBUTES REFERENCE	:: Level
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Level
				IF (PRESENT(Level)) THEN 
					$VAR_Level = Level
				ELSE
					$VAR_Level = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IWebBrowser_Refresh2_PTR = $VTBL
				$RETURN = IWebBrowser_Refresh2($OBJECT, $VAR_Level)
				$IWebBrowser_Refresh2 = $RETURN
			END FUNCTION $IWebBrowser_Refresh2
			!The vertical dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION $IWebBrowser_SetHeight($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_SetHeight
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IWebBrowser_SetHeight_PTR = $VTBL
				$RETURN = IWebBrowser_SetHeight($OBJECT, pl)
				$IWebBrowser_SetHeight = $RETURN
			END FUNCTION $IWebBrowser_SetHeight
			!The horizontal position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION $IWebBrowser_SetLeft($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_SetLeft
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IWebBrowser_SetLeft_PTR = $VTBL
				$RETURN = IWebBrowser_SetLeft($OBJECT, pl)
				$IWebBrowser_SetLeft = $RETURN
			END FUNCTION $IWebBrowser_SetLeft
			!The vertical position (pixels) of the frame window relative to the screen/container.
 			INTEGER*4 FUNCTION $IWebBrowser_SetTop($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_SetTop
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IWebBrowser_SetTop_PTR = $VTBL
				$RETURN = IWebBrowser_SetTop($OBJECT, pl)
				$IWebBrowser_SetTop = $RETURN
			END FUNCTION $IWebBrowser_SetTop
			!The horizontal dimension (pixels) of the frame window/object.
 			INTEGER*4 FUNCTION $IWebBrowser_SetWidth($OBJECT, pl)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_SetWidth
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pl	
				!DEC$ ATTRIBUTES REFERENCE	:: pl
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IWebBrowser_SetWidth_PTR = $VTBL
				$RETURN = IWebBrowser_SetWidth($OBJECT, pl)
				$IWebBrowser_SetWidth = $RETURN
			END FUNCTION $IWebBrowser_SetWidth
			!Stops opening a file.
 			INTEGER*4 FUNCTION $IWebBrowser_Stop($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser_Stop
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IWebBrowser_Stop_PTR = $VTBL
				$RETURN = IWebBrowser_Stop($OBJECT)
				$IWebBrowser_Stop = $RETURN
			END FUNCTION $IWebBrowser_Stop
			!IOleCommandTarget::Exec
 			INTEGER*4 FUNCTION $IWebBrowser2_ExecWB($OBJECT, cmdID, cmdexecopt, pvaIn, pvaOut)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_ExecWB
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: cmdID	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: cmdID
				INTEGER*4, INTENT(IN)	:: cmdexecopt	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: cmdexecopt
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: pvaIn	
				!DEC$ ATTRIBUTES REFERENCE	:: pvaIn
				TYPE (VARIANT), INTENT(INOUT), OPTIONAL	:: pvaOut	
				!DEC$ ATTRIBUTES REFERENCE	:: pvaOut
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_pvaIn
				TYPE (VARIANT) :: $VAR_pvaOut
				IF (PRESENT(pvaIn)) THEN 
					$VAR_pvaIn = pvaIn
				ELSE
					$VAR_pvaIn = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(pvaOut)) THEN 
					$VAR_pvaOut = pvaOut
				ELSE
					$VAR_pvaOut = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 216	! Add routine table offset
				IWebBrowser2_ExecWB_PTR = $VTBL
				$RETURN = IWebBrowser2_ExecWB($OBJECT, cmdID, cmdexecopt, $VAR_pvaIn, $VAR_pvaOut)
				IF (PRESENT(pvaOut)) pvaOut = $VAR_pvaOut
				$IWebBrowser2_ExecWB = $RETURN
			END FUNCTION $IWebBrowser2_ExecWB
			!Controls whether address bar is shown
 			INTEGER*4 FUNCTION $IWebBrowser2_GetAddressBar($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetAddressBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 268	! Add routine table offset
				IWebBrowser2_GetAddressBar_PTR = $VTBL
				$RETURN = IWebBrowser2_GetAddressBar($OBJECT, Value)
				$IWebBrowser2_GetAddressBar = $RETURN
			END FUNCTION $IWebBrowser2_GetAddressBar
			!Controls if the frame is offline (read from cache)
 			INTEGER*4 FUNCTION $IWebBrowser2_GetOffline($OBJECT, pbOffline)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetOffline
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbOffline	
				!DEC$ ATTRIBUTES REFERENCE	:: pbOffline
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 228	! Add routine table offset
				IWebBrowser2_GetOffline_PTR = $VTBL
				$RETURN = IWebBrowser2_GetOffline($OBJECT, pbOffline)
				$IWebBrowser2_GetOffline = $RETURN
			END FUNCTION $IWebBrowser2_GetOffline
 			INTEGER*4 FUNCTION $IWebBrowser2_GetReadyState($OBJECT, plReadyState)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetReadyState
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plReadyState	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plReadyState
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 224	! Add routine table offset
				IWebBrowser2_GetReadyState_PTR = $VTBL
				$RETURN = IWebBrowser2_GetReadyState($OBJECT, plReadyState)
				$IWebBrowser2_GetReadyState = $RETURN
			END FUNCTION $IWebBrowser2_GetReadyState
			!Registers OC as a top-level browser (for target name resolution)
 			INTEGER*4 FUNCTION $IWebBrowser2_GetRegisterAsBrowser($OBJECT, pbRegister)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetRegisterAsBrowser
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 244	! Add routine table offset
				IWebBrowser2_GetRegisterAsBrowser_PTR = $VTBL
				$RETURN = IWebBrowser2_GetRegisterAsBrowser($OBJECT, pbRegister)
				$IWebBrowser2_GetRegisterAsBrowser = $RETURN
			END FUNCTION $IWebBrowser2_GetRegisterAsBrowser
			!Registers OC as a drop target for navigation
 			INTEGER*4 FUNCTION $IWebBrowser2_GetRegisterAsDropTarget($OBJECT, pbRegister)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetRegisterAsDropTarget
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 252	! Add routine table offset
				IWebBrowser2_GetRegisterAsDropTarget_PTR = $VTBL
				$RETURN = IWebBrowser2_GetRegisterAsDropTarget($OBJECT, pbRegister)
				$IWebBrowser2_GetRegisterAsDropTarget = $RETURN
			END FUNCTION $IWebBrowser2_GetRegisterAsDropTarget
			!Controls whether the window is resizable
 			INTEGER*4 FUNCTION $IWebBrowser2_GetResizable($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetResizable
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 276	! Add routine table offset
				IWebBrowser2_GetResizable_PTR = $VTBL
				$RETURN = IWebBrowser2_GetResizable($OBJECT, Value)
				$IWebBrowser2_GetResizable = $RETURN
			END FUNCTION $IWebBrowser2_GetResizable
			!Controls if any dialog boxes can be shown
 			INTEGER*4 FUNCTION $IWebBrowser2_GetSilent($OBJECT, pbSilent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetSilent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbSilent	
				!DEC$ ATTRIBUTES REFERENCE	:: pbSilent
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 236	! Add routine table offset
				IWebBrowser2_GetSilent_PTR = $VTBL
				$RETURN = IWebBrowser2_GetSilent($OBJECT, pbSilent)
				$IWebBrowser2_GetSilent = $RETURN
			END FUNCTION $IWebBrowser2_GetSilent
			!Controls if the browser is in theater mode
 			INTEGER*4 FUNCTION $IWebBrowser2_GetTheaterMode($OBJECT, pbRegister)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_GetTheaterMode
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 260	! Add routine table offset
				IWebBrowser2_GetTheaterMode_PTR = $VTBL
				$RETURN = IWebBrowser2_GetTheaterMode($OBJECT, pbRegister)
				$IWebBrowser2_GetTheaterMode = $RETURN
			END FUNCTION $IWebBrowser2_GetTheaterMode
			!Navigates to a URL or file or pidl.
 			INTEGER*4 FUNCTION $IWebBrowser2_Navigate2($OBJECT, URL, Flags, TargetFrameName, PostData, Headers)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_Navigate2
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: URL	
				!DEC$ ATTRIBUTES REFERENCE	:: URL
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: TargetFrameName	
				!DEC$ ATTRIBUTES REFERENCE	:: TargetFrameName
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: PostData	
				!DEC$ ATTRIBUTES REFERENCE	:: PostData
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Headers	
				!DEC$ ATTRIBUTES REFERENCE	:: Headers
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Flags
				TYPE (VARIANT) :: $VAR_TargetFrameName
				TYPE (VARIANT) :: $VAR_PostData
				TYPE (VARIANT) :: $VAR_Headers
				IF (PRESENT(Flags)) THEN 
					$VAR_Flags = Flags
				ELSE
					$VAR_Flags = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(TargetFrameName)) THEN 
					$VAR_TargetFrameName = TargetFrameName
				ELSE
					$VAR_TargetFrameName = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(PostData)) THEN 
					$VAR_PostData = PostData
				ELSE
					$VAR_PostData = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Headers)) THEN 
					$VAR_Headers = Headers
				ELSE
					$VAR_Headers = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 208	! Add routine table offset
				IWebBrowser2_Navigate2_PTR = $VTBL
				$RETURN = IWebBrowser2_Navigate2($OBJECT, URL, $VAR_Flags, $VAR_TargetFrameName, $VAR_PostData, $VAR_Headers)
				$IWebBrowser2_Navigate2 = $RETURN
			END FUNCTION $IWebBrowser2_Navigate2
			!IOleCommandTarget::QueryStatus
 			INTEGER*4 FUNCTION $IWebBrowser2_QueryStatusWB($OBJECT, cmdID, pcmdf)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_QueryStatusWB
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: cmdID	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: cmdID
				INTEGER*4, INTENT(OUT)	:: pcmdf	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pcmdf
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 212	! Add routine table offset
				IWebBrowser2_QueryStatusWB_PTR = $VTBL
				$RETURN = IWebBrowser2_QueryStatusWB($OBJECT, cmdID, pcmdf)
				$IWebBrowser2_QueryStatusWB = $RETURN
			END FUNCTION $IWebBrowser2_QueryStatusWB
			!Controls whether address bar is shown
 			INTEGER*4 FUNCTION $IWebBrowser2_SetAddressBar($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetAddressBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 272	! Add routine table offset
				IWebBrowser2_SetAddressBar_PTR = $VTBL
				$RETURN = IWebBrowser2_SetAddressBar($OBJECT, Value)
				$IWebBrowser2_SetAddressBar = $RETURN
			END FUNCTION $IWebBrowser2_SetAddressBar
			!Controls if the frame is offline (read from cache)
 			INTEGER*4 FUNCTION $IWebBrowser2_SetOffline($OBJECT, pbOffline)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetOffline
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbOffline	
				!DEC$ ATTRIBUTES REFERENCE	:: pbOffline
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 232	! Add routine table offset
				IWebBrowser2_SetOffline_PTR = $VTBL
				$RETURN = IWebBrowser2_SetOffline($OBJECT, pbOffline)
				$IWebBrowser2_SetOffline = $RETURN
			END FUNCTION $IWebBrowser2_SetOffline
			!Registers OC as a top-level browser (for target name resolution)
 			INTEGER*4 FUNCTION $IWebBrowser2_SetRegisterAsBrowser($OBJECT, pbRegister)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetRegisterAsBrowser
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 248	! Add routine table offset
				IWebBrowser2_SetRegisterAsBrowser_PTR = $VTBL
				$RETURN = IWebBrowser2_SetRegisterAsBrowser($OBJECT, pbRegister)
				$IWebBrowser2_SetRegisterAsBrowser = $RETURN
			END FUNCTION $IWebBrowser2_SetRegisterAsBrowser
			!Registers OC as a drop target for navigation
 			INTEGER*4 FUNCTION $IWebBrowser2_SetRegisterAsDropTarget($OBJECT, pbRegister)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetRegisterAsDropTarget
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 256	! Add routine table offset
				IWebBrowser2_SetRegisterAsDropTarget_PTR = $VTBL
				$RETURN = IWebBrowser2_SetRegisterAsDropTarget($OBJECT, pbRegister)
				$IWebBrowser2_SetRegisterAsDropTarget = $RETURN
			END FUNCTION $IWebBrowser2_SetRegisterAsDropTarget
			!Controls whether the window is resizable
 			INTEGER*4 FUNCTION $IWebBrowser2_SetResizable($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetResizable
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 280	! Add routine table offset
				IWebBrowser2_SetResizable_PTR = $VTBL
				$RETURN = IWebBrowser2_SetResizable($OBJECT, Value)
				$IWebBrowser2_SetResizable = $RETURN
			END FUNCTION $IWebBrowser2_SetResizable
			!Controls if any dialog boxes can be shown
 			INTEGER*4 FUNCTION $IWebBrowser2_SetSilent($OBJECT, pbSilent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetSilent
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbSilent	
				!DEC$ ATTRIBUTES REFERENCE	:: pbSilent
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 240	! Add routine table offset
				IWebBrowser2_SetSilent_PTR = $VTBL
				$RETURN = IWebBrowser2_SetSilent($OBJECT, pbSilent)
				$IWebBrowser2_SetSilent = $RETURN
			END FUNCTION $IWebBrowser2_SetSilent
			!Controls if the browser is in theater mode
 			INTEGER*4 FUNCTION $IWebBrowser2_SetTheaterMode($OBJECT, pbRegister)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_SetTheaterMode
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbRegister	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRegister
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 264	! Add routine table offset
				IWebBrowser2_SetTheaterMode_PTR = $VTBL
				$RETURN = IWebBrowser2_SetTheaterMode($OBJECT, pbRegister)
				$IWebBrowser2_SetTheaterMode = $RETURN
			END FUNCTION $IWebBrowser2_SetTheaterMode
			!Set BrowserBar to Clsid
 			INTEGER*4 FUNCTION $IWebBrowser2_ShowBrowserBar($OBJECT, pvaClsid, pvarShow, pvarSize)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowser2_ShowBrowserBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: pvaClsid	
				!DEC$ ATTRIBUTES REFERENCE	:: pvaClsid
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: pvarShow	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarShow
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: pvarSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pvarSize
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_pvarShow
				TYPE (VARIANT) :: $VAR_pvarSize
				IF (PRESENT(pvarShow)) THEN 
					$VAR_pvarShow = pvarShow
				ELSE
					$VAR_pvarShow = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(pvarSize)) THEN 
					$VAR_pvarSize = pvarSize
				ELSE
					$VAR_pvarSize = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 220	! Add routine table offset
				IWebBrowser2_ShowBrowserBar_PTR = $VTBL
				$RETURN = IWebBrowser2_ShowBrowserBar($OBJECT, pvaClsid, $VAR_pvarShow, $VAR_pvarSize)
				$IWebBrowser2_ShowBrowserBar = $RETURN
			END FUNCTION $IWebBrowser2_ShowBrowserBar
			!Converts client sizes into window sizes.
 			INTEGER*4 FUNCTION $IWebBrowserApp_ClientToWindow($OBJECT, pcx, pcy)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_ClientToWindow
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(INOUT)	:: pcx	
				!DEC$ ATTRIBUTES REFERENCE	:: pcx
				INTEGER, INTENT(INOUT)	:: pcy	
				!DEC$ ATTRIBUTES REFERENCE	:: pcy
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				IWebBrowserApp_ClientToWindow_PTR = $VTBL
				$RETURN = IWebBrowserApp_ClientToWindow($OBJECT, pcx, pcy)
				$IWebBrowserApp_ClientToWindow = $RETURN
			END FUNCTION $IWebBrowserApp_ClientToWindow
			!Returns file specification of the application, including path.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetFullName($OBJECT, FullName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetFullName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: FullName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FullName
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_FullName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 152	! Add routine table offset
				IWebBrowserApp_GetFullName_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetFullName($OBJECT, $BSTR_FullName)
				$STATUS = ConvertBSTRToString($BSTR_FullName, FullName)
				CALL SysFreeString($BSTR_FullName)
				$IWebBrowserApp_GetFullName = $RETURN
			END FUNCTION $IWebBrowserApp_GetFullName
			!Maximizes window and turns off statusbar, toolbar, menubar, and titlebar.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetFullScreen($OBJECT, pbFullScreen)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetFullScreen
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbFullScreen	
				!DEC$ ATTRIBUTES REFERENCE	:: pbFullScreen
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 200	! Add routine table offset
				IWebBrowserApp_GetFullScreen_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetFullScreen($OBJECT, pbFullScreen)
				$IWebBrowserApp_GetFullScreen = $RETURN
			END FUNCTION $IWebBrowserApp_GetFullScreen
			!Returns the HWND of the current IE window.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetHWND($OBJECT, pHWND)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetHWND
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pHWND	
				!DEC$ ATTRIBUTES REFERENCE	:: pHWND
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 148	! Add routine table offset
				IWebBrowserApp_GetHWND_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetHWND($OBJECT, pHWND)
				$IWebBrowserApp_GetHWND = $RETURN
			END FUNCTION $IWebBrowserApp_GetHWND
			!Controls whether menubar is shown.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetMenuBar($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetMenuBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 192	! Add routine table offset
				IWebBrowserApp_GetMenuBar_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetMenuBar($OBJECT, Value)
				$IWebBrowserApp_GetMenuBar = $RETURN
			END FUNCTION $IWebBrowserApp_GetMenuBar
			!Returns name of the application.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetName($OBJECT, Name)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetName
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_Name    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 144	! Add routine table offset
				IWebBrowserApp_GetName_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetName($OBJECT, $BSTR_Name)
				$STATUS = ConvertBSTRToString($BSTR_Name, Name)
				CALL SysFreeString($BSTR_Name)
				$IWebBrowserApp_GetName = $RETURN
			END FUNCTION $IWebBrowserApp_GetName
			!Returns the path to the application.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetPath($OBJECT, Path)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetPath
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Path	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Path
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_Path    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 156	! Add routine table offset
				IWebBrowserApp_GetPath_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetPath($OBJECT, $BSTR_Path)
				$STATUS = ConvertBSTRToString($BSTR_Path, Path)
				CALL SysFreeString($BSTR_Path)
				$IWebBrowserApp_GetPath = $RETURN
			END FUNCTION $IWebBrowserApp_GetPath
			!Retrieve the Associated value for the property vtValue in the context of the object.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetProperty($OBJECT, Property, pvtValue)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetProperty
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: Property	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Property
				TYPE (VARIANT), INTENT(OUT)	:: pvtValue	
				!DEC$ ATTRIBUTES REFERENCE	:: pvtValue
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_Property    ! BSTR
				$BSTR_Property = ConvertStringToBSTR(Property)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				IWebBrowserApp_GetProperty_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetProperty($OBJECT, $BSTR_Property, pvtValue)
				$IWebBrowserApp_GetProperty = $RETURN
			END FUNCTION $IWebBrowserApp_GetProperty
			!Turn on or off the statusbar.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetStatusBar($OBJECT, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetStatusBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 168	! Add routine table offset
				IWebBrowserApp_GetStatusBar_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetStatusBar($OBJECT, pBool)
				$IWebBrowserApp_GetStatusBar = $RETURN
			END FUNCTION $IWebBrowserApp_GetStatusBar
			!Text of Status window.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetStatusText($OBJECT, StatusText)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetStatusText
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: StatusText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: StatusText
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_StatusText    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 176	! Add routine table offset
				IWebBrowserApp_GetStatusText_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetStatusText($OBJECT, $BSTR_StatusText)
				$STATUS = ConvertBSTRToString($BSTR_StatusText, StatusText)
				CALL SysFreeString($BSTR_StatusText)
				$IWebBrowserApp_GetStatusText = $RETURN
			END FUNCTION $IWebBrowserApp_GetStatusText
			!Controls which toolbar is shown.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetToolBar($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetToolBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(OUT)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 184	! Add routine table offset
				IWebBrowserApp_GetToolBar_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetToolBar($OBJECT, Value)
				$IWebBrowserApp_GetToolBar = $RETURN
			END FUNCTION $IWebBrowserApp_GetToolBar
			!Determines whether the application is visible or hidden.
 			INTEGER*4 FUNCTION $IWebBrowserApp_GetVisible($OBJECT, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_GetVisible
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 160	! Add routine table offset
				IWebBrowserApp_GetVisible_PTR = $VTBL
				$RETURN = IWebBrowserApp_GetVisible($OBJECT, pBool)
				$IWebBrowserApp_GetVisible = $RETURN
			END FUNCTION $IWebBrowserApp_GetVisible
			!Associates vtValue with the name szProperty in the context of the object.
 			INTEGER*4 FUNCTION $IWebBrowserApp_PutProperty($OBJECT, Property, vtValue)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_PutProperty
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: Property	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Property
				TYPE (VARIANT), INTENT(IN)	:: vtValue	
				!DEC$ ATTRIBUTES REFERENCE	:: vtValue
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_Property    ! BSTR
				$BSTR_Property = ConvertStringToBSTR(Property)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				IWebBrowserApp_PutProperty_PTR = $VTBL
				$RETURN = IWebBrowserApp_PutProperty($OBJECT, $BSTR_Property, vtValue)
				$IWebBrowserApp_PutProperty = $RETURN
			END FUNCTION $IWebBrowserApp_PutProperty
			!Exits application and closes the open document.
 			INTEGER*4 FUNCTION $IWebBrowserApp_Quit($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_Quit
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				IWebBrowserApp_Quit_PTR = $VTBL
				$RETURN = IWebBrowserApp_Quit($OBJECT)
				$IWebBrowserApp_Quit = $RETURN
			END FUNCTION $IWebBrowserApp_Quit
			!Maximizes window and turns off statusbar, toolbar, menubar, and titlebar.
 			INTEGER*4 FUNCTION $IWebBrowserApp_SetFullScreen($OBJECT, pbFullScreen)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_SetFullScreen
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbFullScreen	
				!DEC$ ATTRIBUTES REFERENCE	:: pbFullScreen
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 204	! Add routine table offset
				IWebBrowserApp_SetFullScreen_PTR = $VTBL
				$RETURN = IWebBrowserApp_SetFullScreen($OBJECT, pbFullScreen)
				$IWebBrowserApp_SetFullScreen = $RETURN
			END FUNCTION $IWebBrowserApp_SetFullScreen
			!Controls whether menubar is shown.
 			INTEGER*4 FUNCTION $IWebBrowserApp_SetMenuBar($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_SetMenuBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 196	! Add routine table offset
				IWebBrowserApp_SetMenuBar_PTR = $VTBL
				$RETURN = IWebBrowserApp_SetMenuBar($OBJECT, Value)
				$IWebBrowserApp_SetMenuBar = $RETURN
			END FUNCTION $IWebBrowserApp_SetMenuBar
			!Turn on or off the statusbar.
 			INTEGER*4 FUNCTION $IWebBrowserApp_SetStatusBar($OBJECT, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_SetStatusBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 172	! Add routine table offset
				IWebBrowserApp_SetStatusBar_PTR = $VTBL
				$RETURN = IWebBrowserApp_SetStatusBar($OBJECT, pBool)
				$IWebBrowserApp_SetStatusBar = $RETURN
			END FUNCTION $IWebBrowserApp_SetStatusBar
			!Text of Status window.
 			INTEGER*4 FUNCTION $IWebBrowserApp_SetStatusText($OBJECT, StatusText)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_SetStatusText
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: StatusText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: StatusText
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER*4 $BSTR_StatusText    ! BSTR
				$BSTR_StatusText = ConvertStringToBSTR(StatusText)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 180	! Add routine table offset
				IWebBrowserApp_SetStatusText_PTR = $VTBL
				$RETURN = IWebBrowserApp_SetStatusText($OBJECT, $BSTR_StatusText)
				$IWebBrowserApp_SetStatusText = $RETURN
			END FUNCTION $IWebBrowserApp_SetStatusText
			!Controls which toolbar is shown.
 			INTEGER*4 FUNCTION $IWebBrowserApp_SetToolBar($OBJECT, Value)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_SetToolBar
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER, INTENT(IN)	:: Value	
				!DEC$ ATTRIBUTES REFERENCE	:: Value
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 188	! Add routine table offset
				IWebBrowserApp_SetToolBar_PTR = $VTBL
				$RETURN = IWebBrowserApp_SetToolBar($OBJECT, Value)
				$IWebBrowserApp_SetToolBar = $RETURN
			END FUNCTION $IWebBrowserApp_SetToolBar
			!Determines whether the application is visible or hidden.
 			INTEGER*4 FUNCTION $IWebBrowserApp_SetVisible($OBJECT, pBool)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWebBrowserApp_SetVisible
				IMPLICIT NONE
	
				INTEGER*4, INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pBool	
				!DEC$ ATTRIBUTES REFERENCE	:: pBool
				INTEGER*4 $RETURN
				INTEGER*4 $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 164	! Add routine table offset
				IWebBrowserApp_SetVisible_PTR = $VTBL
				$RETURN = IWebBrowserApp_SetVisible($OBJECT, pBool)
				$IWebBrowserApp_SetVisible = $RETURN
			END FUNCTION $IWebBrowserApp_SetVisible
	END MODULE
