UnsafeNativeMethods.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / UnsafeNativeMethods.cs / 6 / UnsafeNativeMethods.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 
using System.Diagnostics.CodeAnalysis;
using System.Runtime.Versioning; 
 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Boolean,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Boolean,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32[]):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.IntPtr):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Object&):System.Int32")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Object&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.String):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Text.StringBuilder):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMAT2A):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMATA):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMATW):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARRANGE):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+EDITSTREAM):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+EDITSTREAM64):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+FINDTEXT):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+HDLAYOUT&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LOGFONT):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVBKIMAGE):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVCOLUMN):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVCOLUMN_T):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVFINDINFO&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVGROUP):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVHITTESTINFO&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVHITTESTINFO&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVHITTESTINFO):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVITEM&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVTILEVIEWINFO):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVTILEVIEWINFO):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+MCHITTESTINFO):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+MSG):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+MSG):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+PARAFORMAT):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+POINT):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+RECT&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+REPASTESPECIAL):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+SIZE):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+SYSTEMTIME):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+SYSTEMTIMEARRAY):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TBBUTTON&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TBBUTTONINFO&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TCITEM_T):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TEXTRANGE):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TOOLINFO_T):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TOOLINFO_TOOLTIP):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TV_HITTESTINFO):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TV_INSERTSTRUCT&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TV_ITEM&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+GETTEXTLENGTHEX,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Drawing.Rectangle&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+POINT,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.PostMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.IntPtr):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.PostMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.IntPtr):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods..ctor()")]
[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+SMsoComponentManager..ctor()")] 

// Verified that current call stacks that use these don't expose them in an unsafe fashion. 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.ClipCursor(System.Windows.Forms.NativeMethods+COMRECT):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.ClipCursor(System.Windows.Forms.NativeMethods+RECT&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetClientRect(System.Runtime.InteropServices.HandleRef,System.IntPtr):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetProcAddress(System.Runtime.InteropServices.HandleRef,System.String):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetRegionData(System.Runtime.InteropServices.HandleRef,System.Int32,System.IntPtr):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalFree(System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalLock(System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalUnlock(System.Runtime.InteropServices.HandleRef):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IsChild(System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+HDLAYOUT&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.ImmNotifyIME(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetAncestor(System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetFocus():System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SetFocus(System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(System.Guid&,System.Object,System.Int32,System.Guid&):System.Object")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CoRegisterMessageFilter(System.Runtime.InteropServices.HandleRef,System.IntPtr&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(System.Windows.Forms.NativeMethods+MSG&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.EnableScrollBar(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.EnumThreadWindows(System.Int32,System.Windows.Forms.NativeMethods+EnumThreadWindowsCallback,System.Runtime.InteropServices.HandleRef):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetForegroundWindow():System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMenu(System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMenuItemInfo(System.Runtime.InteropServices.HandleRef,System.Int32,System.Boolean,System.Windows.Forms.NativeMethods+MENUITEMINFO_T_RW):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMessageA(System.Windows.Forms.NativeMethods+MSG&,System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMessageW(System.Windows.Forms.NativeMethods+MSG&,System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetObject(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+BITMAP):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetShortPathName(System.String,System.String,System.UInt32):System.UInt32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetSystemPowerStatus(System.Windows.Forms.NativeMethods+SYSTEM_POWER_STATUS&):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetTempFileName(System.String,System.String,System.Int32,System.Text.StringBuilder):System.Void")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetWindowText(System.Runtime.InteropServices.HandleRef,System.Text.StringBuilder,System.Int32):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntCloseHandle(System.Runtime.InteropServices.HandleRef):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntCreateCompatibleDC(System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntCreateIC(System.String,System.String,System.String,System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntDuplicateHandle(System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef,System.IntPtr&,System.Int32,System.Boolean,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntOleInitialize(System.Int32):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IsDialogMessage(System.Runtime.InteropServices.HandleRef,System.Windows.Forms.NativeMethods+MSG&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.OleUninitialize():System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.PostThreadMessage(System.Int32,System.Int32,System.IntPtr,System.IntPtr):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Object&):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMAT2A):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+EDITSTREAM64):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVBKIMAGE):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVGROUP):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVTILEVIEWINFO):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TOOLINFO_TOOLTIP):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+GETTEXTLENGTHEX,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+POINT,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SystemParametersInfo(System.Int32,System.Int32,System.IntPtr[],System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.TranslateMessage(System.Windows.Forms.NativeMethods+MSG&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.WaitMessage():System.Void")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetShortPathName(System.String,System.Text.StringBuilder,System.UInt32):System.UInt32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetWindowLong32(System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetWindowLongPtr64(System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.OleCreateIPictureIndirect(System.Object,System.Guid&,System.Boolean):System.Windows.Forms.UnsafeNativeMethods+IPicture")] 

// Verified that current call stacks that use this seem to be safe. 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.GetCurrentActCtx(System.IntPtr&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.ActivateActCtx(System.IntPtr,System.IntPtr&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.CreateActCtx(System.Windows.Forms.UnsafeNativeMethods+ThemingScope+ACTCTX&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.DeactivateActCtx(System.Int32,System.IntPtr):System.Boolean")] 

// SEC 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemory(System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef,System.Int32):System.Void")] 

// SEC 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalAlloc(System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalReAlloc(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemoryW(System.IntPtr,System.String,System.Int32):System.Void")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemoryW(System.IntPtr,System.Char[],System.Int32):System.Void")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemoryA(System.IntPtr,System.String,System.Int32):System.Void")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemory(System.IntPtr,System.Byte[],System.Int32):System.Void")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.WideCharToMultiByte(System.Int32,System.Int32,System.String,System.Int32,System.Byte[],System.Int32,System.IntPtr,System.IntPtr):System.Int32")] 

[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SetWindowLongPtr64(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SetWindowLongPtr32(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SHLoadIndirectString(System.String,System.Text.StringBuilder,System.UInt32,System.IntPtr):System.UInt32")]

[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+Shell32.SHCreateShellItem(System.IntPtr,System.IntPtr,System.IntPtr,System.Windows.Forms.FileDialogNative+IShellItem&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+Shell32.SHGetFolderPathExPrivate(System.Guid&,System.UInt32,System.IntPtr,System.Text.StringBuilder,System.UInt32):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+Shell32.SHILCreateFromPath(System.String,System.IntPtr&,System.UInt32&):System.Int32")] 
 
namespace System.Windows.Forms {
 
    using Accessibility;
    using System.Runtime.InteropServices;
    using System.Runtime.InteropServices.ComTypes;
    using System.Runtime.ConstrainedExecution; 
    using System;
    using System.Security.Permissions; 
    using System.Collections; 
    using System.IO;
    using System.Text; 
    using System.Security;
    using System.Diagnostics;
    using System.Diagnostics.CodeAnalysis;
    using System.Drawing; 

    using IComDataObject = System.Runtime.InteropServices.ComTypes.IDataObject; 
 
    [
    SuppressUnmanagedCodeSecurity() 
    ]
    internal static class UnsafeNativeMethods {

        [DllImport(ExternDll.Shlwapi, CharSet=CharSet.Unicode, ExactSpelling=true)] 
        internal static extern uint SHLoadIndirectString(string pszSource, StringBuilder pszOutBuf, uint cchOutBuf, IntPtr ppvReserved);
 
        [DllImport(ExternDll.Ole32)] 
        public static extern int ReadClassStg(HandleRef pStg, [In, Out] ref Guid pclsid);
 
        [DllImport(ExternDll.User32)]
        public static extern int GetClassName(HandleRef hwnd, StringBuilder lpClassName, int nMaxCount);

        //SetClassLong won't work correctly for 64-bit: we should use SetClassLongPtr instead.  On 
        //32-bit, SetClassLongPtr is just #defined as SetClassLong.  SetClassLong really should
        //take/return int instead of IntPtr/HandleRef, but since we're running this only for 32-bit 
        //it'll be OK. 
        public static IntPtr SetClassLong(HandleRef hWnd, int nIndex, IntPtr dwNewLong)
        { 
            if (IntPtr.Size == 4)
            {
                return SetClassLongPtr32(hWnd, nIndex, dwNewLong);
            } 
            return SetClassLongPtr64(hWnd, nIndex, dwNewLong);
        } 
        [DllImport(ExternDll.User32, CharSet = System.Runtime.InteropServices.CharSet.Auto, EntryPoint = "SetClassLong")] 
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        public static extern IntPtr SetClassLongPtr32(HandleRef hwnd, int nIndex, IntPtr dwNewLong); 
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
        [DllImport(ExternDll.User32, CharSet = System.Runtime.InteropServices.CharSet.Auto, EntryPoint = "SetClassLongPtr")]
        public static extern IntPtr SetClassLongPtr64(HandleRef hwnd, int nIndex, IntPtr dwNewLong);
 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, PreserveSig=false)]
        public static extern UnsafeNativeMethods.IClassFactory2 CoGetClassObject( 
            [In] 
            ref Guid clsid,
            int dwContext, 
            int serverInfo,
            [In]
            ref Guid refiid);
 
        [return: MarshalAs(UnmanagedType.Interface)][DllImport(ExternDll.Ole32, ExactSpelling=true, PreserveSig=false)]
        public static extern object CoCreateInstance( 
            [In] 
            ref Guid clsid,
            [MarshalAs(UnmanagedType.Interface)] 
            object punkOuter,
            int context,
            [In]
            ref Guid iid); 

        //This marshals differently than NativeMethods.POINTSTRUCT 
        private struct POINTSTRUCT { 
            public int x;
            public int y; 

            public POINTSTRUCT(int x, int y) {
                this.x = x;
                this.y = y; 
            }
        } 
 
        // We need this for Vista specific features/fixes
        private static readonly Version VistaOSVersion = new Version(6, 0); 

        /// 
        /// Used to tell if Vista API's are supported
        ///  
        internal static bool IsVista
        { 
            get 
            {
                OperatingSystem os = Environment.OSVersion; 
                if (os == null)
                    return false;

                return (os.Platform == PlatformID.Win32NT) && 
                       (os.Version.CompareTo(VistaOSVersion) >= 0);
            } 
        } 

        [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] 
        public static extern int GetLocaleInfo(int Locale,int LCType,StringBuilder lpLCData,int cchData) ;

        [DllImport(ExternDll.Ole32)]
        public static extern int WriteClassStm(IStream pStream, ref Guid clsid); 

        [DllImport(ExternDll.Ole32)] 
        public static extern int ReadClassStg(IStorage pStorage, [Out]out Guid clsid); 

        [DllImport(ExternDll.Ole32)] 
        public static extern int ReadClassStm(IStream pStream, [Out]out Guid clsid);

        [DllImport(ExternDll.Ole32)]
        public static extern int OleLoadFromStream(IStream pStorage, ref Guid iid, out IOleObject pObject); 
        [DllImport(ExternDll.Ole32)]
          public static extern int OleSaveToStream(IPersistStream pPersistStream, IStream pStream); 
 
        [DllImport(ExternDll.Ole32)]
        public static extern int CoGetMalloc(int dwReserved, out IMalloc pMalloc); 

        /* Commenting this out until someone actually needs to use it again...
        [DllImport(ExternDll.Ole32)]
          public static extern int OleSetMenuDescriptor(IntPtr hOleMenu, IntPtr hWndFrame, IntPtr hWndActiveObject, IOleInPlaceFrame frame, IOleInPlaceActiveObject activeObject); 
        */
 
        /* Commenting this out until someone actually needs to use it again... 
        [DllImport(ExternDll.Kernel32)]
        public static extern bool IsBadReadPtr(HandleRef ptr, int size); 
        */

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern bool PageSetupDlg([In, Out] NativeMethods.PAGESETUPDLG lppsd); 

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern bool PrintDlg([In, Out] NativeMethods.PRINTDLG lppd); 

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int PrintDlgEx([In, Out] NativeMethods.PRINTDLGEX lppdex);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int OleGetClipboard(ref IComDataObject data);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int OleSetClipboard(IComDataObject pDataObj);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int OleFlushClipboard(); 
        [DllImport(ExternDll.Oleaut32, ExactSpelling=true)]
        public static extern void OleCreatePropertyFrameIndirect(NativeMethods.OCPFIPARAMS p); 
        [DllImport(ExternDll.Oleaut32, EntryPoint = "OleCreateFontIndirect", ExactSpelling = true, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IFont OleCreateIFontIndirect(NativeMethods.FONTDESC fd, ref Guid iid);
        [DllImport(ExternDll.Oleaut32, EntryPoint = "OleCreatePictureIndirect", ExactSpelling = true, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IPicture OleCreateIPictureIndirect([MarshalAs(UnmanagedType.AsAny)]object pictdesc, ref Guid iid, bool fOwn); 
        [DllImport(ExternDll.Oleaut32, EntryPoint = "OleCreatePictureIndirect", ExactSpelling = true, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IPictureDisp OleCreateIPictureDispIndirect([MarshalAs(UnmanagedType.AsAny)] object pictdesc, ref Guid iid, bool fOwn); 
        // cpb: #8309 -- next two methods, refiid arg must be IPicture.iid 
        [DllImport(ExternDll.Oleaut32, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IPicture OleCreatePictureIndirect(NativeMethods.PICTDESC pictdesc, [In]ref Guid refiid, bool fOwn); 
        [DllImport(ExternDll.Oleaut32, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IFont OleCreateFontIndirect(NativeMethods.tagFONTDESC fontdesc, [In]ref Guid refiid);
        [DllImport(ExternDll.Oleaut32, ExactSpelling = true)]
        public static extern int VarFormat(ref object pvarIn, HandleRef pstrFormat, int iFirstDay, int iFirstWeek, uint dwFlags, [In, Out]ref IntPtr pbstr); 
        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)]
        public static extern int DragQueryFile(HandleRef hDrop, int iFile, StringBuilder lpszFile, int cch); 
        [DllImport(ExternDll.User32, ExactSpelling=true)] 
        public static extern bool EnumChildWindows(HandleRef hwndParent, NativeMethods.EnumChildrenCallback lpEnumFunc, HandleRef lParam);
        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)] 
        public static extern IntPtr ShellExecute(HandleRef hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto, EntryPoint="ShellExecute", BestFitMapping = false)]
        public static extern IntPtr ShellExecute_NoBFM(HandleRef hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern int SetScrollPos(HandleRef hWnd, int nBar, int nPos, bool bRedraw);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern bool EnableScrollBar(HandleRef hWnd, int nBar, int value); 

        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)] 
        public static extern int Shell_NotifyIcon(int message, NativeMethods.NOTIFYICONDATA pnid);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static bool InsertMenuItem(HandleRef hMenu, int uItem, bool fByPosition, NativeMethods.MENUITEMINFO_T lpmii);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr  GetMenu(HandleRef hWnd);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool GetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, [In, Out] NativeMethods.MENUITEMINFO_T lpmii); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool GetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, [In, Out] NativeMethods.MENUITEMINFO_T_RW lpmii); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static bool SetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, NativeMethods.MENUITEMINFO_T lpmii);
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="CreateMenu", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateMenu(); 
        public static IntPtr CreateMenu() {
            return System.Internal.HandleCollector.Add(IntCreateMenu(), NativeMethods.CommonHandles.Menu); 
        } 

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern bool GetOpenFileName([In, Out] NativeMethods.OPENFILENAME_I ofn);

        [DllImport(ExternDll.User32, ExactSpelling=true)]
        public static extern bool EndDialog(HandleRef hWnd, IntPtr result); 

        public const int MB_PRECOMPOSED = 0x00000001; 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Unicode, SetLastError=true)] 
        public static extern int MultiByteToWideChar(int CodePage, int dwFlags, byte[] lpMultiByteStr, int cchMultiByte, char[] lpWideCharStr, int cchWideChar);
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Unicode)] 
        public static extern int WideCharToMultiByte(int codePage, int flags, [MarshalAs(UnmanagedType.LPWStr)]string wideStr, int chars, [In,Out]byte[] pOutBytes, int bufferBytes, IntPtr defaultChar, IntPtr pDefaultUsed);

        [DllImport(ExternDll.Kernel32, SetLastError=true, ExactSpelling=true, EntryPoint="RtlMoveMemory", CharSet=CharSet.Auto)]
        public static extern void CopyMemory(HandleRef destData, HandleRef srcData, int size); 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, EntryPoint="RtlMoveMemory")]
        public static extern void CopyMemory(IntPtr pdst, byte[] psrc, int cb); 
 
        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Unicode)]
        public static extern void CopyMemoryW(IntPtr pdst, string psrc, int cb); 
        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Unicode)]
        public static extern void CopyMemoryW(IntPtr pdst, char[] psrc, int cb);

        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Ansi)] 
        public static extern void CopyMemoryA(IntPtr pdst, string psrc, int cb);
        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Ansi)] 
        public static extern void CopyMemoryA(IntPtr pdst, char[] psrc, int cb); 

 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, EntryPoint="DuplicateHandle", SetLastError=true)]
        private static extern IntPtr IntDuplicateHandle(HandleRef processSource, HandleRef handleSource, HandleRef processTarget, ref IntPtr handleTarget, int desiredAccess, bool inheritHandle, int options);
        public static IntPtr DuplicateHandle(HandleRef processSource, HandleRef handleSource, HandleRef processTarget, ref IntPtr handleTarget, int desiredAccess, bool inheritHandle, int options) {
            IntPtr ret = IntDuplicateHandle(processSource, handleSource, processTarget, ref handleTarget, 
                                         desiredAccess, inheritHandle, options);
            System.Internal.HandleCollector.Add(handleTarget, NativeMethods.CommonHandles.Kernel); 
            return ret; 
        }
 
        [DllImport(ExternDll.Ole32, PreserveSig=false)]
        public static extern UnsafeNativeMethods.IStorage StgOpenStorageOnILockBytes(UnsafeNativeMethods.ILockBytes iLockBytes, UnsafeNativeMethods.IStorage pStgPriority, int grfMode, int sndExcluded, int reserved);
        [DllImport(ExternDll.Ole32, PreserveSig=false)]
        public static extern IntPtr GetHGlobalFromILockBytes(UnsafeNativeMethods.ILockBytes pLkbyt); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SetWindowsHookEx(int hookid, NativeMethods.HookProc pfnhook, HandleRef hinst, int threadid); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetKeyboardState(byte [] keystate);
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="keybd_event", CharSet=CharSet.Auto)] 
        public static extern void Keybd_event(byte vk, byte scan, int flags, int extrainfo);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int SetKeyboardState(byte [] keystate);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool UnhookWindowsHookEx(HandleRef hhook);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern short GetAsyncKeyState(int vkey); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr CallNextHookEx(HandleRef hhook, int code, IntPtr wparam, IntPtr lparam); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int ScreenToClient( HandleRef hWnd, [In, Out] NativeMethods.POINT pt );
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        public static extern int GetModuleFileName(HandleRef hModule, StringBuilder buffer, int length); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool IsDialogMessage(HandleRef hWndDlg, [In, Out] ref NativeMethods.MSG msg); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool TranslateMessage([In, Out] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr DispatchMessage([In] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Ansi)]
        public static extern IntPtr DispatchMessageA([In] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Unicode)] 
        public static extern IntPtr DispatchMessageW([In] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int PostThreadMessage(int id, int msg, IntPtr wparam, IntPtr lparam); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true)]
        public static extern int CoRegisterMessageFilter(HandleRef newFilter, ref IntPtr oldMsgFilter); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, EntryPoint="OleInitialize", SetLastError=true)]
        private static extern int IntOleInitialize(int val);
        public static int OleInitialize() {
            return IntOleInitialize(0); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public extern static bool EnumThreadWindows(int dwThreadId, NativeMethods.EnumThreadWindowsCallback lpfn, HandleRef lParam);
        [return:MarshalAs(UnmanagedType.Bool)] [DllImport(ExternDll.Kernel32)] 
        public extern static bool GetExitCodeThread(IntPtr hThread, out uint lpExitCode);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendDlgItemMessage(HandleRef hDlg, int nIDDlgItem, int Msg, IntPtr wParam, IntPtr lParam);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern int OleUninitialize();
        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern bool GetSaveFileName([In, Out] NativeMethods.OPENFILENAME_I ofn); 
        [DllImport(ExternDll.User32, EntryPoint="ChildWindowFromPointEx", ExactSpelling=true, CharSet=CharSet.Auto)]
        private static extern IntPtr _ChildWindowFromPointEx(HandleRef hwndParent, POINTSTRUCT pt, int uFlags); 
        public static IntPtr ChildWindowFromPointEx(HandleRef hwndParent, int x, int y, int uFlags) {
            POINTSTRUCT ps = new POINTSTRUCT(x, y);
            return _ChildWindowFromPointEx(hwndParent, ps, uFlags);
        } 
        [DllImport(ExternDll.Kernel32, EntryPoint="CloseHandle", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
        private static extern bool IntCloseHandle(HandleRef handle); 
        public static bool CloseHandle(HandleRef handle) { 
            System.Internal.HandleCollector.Remove((IntPtr)handle, NativeMethods.CommonHandles.Kernel);
            return IntCloseHandle(handle); 
        }

        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, EntryPoint="CreateCompatibleDC", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateCompatibleDC(HandleRef hDC); 
        public static IntPtr CreateCompatibleDC(HandleRef hDC) {
            return System.Internal.HandleCollector.Add(IntCreateCompatibleDC(hDC), NativeMethods.CommonHandles.CompatibleHDC); 
        } 

        #region SendKeys SendInput functionality 

        [DllImport(ExternDll.User32, ExactSpelling = true, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool BlockInput([In, MarshalAs(UnmanagedType.Bool)] bool fBlockIt); 

        [DllImport(ExternDll.User32, ExactSpelling = true, SetLastError=true, CharSet = CharSet.Auto)] 
        public static extern uint SendInput(uint nInputs, NativeMethods.INPUT[] pInputs, int cbSize); 

        #endregion 

        /*
        [DllImport(ExternDll.Kernel32, EntryPoint = "CreateFileMapping", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr IntCreateFileMapping(HandleRef hFile, IntPtr lpAttributes, int flProtect, int dwMaxSizeHi, int dwMaxSizeLow, string lpName); 
        public static IntPtr CreateFileMapping(HandleRef hFile, IntPtr lpAttributes, int flProtect, int dwMaxSizeHi, int dwMaxSizeLow, string lpName) {
            return System.Internal.HandleCollector.Add(IntCreateFileMapping(hFile, lpAttributes, flProtect, dwMaxSizeHi, dwMaxSizeLow, lpName), NativeMethods.CommonHandles.Kernel); 
        } 

        [DllImport(ExternDll.Kernel32, EntryPoint = "OpenFileMapping", CharSet = CharSet.Auto, SetLastError = true)] 
        private static extern IntPtr IntOpenFileMapping(int dwDesiredAccess, bool bInheritHandle, string lpName);
        public static IntPtr OpenFileMapping(int dwDesiredAccess, bool bInheritHandle, string lpName) {
            return System.Internal.HandleCollector.Add(IntOpenFileMapping(dwDesiredAccess, bInheritHandle, lpName), NativeMethods.CommonHandles.Kernel);
        } 
*/
 
        [DllImport(ExternDll.Kernel32, EntryPoint = "MapViewOfFile", ExactSpelling = true, CharSet = CharSet.Auto, SetLastError = true)] 
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        private static extern IntPtr IntMapViewOfFile(HandleRef hFileMapping, int dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfBytesToMap); 
        public static IntPtr MapViewOfFile(HandleRef hFileMapping, int dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfBytesToMap) {
            return System.Internal.HandleCollector.Add(IntMapViewOfFile(hFileMapping, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap), NativeMethods.CommonHandles.Kernel);
        }
 
        [DllImport(ExternDll.Kernel32, EntryPoint = "UnmapViewOfFile", ExactSpelling = true, CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool IntUnmapViewOfFile(HandleRef pvBaseAddress); 
        public static bool UnmapViewOfFile(HandleRef pvBaseAddress) { 
            System.Internal.HandleCollector.Remove((IntPtr)pvBaseAddress, NativeMethods.CommonHandles.Kernel);
            return IntUnmapViewOfFile(pvBaseAddress); 
        }

        [DllImport(ExternDll.User32, ExactSpelling = true, EntryPoint = "GetDCEx", CharSet = CharSet.Auto)]
        private static extern IntPtr IntGetDCEx(HandleRef hWnd, HandleRef hrgnClip, int flags); 
        public static IntPtr GetDCEx(HandleRef hWnd, HandleRef hrgnClip, int flags) {
            return System.Internal.HandleCollector.Add(IntGetDCEx(hWnd, hrgnClip, flags), NativeMethods.CommonHandles.HDC); 
        } 

        // GetObject stuff 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.BITMAP bm);

        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.LOGPEN lp);
        public static int GetObject(HandleRef hObject, NativeMethods.LOGPEN lp) { 
            return GetObject(hObject, Marshal.SizeOf(typeof(NativeMethods.LOGPEN)), lp); 
        }
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.LOGBRUSH lb);
        public static int GetObject(HandleRef hObject, NativeMethods.LOGBRUSH lb) {
            return GetObject(hObject, Marshal.SizeOf(typeof(NativeMethods.LOGBRUSH)), lb); 
        }
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.LOGFONT lf);
        public static int GetObject(HandleRef hObject, NativeMethods.LOGFONT lp) { 
            return GetObject(hObject, Marshal.SizeOf(typeof(NativeMethods.LOGFONT)), lp);
        }

        //HPALETTE 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern int GetObject(HandleRef hObject, int nSize, ref int nEntries); 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int GetObject(HandleRef hObject, int nSize, int[] nEntries);
        [DllImport(ExternDll.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] 
        public static extern int GetObjectType(HandleRef hObject);

        [DllImport(ExternDll.User32, EntryPoint="CreateAcceleratorTable", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateAcceleratorTable(/*ACCEL*/ HandleRef pentries, int cCount); 
        public static IntPtr CreateAcceleratorTable(/*ACCEL*/ HandleRef pentries, int cCount) {
            return System.Internal.HandleCollector.Add(IntCreateAcceleratorTable(pentries, cCount), NativeMethods.CommonHandles.Accelerator); 
        } 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyAcceleratorTable", CharSet=CharSet.Auto)]
        private static extern bool IntDestroyAcceleratorTable(HandleRef hAccel); 
        public static bool DestroyAcceleratorTable(HandleRef hAccel) {
            System.Internal.HandleCollector.Remove((IntPtr)hAccel, NativeMethods.CommonHandles.Accelerator);
            return IntDestroyAcceleratorTable(hAccel);
        } 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern short VkKeyScan(char key); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetCapture(); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetCapture(HandleRef hwnd);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        [ResourceExposure(ResourceScope.None)] 
        public static extern IntPtr GetFocus();
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool GetCursorPos([In, Out] NativeMethods.POINT pt); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern short GetKeyState(int keyCode); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        [SuppressMessage("Microsoft.Security", "CA2101:SpecifyMarshalingForPInvokeStringArguments")]
        public static extern uint GetShortPathName(string lpszLongPath, StringBuilder lpszShortPath, uint cchBuffer);
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="SetWindowRgn", CharSet=CharSet.Auto)] 
        private static extern int IntSetWindowRgn(HandleRef hwnd, HandleRef hrgn, bool fRedraw);
        public static int SetWindowRgn(HandleRef hwnd, HandleRef hrgn, bool fRedraw) { 
            int retval = IntSetWindowRgn(hwnd, hrgn, fRedraw); 
            if (retval != 0) {
                // we do this because after a SetWindowRgn call, the system owns the region 
                // so we don't need to bother cleaning it up.
                //
                System.Internal.HandleCollector.Remove((IntPtr)hrgn, NativeMethods.CommonHandles.GDI);
            } 
            return retval;
        } 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int GetWindowText(HandleRef hWnd, StringBuilder lpString, int nMaxCount);
 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        public static extern void GetTempFileName(string tempDirName, string prefixName, int unique, StringBuilder sb);
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SetWindowText(HandleRef hWnd, string text); 
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalAlloc(int uFlags, int dwBytes); 

        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalReAlloc(HandleRef handle, int bytes, int flags);
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalLock(HandleRef handle); 
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GlobalUnlock(HandleRef handle); 

        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalFree(HandleRef handle);
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int GlobalSize(HandleRef handle); 
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmSetConversionStatus(HandleRef hIMC, int conversion, int sentence); 

        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmGetConversionStatus(HandleRef hIMC, ref int conversion, ref int sentence);
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern IntPtr ImmGetContext(HandleRef hWnd); 
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmReleaseContext(HandleRef hWnd, HandleRef hIMC); 

        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern IntPtr ImmAssociateContext(HandleRef hWnd, HandleRef hIMC);
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmDestroyContext(HandleRef hIMC); 
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern IntPtr ImmCreateContext(); 

        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmSetOpenStatus(HandleRef hIMC, bool open);
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmGetOpenStatus(HandleRef hIMC); 
 
        [DllImport(ExternDll.Imm32, CharSet = CharSet.Auto)]
        public static extern bool ImmNotifyIME(HandleRef hIMC, int dwAction, int dwIndex, int dwValue); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetFocus(HandleRef hWnd);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetParent(HandleRef hWnd); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetAncestor(HandleRef hWnd, int flags); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool IsChild(HandleRef hWndParent, HandleRef hwnd);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")] 
        public static extern bool IsZoomed(HandleRef hWnd); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr FindWindow(string className, string windowName);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int MapWindowPoints(HandleRef hWndFrom, HandleRef hWndTo, [In, Out] ref NativeMethods.RECT rect, int cPoints); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int MapWindowPoints(HandleRef hWndFrom, HandleRef hWndTo, [In, Out] NativeMethods.POINT pt, int cPoints); 

        [DllImport(ExternDll.User32, CharSet = CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, bool wParam, int lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, int[] lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int[] wParam, int[] lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, ref int wParam, ref int lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, string lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, IntPtr wParam, string lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, StringBuilder lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TOOLINFO_T lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TOOLINFO_TOOLTIP lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TBBUTTON lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TBBUTTONINFO lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TV_ITEM lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TV_INSERTSTRUCT lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TV_HITTESTINFO lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVBKIMAGE lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.LVHITTESTINFO lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TCITEM_T lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.HDLAYOUT hdlayout); 

        //for Tooltips 
        //
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, HandleRef wParam, int lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, HandleRef lParam);
 
 
        // For RichTextBox
        // 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.PARAFORMAT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.CHARFORMATA lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.CHARFORMAT2A lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.CHARFORMATW lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int SendMessage(HandleRef hWnd, int msg, int wParam, [Out, MarshalAs(UnmanagedType.IUnknown)]out object editOle);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.CHARRANGE lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.FINDTEXT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TEXTRANGE lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.POINT lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, NativeMethods.POINT wParam, int lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.REPASTESPECIAL lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.EDITSTREAM lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.EDITSTREAM64 lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, NativeMethods.GETTEXTLENGTHEX wParam, int lParam);

        // For Button
        // 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] NativeMethods.SIZE lParam); 
 
        // For ListView
        // 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] ref NativeMethods.LVFINDINFO lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVHITTESTINFO lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVCOLUMN_T lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] ref NativeMethods.LVITEM lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVCOLUMN lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVGROUP lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, NativeMethods.POINT wParam, [In, Out] NativeMethods.LVINSERTMARK lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVINSERTMARK lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] NativeMethods.LVTILEVIEWINFO lParam); 

        // For MonthCalendar
        //
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.MCHITTESTINFO lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.SYSTEMTIME lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.SYSTEMTIMEARRAY lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] NativeMethods.LOGFONT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.MSG lParam); 
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, int lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, IntPtr wParam, IntPtr lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, IntPtr wParam, [In, Out] ref NativeMethods.RECT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, ref short wParam, ref short lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, [In, Out, MarshalAs(UnmanagedType.Bool)] ref bool wParam, IntPtr lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, int wParam, IntPtr lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, int wParam, [In, Out] ref NativeMethods.RECT lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, int wParam, [In, Out] ref Rectangle lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, IntPtr wParam, NativeMethods.ListViewCompareCallback pfnCompare); 

        [DllImport(ExternDll.User32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] 
        public static extern IntPtr SendMessageTimeout(HandleRef hWnd, int msg, IntPtr wParam, IntPtr lParam, int flags, int timeout, out IntPtr pdwResult); 

        public const int SMTO_ABORTIFHUNG = 0x0002; 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetParent(HandleRef hWnd, HandleRef hWndParent);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool GetWindowRect(HandleRef hWnd, [In, Out] ref NativeMethods.RECT rect);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr GetWindow(HandleRef hWnd, int uCmd); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetDlgItem(HandleRef hWnd, int nIDDlgItem); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        public static extern IntPtr GetModuleHandle(string modName);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr DefWindowProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr DefMDIChildProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg,
                                                IntPtr wParam, IntPtr lParam); 

/*
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr GetProp(HandleRef hWnd, int atom); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr GetProp(HandleRef hWnd, string name); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr RemoveProp(HandleRef hWnd, short atom);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr RemoveProp(HandleRef hWnd, string propName);
   */
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern short GlobalDeleteAtom(short atom); 

        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Ansi)] 
        public static extern IntPtr GetProcAddress(HandleRef hModule, string lpProcName); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool GetClassInfo(HandleRef hInst, string lpszClass, [In, Out] NativeMethods.WNDCLASS_I wc);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool GetClassInfo(HandleRef hInst, string lpszClass, IntPtr h);
/* 
        [DllImport(ExternDll.Shfolder, CharSet=CharSet.Auto)]
        public static extern int SHGetFolderPath(HandleRef hwndOwner, int nFolder, HandleRef hToken, int dwFlags, StringBuilder lpszPath); 
*/ 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int GetSystemMetrics(int nIndex); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref NativeMethods.RECT rc, int nUpdate);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref int value, int ignore); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref bool value, int ignore); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref NativeMethods.HIGHCONTRAST_I rc, int nUpdate);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] NativeMethods.NONCLIENTMETRICS metrics, int nUpdate);
/*
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] NativeMethods.ICONMETRICS iconMetrics, int nUpdate); 
*/
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] NativeMethods.LOGFONT font, int nUpdate); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, bool [] flag, bool nUpdate); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        public static extern bool GetComputerName(StringBuilder lpBuffer, int[] nSize);
        [DllImport(ExternDll.Advapi32, CharSet=CharSet.Auto)]
        public static extern bool GetUserName(StringBuilder lpBuffer, int[] nSize); 
        [DllImport(ExternDll.User32, ExactSpelling=true)]
        public static extern IntPtr GetProcessWindowStation(); 
        [DllImport(ExternDll.User32, SetLastError=true)] 
        public static extern bool GetUserObjectInformation(HandleRef hObj, int nIndex, [MarshalAs(UnmanagedType.LPStruct)] NativeMethods.USEROBJECTFLAGS pvBuffer, int nLength, ref int lpnLengthNeeded);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int ClientToScreen( HandleRef hWnd, [In, Out] NativeMethods.POINT pt );
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetForegroundWindow();
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int MsgWaitForMultipleObjectsEx(int nCount, IntPtr pHandles, int dwMilliseconds, int dwWakeMask, int dwFlags);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr GetDesktopWindow(); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int RegisterDragDrop(HandleRef hwnd, UnsafeNativeMethods.IOleDropTarget target); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int RevokeDragDrop(HandleRef hwnd);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool PeekMessage([In, Out] ref NativeMethods.MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Unicode)]
        public static extern bool PeekMessageW([In, Out] ref NativeMethods.MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Ansi)] 
        public static extern bool PeekMessageA([In, Out] ref NativeMethods.MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove);
 
/*
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto),
         SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        public static extern bool SetProp(HandleRef hWnd, int atom, HandleRef data); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SetProp(HandleRef hWnd, string propName, HandleRef data); 
*/ 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool PostMessage(HandleRef hwnd, int msg, IntPtr wparam, IntPtr lparam); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern short GlobalAddAtom(string atomName);
        [DllImport(ExternDll.Oleacc, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr LresultFromObject(ref Guid refiid, IntPtr wParam, HandleRef pAcc); 
        [DllImport(ExternDll.Oleacc, ExactSpelling=true, CharSet=System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int CreateStdAccessibleObject(HandleRef hWnd, int objID, ref Guid refiid, [In, Out, MarshalAs(UnmanagedType.Interface)] ref object pAcc); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern void NotifyWinEvent(int winEvent, HandleRef hwnd, int objType, int objID);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetMenuItemID(HandleRef hMenu, int nPos);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetSubMenu(HandleRef hwnd, int index);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetMenuItemCount(HandleRef hMenu);
        [DllImport(ExternDll.Oleaut32, PreserveSig=false)] 
        public static extern void GetErrorInfo(int reserved, [In, Out] ref UnsafeNativeMethods.IErrorInfo errorInfo); 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="BeginPaint", CharSet=CharSet.Auto)]
 
        private static extern IntPtr IntBeginPaint(HandleRef hWnd, [In, Out] ref NativeMethods.PAINTSTRUCT lpPaint);
        public static IntPtr BeginPaint(HandleRef hWnd, [In, Out, MarshalAs(UnmanagedType.LPStruct)] ref NativeMethods.PAINTSTRUCT lpPaint) {
            return System.Internal.HandleCollector.Add(IntBeginPaint(hWnd, ref lpPaint), NativeMethods.CommonHandles.HDC);
        } 

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="EndPaint", CharSet=CharSet.Auto)] 
        private static extern bool IntEndPaint(HandleRef hWnd, ref NativeMethods.PAINTSTRUCT lpPaint); 
        public static bool EndPaint(HandleRef hWnd, [In, MarshalAs(UnmanagedType.LPStruct)] ref NativeMethods.PAINTSTRUCT lpPaint) {
            System.Internal.HandleCollector.Remove(lpPaint.hdc, NativeMethods.CommonHandles.HDC); 
            return IntEndPaint(hWnd, ref lpPaint);
        }

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="GetDC", CharSet=CharSet.Auto)] 
        private static extern IntPtr IntGetDC(HandleRef hWnd);
        public static IntPtr GetDC(HandleRef hWnd) { 
            return System.Internal.HandleCollector.Add(IntGetDC(hWnd), NativeMethods.CommonHandles.HDC); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="GetWindowDC", CharSet=CharSet.Auto)]
        private static extern IntPtr IntGetWindowDC(HandleRef hWnd);
        public static IntPtr GetWindowDC(HandleRef hWnd) {
            return System.Internal.HandleCollector.Add(IntGetWindowDC(hWnd), NativeMethods.CommonHandles.HDC); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="ReleaseDC", CharSet=CharSet.Auto)] 
        private static extern int IntReleaseDC(HandleRef hWnd, HandleRef hDC);
        public static int ReleaseDC(HandleRef hWnd, HandleRef hDC) { 
            System.Internal.HandleCollector.Remove((IntPtr)hDC, NativeMethods.CommonHandles.HDC);
            return IntReleaseDC(hWnd, hDC);
        }
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, EntryPoint="CreateDC", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateDC(string lpszDriver, string lpszDeviceName, string lpszOutput, HandleRef devMode); 
 
        public static IntPtr CreateDC(string lpszDriver) {
            return System.Internal.HandleCollector.Add(IntCreateDC(lpszDriver, null, null, NativeMethods.NullHandleRef), NativeMethods.CommonHandles.HDC); 
        }
        public static IntPtr CreateDC(string lpszDriverName, string lpszDeviceName, string lpszOutput, HandleRef /*DEVMODE*/ lpInitData) {
            return System.Internal.HandleCollector.Add(IntCreateDC(lpszDriverName, lpszDeviceName, lpszOutput, lpInitData), NativeMethods.CommonHandles.HDC);
        } 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] IntPtr[] rc, int nUpdate); 

        [DllImport(ExternDll.User32, EntryPoint="SendMessage", CharSet=CharSet.Auto)] 
        //public extern static IntPtr SendCallbackMessage(HandleRef hWnd, int Msg, IntPtr wParam, UnsafeNativeMethods.IRichTextBoxOleCallback lParam);
        public extern static IntPtr SendCallbackMessage(HandleRef hWnd, int Msg, IntPtr wParam, IntPtr lParam);

        [DllImport(ExternDll.Shell32, ExactSpelling=true, CharSet=CharSet.Ansi)] 
        public static extern void DragAcceptFiles(HandleRef hWnd, bool fAccept);
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetDeviceCaps(HandleRef hDC, int nIndex);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GetScrollInfo(HandleRef hWnd, int fnBar, NativeMethods.SCROLLINFO si);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int SetScrollInfo(HandleRef hWnd, int fnBar, NativeMethods.SCROLLINFO si, bool redraw);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr GetActiveWindow();
 
        [DllImport(ExternDll.Mscoree, ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
        public static extern int LoadLibraryShim(string dllName, string version, IntPtr reserved, out IntPtr dllModule);

        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern IntPtr LoadLibrary(string libname);
 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)] 
        public static extern bool FreeLibrary(HandleRef hModule);
 
        /* Not used.

        [DllImport(ExternDll.User32, SetLastError = true, CharSet=CharSet.Auto)]
        public static extern bool LoadString(HandleRef hInstance, int uID, StringBuilder lpBuffer, int nBufferMax ); 

        [DllImport(ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)] 
        public static extern bool SetDllDirectory(string lpPathName); 

        [DllImport(ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)] 
        public static extern int GetWindowsDirectory(StringBuilder lpBuffer, int uSize);

        [DllImport(ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)]
        public static extern int GetDllDirectory(int nBufferLength, StringBuilder lpPathName); 
        */
 
        //GetWindowLong won't work correctly for 64-bit: we should use GetWindowLongPtr instead.  On 
        //32-bit, GetWindowLongPtr is just #defined as GetWindowLong.  GetWindowLong really should
        //take/return int instead of IntPtr/HandleRef, but since we're running this only for 32-bit 
        //it'll be OK.
        public static IntPtr GetWindowLong(HandleRef hWnd, int nIndex)
        {
            if (IntPtr.Size == 4) 
            {
                return GetWindowLong32(hWnd, nIndex); 
            } 
            return GetWindowLongPtr64(hWnd, nIndex);
        } 
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "GetWindowLong")]
        public static extern IntPtr GetWindowLong32(HandleRef hWnd, int nIndex);
 
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "GetWindowLongPtr")] 
        public static extern IntPtr GetWindowLongPtr64(HandleRef hWnd, int nIndex); 

        //SetWindowLong won't work correctly for 64-bit: we should use SetWindowLongPtr instead.  On 
        //32-bit, SetWindowLongPtr is just #defined as SetWindowLong.  SetWindowLong really should
        //take/return int instead of IntPtr/HandleRef, but since we're running this only for 32-bit
        //it'll be OK.
        public static IntPtr SetWindowLong(HandleRef hWnd, int nIndex, HandleRef dwNewLong) 
        {
            if (IntPtr.Size == 4) 
            { 
                return SetWindowLongPtr32(hWnd, nIndex, dwNewLong);
            } 
            return SetWindowLongPtr64(hWnd, nIndex, dwNewLong);
        }
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLong")] 
        public static extern IntPtr SetWindowLongPtr32(HandleRef hWnd, int nIndex, HandleRef dwNewLong);
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")] 
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLongPtr")] 
        public static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, HandleRef dwNewLong);
 
        public static IntPtr SetWindowLong(HandleRef hWnd, int nIndex, NativeMethods.WndProc wndproc)
        {
            if (IntPtr.Size == 4)
            { 
                return SetWindowLongPtr32(hWnd, nIndex, wndproc);
            } 
            return SetWindowLongPtr64(hWnd, nIndex, wndproc); 
        }
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")] 
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLong")]
        public static extern IntPtr SetWindowLongPtr32(HandleRef hWnd, int nIndex, NativeMethods.WndProc wndproc);
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLongPtr")] 
        public static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, NativeMethods.WndProc wndproc);
 
        [DllImport(ExternDll.Ole32, PreserveSig = false)] 

        public static extern UnsafeNativeMethods.ILockBytes CreateILockBytesOnHGlobal(HandleRef hGlobal, bool fDeleteOnRelease); 
        [DllImport(ExternDll.Ole32, PreserveSig=false)]
        public static extern UnsafeNativeMethods.IStorage StgCreateDocfileOnILockBytes(UnsafeNativeMethods.ILockBytes iLockBytes, int grfMode, int reserved);

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="CreatePopupMenu", CharSet=CharSet.Auto)] 
        private static extern IntPtr IntCreatePopupMenu();
        public static IntPtr CreatePopupMenu() { 
            return System.Internal.HandleCollector.Add(IntCreatePopupMenu(), NativeMethods.CommonHandles.Menu); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool RemoveMenu(HandleRef hMenu, int uPosition, int uFlags);

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyMenu", CharSet=CharSet.Auto)] 
        private static extern bool IntDestroyMenu(HandleRef hMenu);
        public static bool DestroyMenu(HandleRef hMenu) { 
            System.Internal.HandleCollector.Remove((IntPtr)hMenu, NativeMethods.CommonHandles.Menu); 
            return IntDestroyMenu(hMenu);
        } 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool SetForegroundWindow(HandleRef hWnd);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetSystemMenu(HandleRef hWnd, bool bRevert); 
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr DefFrameProc(IntPtr hWnd, IntPtr hWndClient, int msg, IntPtr wParam, IntPtr lParam); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool TranslateMDISysAccel(IntPtr hWndClient, [In, Out] ref NativeMethods.MSG msg);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern bool SetLayeredWindowAttributes(HandleRef hwnd, int crKey, byte bAlpha, int dwFlags); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public extern static bool SetMenu(HandleRef hWnd, HandleRef hMenu); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int GetWindowPlacement(HandleRef hWnd, ref NativeMethods.WINDOWPLACEMENT placement);
 

        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)] 
        public static extern void GetStartupInfo([In, Out] NativeMethods.STARTUPINFO_I startupinfo_i); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool SetMenuDefaultItem(HandleRef hwnd, int nIndex, bool pos);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool EnableMenuItem(HandleRef hMenu, int UIDEnabledItem, int uEnable); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr SetActiveWindow(HandleRef hWnd); 

        [DllImport(ExternDll.Gdi32, SetLastError=true, EntryPoint="CreateIC", CharSet=System.Runtime.InteropServices.CharSet.Auto)] 
        private static extern IntPtr IntCreateIC(string lpszDriverName, string lpszDeviceName, string lpszOutput, HandleRef /*DEVMODE*/ lpInitData);
        public static IntPtr CreateIC(string lpszDriverName, string lpszDeviceName, string lpszOutput, HandleRef /*DEVMODE*/ lpInitData) {
            return System.Internal.HandleCollector.Add(IntCreateIC(lpszDriverName, lpszDeviceName, lpszOutput, lpInitData), NativeMethods.CommonHandles.HDC);
        } 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool ClipCursor(ref NativeMethods.RECT rcClip); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool ClipCursor(NativeMethods.COMRECT rcClip);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetCursor(HandleRef hcursor); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool SetCursorPos(int x, int y); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public extern static int ShowCursor(bool bShow);

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyCursor", CharSet=CharSet.Auto)]
        private static extern bool IntDestroyCursor(HandleRef hCurs); 
        public static bool DestroyCursor(HandleRef hCurs) {
            System.Internal.HandleCollector.Remove((IntPtr)hCurs, NativeMethods.CommonHandles.Cursor); 
            return IntDestroyCursor(hCurs); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool IsWindow(HandleRef hWnd);

        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, EntryPoint="DeleteDC", CharSet=CharSet.Auto)] 
        private static extern bool IntDeleteDC(HandleRef hDC);
        public static bool DeleteDC(HandleRef hDC) { 
            System.Internal.HandleCollector.Remove((IntPtr)hDC, NativeMethods.CommonHandles.HDC); 
            return IntDeleteDC(hDC);
        } 

        public static bool DeleteCompatibleDC(HandleRef hDC)
        {
            System.Internal.HandleCollector.Remove((IntPtr)hDC, NativeMethods.CommonHandles.CompatibleHDC); 
            return IntDeleteDC(hDC);
        } 
 
        public const int LAYOUT_RTL = 0x00000001;
        public const int LAYOUT_BITMAPORIENTATIONPRESERVED = 0x00000008; 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Ansi)]
        public static extern bool GetMessageA([In, Out] ref NativeMethods.MSG msg, HandleRef hWnd, int uMsgFilterMin, int uMsgFilterMax);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Unicode)]
        public static extern bool GetMessageW([In, Out] ref NativeMethods.MSG msg, HandleRef hWnd, int uMsgFilterMin, int uMsgFilterMax); 
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr PostMessage(HandleRef hwnd, int msg, int wparam, int lparam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr PostMessage(HandleRef hwnd, int msg, int wparam, IntPtr lparam);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GetClientRect(HandleRef hWnd, [In, Out] ref NativeMethods.RECT rect); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GetClientRect(HandleRef hWnd, IntPtr rect); 

        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
        [DllImport(ExternDll.User32, EntryPoint="WindowFromPoint", ExactSpelling=true, CharSet=CharSet.Auto)]
        private static extern IntPtr _WindowFromPoint(POINTSTRUCT pt); 
        public static IntPtr WindowFromPoint(int x, int y) {
            POINTSTRUCT ps = new POINTSTRUCT(x, y); 
            return _WindowFromPoint(ps); 
        }
        [DllImport(ExternDll.User32, SetLastError=true, ExactSpelling = true)] 
        public static extern IntPtr WindowFromDC( HandleRef hDC );
        [DllImport(ExternDll.User32, EntryPoint="CreateWindowEx", CharSet=CharSet.Auto, SetLastError=true)]
        public static extern IntPtr IntCreateWindowEx(int  dwExStyle, string lpszClassName,
                                                   string lpszWindowName, int style, int x, int y, int width, int height, 
                                                   HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, [MarshalAs(UnmanagedType.AsAny)] object pvParam);
        public static IntPtr CreateWindowEx(int  dwExStyle, string lpszClassName, 
                                         string lpszWindowName, int style, int x, int y, int width, int height, 
                                         HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, [MarshalAs(UnmanagedType.AsAny)]object pvParam) {
            return IntCreateWindowEx(dwExStyle, lpszClassName, 
                                         lpszWindowName, style, x, y, width, height, hWndParent, hMenu,
                                         hInst, pvParam);
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyWindow", CharSet=CharSet.Auto)]
        public static extern bool IntDestroyWindow(HandleRef hWnd); 
        public static bool DestroyWindow(HandleRef hWnd) { 
            return IntDestroyWindow(hWnd);
        } 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern bool UnregisterClass(string className, HandleRef hInstance);
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetStockObject(int nIndex); 
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern short RegisterClass(NativeMethods.WNDCLASS_D wc); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern void PostQuitMessage(int nExitCode);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern void WaitMessage(); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool SetWindowPlacement(HandleRef hWnd, [In] ref NativeMethods.WINDOWPLACEMENT placement); 

        // For system power status
        //
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool GetSystemPowerStatus([In, Out] ref NativeMethods.SYSTEM_POWER_STATUS systemPowerStatus);
 
        [DllImport(ExternDll.Powrprof, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool SetSuspendState(bool hiberate, bool forceCritical, bool disableWakeEvent);
 
        //for RegionData
        [DllImport(ExternDll.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int GetRegionData(HandleRef hRgn, int size, IntPtr lpRgnData);
 
        public unsafe static NativeMethods.RECT[] GetRectsFromRegion(IntPtr hRgn) {
            NativeMethods.RECT[] regionRects = null; 
            IntPtr pBytes = IntPtr.Zero; 
            try {
                // see how much memory we need to allocate 
                int regionDataSize = GetRegionData(new HandleRef(null, hRgn), 0, IntPtr.Zero);
                if (regionDataSize != 0) {
                    pBytes = Marshal.AllocCoTaskMem(regionDataSize);
                    // get the data 
                    int ret = GetRegionData(new HandleRef(null, hRgn), regionDataSize, pBytes);
                    if (ret == regionDataSize) { 
                        // cast to the structure 
                        NativeMethods.RGNDATAHEADER* pRgnDataHeader = (NativeMethods.RGNDATAHEADER*)pBytes;
                        if (pRgnDataHeader->iType == 1) {    // expecting RDH_RECTANGLES 
                            regionRects = new NativeMethods.RECT[pRgnDataHeader->nCount];

                            Debug.Assert(regionDataSize == pRgnDataHeader->cbSizeOfStruct + pRgnDataHeader->nCount * pRgnDataHeader->nRgnSize);
                            Debug.Assert(Marshal.SizeOf(typeof(NativeMethods.RECT)) == pRgnDataHeader->nRgnSize || pRgnDataHeader->nRgnSize == 0); 

                            // use the header size as the offset, and cast each rect in. 
                            int rectStart = pRgnDataHeader->cbSizeOfStruct; 
                            for (int i = 0; i < pRgnDataHeader->nCount; i++) {
                                // use some fancy pointer math to just copy the rect bits directly into the array. 
                                regionRects[i] = *((NativeMethods.RECT*)((byte*)pBytes + rectStart + (Marshal.SizeOf(typeof(NativeMethods.RECT)) * i)));
                            }
                        }
                    } 
                }
            } 
            finally { 
                if (pBytes != IntPtr.Zero) {
                    Marshal.FreeCoTaskMem(pBytes); 
                }
            }
            return regionRects;
        } 

        /* Unused 
        // for GetUserNameEx 
        public enum EXTENDED_NAME_FORMAT {
            NameUnknown = 0, 
            NameFullyQualifiedDN = 1,
            NameSamCompatible = 2,
            NameDisplay = 3,
            NameUniqueId = 6, 
            NameCanonical = 7,
            NameUserPrincipal = 8, 
            NameCanonicalEx = 9, 
            NameServicePrincipal = 10
        } 
        */

        [ComImport(), Guid("00000122-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleDropTarget { 
            [PreserveSig]
            int OleDragEnter( 
                [In, MarshalAs(UnmanagedType.Interface)] 
                object pDataObj,
                [In, MarshalAs(UnmanagedType.U4)] 
                int grfKeyState,
                [In, MarshalAs(UnmanagedType.U8)]
                long pt,
                [In, Out] 
                ref int pdwEffect);
 
            [PreserveSig] 
            int OleDragOver(
                [In, MarshalAs(UnmanagedType.U4)] 
                int grfKeyState,
                [In, MarshalAs(UnmanagedType.U8)]
                long pt,
                [In, Out] 
                ref int pdwEffect);
 
            [PreserveSig] 
            int OleDragLeave();
 
            [PreserveSig]
            int OleDrop(
                [In, MarshalAs(UnmanagedType.Interface)]
                object pDataObj, 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfKeyState, 
                [In, MarshalAs(UnmanagedType.U8)] 
                long pt,
                [In, Out] 
                ref int pdwEffect);
        }

        [ComImport(), Guid("00000121-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IOleDropSource {
 
            [PreserveSig] 
            int OleQueryContinueDrag(
                int fEscapePressed, 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfKeyState);

            [PreserveSig] 
            int OleGiveFeedback(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwEffect); 
        }
 
        [ComImport(), Guid("00000016-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleMessageFilter {

            [PreserveSig] 
            int HandleInComingCall(
                int dwCallType, 
                IntPtr hTaskCaller, 
                int dwTickCount,
                /* LPINTERFACEINFO */ IntPtr lpInterfaceInfo); 

            [PreserveSig]
            int RetryRejectedCall(
                IntPtr hTaskCallee, 
                int dwTickCount,
                int dwRejectType); 
 
            [PreserveSig]
            int MessagePending( 
                IntPtr hTaskCallee,
                int dwTickCount,
                int dwPendingType);
        } 

        [ 
        ComImport(), 
        Guid("B196B289-BAB4-101A-B69C-00AA00341D07"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ]
        public interface IOleControlSite {

            [PreserveSig] 
            int OnControlInfoChanged();
 
            [PreserveSig] 
            int LockInPlaceActive(int fLock);
 
            [PreserveSig]
            int GetExtendedControl(
                [Out, MarshalAs(UnmanagedType.IDispatch)]
                out object ppDisp); 

            [PreserveSig] 
            int TransformCoords( 
                [In, Out]
                NativeMethods._POINTL pPtlHimetric, 
                [In, Out]
                NativeMethods.tagPOINTF pPtfContainer,
                [In, MarshalAs(UnmanagedType.U4)]
                int dwFlags); 

            [PreserveSig] 
            int TranslateAccelerator( 
                [In]
                ref NativeMethods.MSG pMsg, 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfModifiers);

            [PreserveSig] 
            int OnFocus(int fGotFocus);
 
            [PreserveSig] 
            int ShowPropertyFrame();
 
        }

        [ComImport(), Guid("00000118-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleClientSite { 

            [PreserveSig] 
            int SaveObject(); 

            [PreserveSig] 
            int GetMoniker(
                [In, MarshalAs(UnmanagedType.U4)]
                int dwAssign,
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwWhichMoniker,
                [Out, MarshalAs(UnmanagedType.Interface)] 
                out object moniker); 

            [PreserveSig] 
            int GetContainer(out IOleContainer container);

            [PreserveSig]
            int ShowObject(); 

            [PreserveSig] 
            int OnShowWindow(int fShow); 

            [PreserveSig] 
            int RequestNewObjectLayout();
        }

        [ComImport(), Guid("00000119-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IOleInPlaceSite {
 
            IntPtr GetWindow(); 

            [PreserveSig] 
            int ContextSensitiveHelp(int fEnterMode);

            [PreserveSig]
            int CanInPlaceActivate(); 

            [PreserveSig] 
            int OnInPlaceActivate(); 

            [PreserveSig] 
            int OnUIActivate();

            [PreserveSig]
            int GetWindowContext( 
                [Out, MarshalAs(UnmanagedType.Interface)]
                out UnsafeNativeMethods.IOleInPlaceFrame ppFrame, 
                [Out, MarshalAs(UnmanagedType.Interface)] 
                out UnsafeNativeMethods.IOleInPlaceUIWindow ppDoc,
                [Out] 
                NativeMethods.COMRECT lprcPosRect,
                [Out]
                NativeMethods.COMRECT lprcClipRect,
                [In, Out] 
                NativeMethods.tagOIFI lpFrameInfo);
 
            [PreserveSig] 
            int Scroll(
                NativeMethods.tagSIZE scrollExtant); 

            [PreserveSig]
            int OnUIDeactivate(
                int fUndoable); 

            [PreserveSig] 
            int OnInPlaceDeactivate(); 

            [PreserveSig] 
            int DiscardUndoState();

            [PreserveSig]
            int DeactivateAndUndo(); 

            [PreserveSig] 
            int OnPosRectChange( 
                [In]
                NativeMethods.COMRECT lprcPosRect); 
        }

        [ComImport(), Guid("742B0E01-14E6-101B-914E-00AA00300CAB"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface ISimpleFrameSite { 

            [PreserveSig] 
                int PreMessageFilter( 
                IntPtr hwnd,
                [In, MarshalAs(UnmanagedType.U4)] 
                int msg,
                IntPtr wp,
                IntPtr lp,
                [In, Out] 
                ref IntPtr plResult,
                [In, Out, MarshalAs(UnmanagedType.U4)] 
                ref int pdwCookie); 

            [PreserveSig] 
            int PostMessageFilter(
                IntPtr hwnd,
                [In, MarshalAs(UnmanagedType.U4)]
                int msg, 
                IntPtr wp,
                IntPtr lp, 
                [In, Out] 
                ref IntPtr plResult,
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwCookie);
        }

        [ComImport(), Guid("40A050A0-3C31-101B-A82E-08002B2B2337"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IVBGetControl {
 
            [PreserveSig] 
            int EnumControls(
                int dwOleContF, 
                int dwWhich,
                [Out]
                out IEnumUnknown ppenum);
        } 

        [ComImport(), Guid("91733A60-3F4C-101B-A3F6-00AA0034E4E9"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IGetVBAObject { 

           [PreserveSig] 
           int GetObject(
                [In]
                ref Guid riid,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                IVBFormat[] rval,
                int dwReserved); 
        } 

        [ComImport(), Guid("9BFBBC02-EFF1-101A-84ED-00AA00341D07"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IPropertyNotifySink {
            void OnChanged(int dispID);

            [PreserveSig] 
            int OnRequestEdit(int dispID);
        } 
 
        [ComImport(), Guid("9849FD60-3768-101B-8D72-AE6164FFE3CF"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IVBFormat { 

            [PreserveSig]
            int Format(
                [In] 
                ref object var,
                IntPtr pszFormat, 
                IntPtr lpBuffer, 
                short cpBuffer,
                int lcid, 
                short firstD,
                short firstW,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                short[] result); 
        }
 
        [ComImport(), Guid("00000100-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IEnumUnknown {
 
            [PreserveSig]
            int Next(
                [In, MarshalAs(UnmanagedType.U4)]
                int celt, 
                [Out]
                IntPtr rgelt, 
                IntPtr pceltFetched); 

            [PreserveSig] 
                int Skip(
                [In, MarshalAs(UnmanagedType.U4)]
                int celt);
 
            void Reset();
 
            void Clone( 
                [Out]
                out IEnumUnknown ppenum); 
        }

        [ComImport(), Guid("0000011B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleContainer { 

            [PreserveSig] 
            int ParseDisplayName( 
                [In, MarshalAs(UnmanagedType.Interface)]
                object pbc, 
                [In, MarshalAs(UnmanagedType.BStr)]
                string pszDisplayName,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                int[] pchEaten, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                object[] ppmkOut); 
 
            [PreserveSig]
            int EnumObjects( 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfFlags,
                [Out]
                out IEnumUnknown ppenum); 

            [PreserveSig] 
            int LockContainer( 
                bool fLock);
        } 

        [ComImport(), Guid("00000116-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceFrame {
 
            IntPtr GetWindow();
 
            [PreserveSig] 
            int ContextSensitiveHelp(int fEnterMode);
 
            [PreserveSig]
            int GetBorder(
                [Out]
                NativeMethods.COMRECT lprectBorder); 

            [PreserveSig] 
            int RequestBorderSpace( 
                [In]
                NativeMethods.COMRECT pborderwidths); 

            [PreserveSig]
            int SetBorderSpace(
                [In] 
                NativeMethods.COMRECT pborderwidths);
 
            [PreserveSig] 
            int  SetActiveObject(
                [In, MarshalAs(UnmanagedType.Interface)] 
                UnsafeNativeMethods.IOleInPlaceActiveObject pActiveObject,
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszObjName);
 
            [PreserveSig]
            int InsertMenus( 
                [In] 
                IntPtr hmenuShared,
                [In, Out] 
                NativeMethods.tagOleMenuGroupWidths lpMenuWidths);

            [PreserveSig]
            int SetMenu( 
                [In]
                IntPtr hmenuShared, 
                [In] 
                IntPtr holemenu,
                [In] 
                IntPtr hwndActiveObject);

            [PreserveSig]
            int RemoveMenus( 
                [In]
                IntPtr hmenuShared); 
 
            [PreserveSig]
            int SetStatusText( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszStatusText);

            [PreserveSig] 
            int EnableModeless(
                bool fEnable); 
 
            [PreserveSig]
                int TranslateAccelerator( 
                [In]
                ref NativeMethods.MSG lpmsg,
                [In, MarshalAs(UnmanagedType.U2)]
                short wID); 
        }
 
        // Used to control the webbrowser appearance and provide DTE to script via window.external 
        [ComVisible(true), ComImport(), Guid("BD3F23C0-D43E-11CF-893B-00AA00BDCE1A"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IDocHostUIHandler {

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int ShowContextMenu(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwID, 
                [In]
                NativeMethods.POINT pt, 
                [In, MarshalAs(UnmanagedType.Interface)]
                object pcmdtReserved,
                [In, MarshalAs(UnmanagedType.Interface)]
                object pdispReserved); 

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig] 
            int GetHostInfo(
                [In, Out] 
                NativeMethods.DOCHOSTUIINFO info);

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int ShowUI(
                [In, MarshalAs(UnmanagedType.I4)] 
                int dwID, 
                [In]
                UnsafeNativeMethods.IOleInPlaceActiveObject activeObject, 
                [In]
                NativeMethods.IOleCommandTarget commandTarget,
                [In]
                UnsafeNativeMethods.IOleInPlaceFrame frame, 
                [In]
                UnsafeNativeMethods.IOleInPlaceUIWindow doc); 
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int HideUI();

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int UpdateUI();
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int EnableModeless( 
                [In, MarshalAs(UnmanagedType.Bool)]
                bool fEnable);

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int OnDocWindowActivate( 
                [In, MarshalAs(UnmanagedType.Bool)] 
                bool fActivate);
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig]
            int OnFrameWindowActivate(
                [In, MarshalAs(UnmanagedType.Bool)] 
                bool fActivate);
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int ResizeBorder( 
                [In]
                NativeMethods.COMRECT rect,
                [In]
                UnsafeNativeMethods.IOleInPlaceUIWindow doc, 
                bool fFrameWindow);
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int TranslateAccelerator( 
                [In]
                ref NativeMethods.MSG msg,
                [In]
                ref Guid group, 
                [In, MarshalAs(UnmanagedType.I4)]
                int nCmdID); 
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int GetOptionKeyPath(
                [Out, MarshalAs(UnmanagedType.LPArray)]
                String[] pbstrKey,
                [In, MarshalAs(UnmanagedType.U4)] 
                int dw);
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int GetDropTarget( 
                [In, MarshalAs(UnmanagedType.Interface)]
                UnsafeNativeMethods.IOleDropTarget pDropTarget,
                [Out, MarshalAs(UnmanagedType.Interface)]
                out UnsafeNativeMethods.IOleDropTarget ppDropTarget); 

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig] 
            int GetExternal(
                [Out, MarshalAs(UnmanagedType.Interface)] 
                out object ppDispatch);

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int TranslateUrl(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwTranslate, 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string strURLIn, 
                [Out, MarshalAs(UnmanagedType.LPWStr)]
                out string pstrURLOut);

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int FilterDataObject( 
                IComDataObject pDO, 
                out IComDataObject ppDORet);
        } 

        [SuppressUnmanagedCodeSecurity, ComImport(), Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E"),
        TypeLibType(TypeLibTypeFlags.FHidden | TypeLibTypeFlags.FDual | TypeLibTypeFlags.FOleAutomation)]
        public interface IWebBrowser2 { 
            //
            // IWebBrowser members 
            [DispId(100)] void GoBack(); 
            [DispId(101)] void GoForward();
            [DispId(102)] void GoHome(); 
            [DispId(103)] void GoSearch();
            [DispId(104)] void Navigate([In] string Url, [In] ref object flags,
                            [In] ref object targetFrameName, [In] ref object postData,
                            [In] ref object headers); 
            [DispId(-550)] void Refresh();
            [DispId(105)] void Refresh2([In] ref object level); 
            [DispId(106)] void Stop(); 
            [DispId(200)] object Application {[return: MarshalAs(UnmanagedType.IDispatch)]get;}
            [DispId(201)] object Parent {[return: MarshalAs(UnmanagedType.IDispatch)]get;} 
            [DispId(202)] object Container {[return: MarshalAs(UnmanagedType.IDispatch)]get;}
            [DispId(203)] object Document {[return: MarshalAs(UnmanagedType.IDispatch)]get;}
            [DispId(204)] bool TopLevelContainer {get;}
            [DispId(205)] string Type {get;} 
            [DispId(206)] int Left {get; set;}
            [DispId(207)] int Top {get; set;} 
            [DispId(208)] int Width {get; set;} 
            [DispId(209)] int Height {get; set;}
            [DispId(210)] string LocationName {get;} 
            [DispId(211)] string LocationURL {get;}
            [DispId(212)] bool Busy {get;}
            //
            // IWebBrowserApp members 
            [DispId(300)] void Quit();
            [DispId(301)] void ClientToWindow([Out]out int pcx, [Out]out int pcy); 
            [DispId(302)] void PutProperty([In] string property, [In] object vtValue); 
            [DispId(303)] object GetProperty([In] string property);
            [DispId(0)] string Name {get;} 
            [DispId(-515)] int HWND {get;}
            [DispId(400)] string FullName {get;}
            [DispId(401)] string Path {get;}
            [DispId(402)] bool Visible {get; set;} 
            [DispId(403)] bool StatusBar {get; set;}
            [DispId(404)] string StatusText {get; set;} 
            [DispId(405)] int ToolBar {get; set;} 
            [DispId(406)] bool MenuBar {get; set;}
            [DispId(407)] bool FullScreen {get; set;} 
            //
            // IWebBrowser2 members
            [DispId(500)] void Navigate2([In] ref object URL, [In] ref object flags,
                            [In] ref object targetFrameName, [In] ref object postData, 
                            [In] ref object headers);
            [DispId(501)] NativeMethods.OLECMDF QueryStatusWB([In] NativeMethods.OLECMDID cmdID); 
            [DispId(502)] void ExecWB([In] NativeMethods.OLECMDID cmdID, 
                    [In] NativeMethods.OLECMDEXECOPT cmdexecopt,
                    ref object pvaIn, 
                    IntPtr pvaOut);
            [DispId(503)] void ShowBrowserBar([In] ref object pvaClsid, [In] ref object pvarShow,
                    [In] ref object pvarSize);
            [DispId(-525)] WebBrowserReadyState ReadyState {get;} 
            [DispId(550)] bool Offline {get; set;}
            [DispId(551)] bool Silent {get; set;} 
            [DispId(552)] bool RegisterAsBrowser {get; set;} 
            [DispId(553)] bool RegisterAsDropTarget {get; set;}
            [DispId(554)] bool TheaterMode {get; set;} 
            [DispId(555)] bool AddressBar {get; set;}
            [DispId(556)] bool Resizable {get; set;}
        }
 
        [ComImport(), Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DWebBrowserEvents2 {
            [DispId(102)] void StatusTextChange([In] string text); 
            [DispId(108)] void ProgressChange([In] int progress, [In] int progressMax);
            [DispId(105)] void CommandStateChange([In] long command, [In] bool enable);
            [DispId(106)] void DownloadBegin();
            [DispId(104)] void DownloadComplete(); 
            [DispId(113)] void TitleChange([In] string text);
            [DispId(112)] void PropertyChange([In] string szProperty); 
            [DispId(250)] void BeforeNavigate2([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                                 [In] ref object URL, [In] ref object flags,
                                 [In] ref object targetFrameName, [In] ref object postData, 
                                 [In] ref object headers, [In, Out] ref bool cancel);
            [DispId(251)] void NewWindow2([In, Out, MarshalAs(UnmanagedType.IDispatch)] ref object pDisp,
                                [In, Out] ref bool cancel);
            [DispId(252)] void NavigateComplete2([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                                [In] ref object URL);
            [DispId(259)] void DocumentComplete([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                                [In] ref object URL); 
            [DispId(253)] void OnQuit();
            [DispId(254)] void OnVisible([In] bool visible); 
            [DispId(255)] void OnToolBar([In] bool toolBar);
            [DispId(256)] void OnMenuBar([In] bool menuBar);
            [DispId(257)] void OnStatusBar([In] bool statusBar);
            [DispId(258)] void OnFullScreen([In] bool fullScreen); 
            [DispId(260)] void OnTheaterMode([In] bool theaterMode);
            [DispId(262)] void WindowSetResizable([In] bool resizable); 
            [DispId(264)] void WindowSetLeft([In] int left); 
            [DispId(265)] void WindowSetTop([In] int top);
            [DispId(266)] void WindowSetWidth([In] int width); 
            [DispId(267)] void WindowSetHeight([In] int height);
            [DispId(263)] void WindowClosing([In] bool isChildWindow, [In, Out] ref bool cancel);
            [DispId(268)] void ClientToHostWindow([In, Out] ref long cx, [In, Out] ref long cy);
            [DispId(269)] void SetSecureLockIcon([In] int secureLockIcon); 
            [DispId(270)] void FileDownload([In, Out] ref bool cancel);
            [DispId(271)] void NavigateError([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                    [In] ref object URL, [In] ref object frame, [In] ref object statusCode, [In, Out] ref bool cancel); 
            [DispId(225)] void PrintTemplateInstantiation([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp);
            [DispId(226)] void PrintTemplateTeardown([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp); 
            [DispId(227)] void UpdatePageStatus([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp,
                    [In] ref object nPage, [In] ref object fDone);
            [DispId(272)] void PrivacyImpactedStateChange([In] bool bImpacted);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("626FC520-A41E-11cf-A731-00A0C9082637"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLDocument {
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetScript(); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("332C4425-26CB-11D0-B483-00C04FD90119"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLDocument2 {
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetScript(); 
            IHTMLElementCollection GetAll(); 
            IHTMLElement GetBody();
            IHTMLElement GetActiveElement(); 
            IHTMLElementCollection GetImages();
            IHTMLElementCollection GetApplets();
            IHTMLElementCollection GetLinks();
            IHTMLElementCollection GetForms(); 
            IHTMLElementCollection GetAnchors();
            void SetTitle(string p); 
            string GetTitle(); 
            IHTMLElementCollection GetScripts();
            void SetDesignMode(string p); 
            string GetDesignMode();
            [return: MarshalAs(UnmanagedType.Interface)] object GetSelection();
            string GetReadyState();
            [return: MarshalAs(UnmanagedType.Interface)] object GetFrames(); 
            IHTMLElementCollection GetEmbeds();
            IHTMLElementCollection GetPlugins(); 
            void SetAlinkColor(object c); 
            object GetAlinkColor();
            void SetBgColor(object c); 
            object GetBgColor();
            void SetFgColor(object c);
            object GetFgColor();
            void SetLinkColor(object c); 
            object GetLinkColor();
            void SetVlinkColor(object c); 
            object GetVlinkColor(); 
            string GetReferrer();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLLocation GetLocation(); 
            string GetLastModified();
            void SetUrl(string p);
            string GetUrl();
            void SetDomain(string p); 
            string GetDomain();
            void SetCookie(string p); 
            string GetCookie(); 
            void SetExpando(bool p);
            bool GetExpando(); 
            void SetCharset(string p);
            string GetCharset();
            void SetDefaultCharset(string p);
            string GetDefaultCharset(); 
            string GetMimeType();
            string GetFileSize(); 
            string GetFileCreatedDate(); 
            string GetFileModifiedDate();
            string GetFileUpdatedDate(); 
            string GetSecurity();
            string GetProtocol();
            string GetNameProp();
            int Write([In, MarshalAs(UnmanagedType.SafeArray)] object[] psarray); 
            int WriteLine([In, MarshalAs(UnmanagedType.SafeArray)] object[] psarray);
            [return: MarshalAs(UnmanagedType.Interface)] object Open(string mimeExtension, object name, object features, object replace); 
            void Close(); 
            void Clear();
            bool QueryCommandSupported(string cmdID); 
            bool QueryCommandEnabled(string cmdID);
            bool QueryCommandState(string cmdID);
            bool QueryCommandIndeterm(string cmdID);
            string QueryCommandText( 
                    string cmdID);
            Object QueryCommandValue(string cmdID); 
            bool ExecCommand(string cmdID, 
                    bool showUI, Object value);
            bool ExecCommandShowHelp(string cmdID); 
            IHTMLElement CreateElement(string eTag);
            void SetOnhelp(Object p);
            Object GetOnhelp();
            void SetOnclick(Object p); 
            Object GetOnclick();
            void SetOndblclick(Object p); 
            Object GetOndblclick(); 
            void SetOnkeyup(Object p);
            Object GetOnkeyup(); 
            void SetOnkeydown(Object p);
            Object GetOnkeydown();
            void SetOnkeypress(Object p);
            Object GetOnkeypress(); 
            void SetOnmouseup(Object p);
            Object GetOnmouseup(); 
            void SetOnmousedown(Object p); 
            Object GetOnmousedown();
            void SetOnmousemove(Object p); 
            Object GetOnmousemove();
            void SetOnmouseout(Object p);
            Object GetOnmouseout();
            void SetOnmouseover(Object p); 
            Object GetOnmouseover();
            void SetOnreadystatechange(Object p); 
            Object GetOnreadystatechange(); 
            void SetOnafterupdate(Object p);
            Object GetOnafterupdate(); 
            void SetOnrowexit(Object p);
            Object GetOnrowexit();
            void SetOnrowenter(Object p);
            Object GetOnrowenter(); 
            void SetOndragstart(Object p);
            Object GetOndragstart(); 
            void SetOnselectstart(Object p); 
            Object GetOnselectstart();
            IHTMLElement ElementFromPoint(int x, int y); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLWindow2 GetParentWindow();
            [return: MarshalAs(UnmanagedType.Interface)] object GetStyleSheets();
            void SetOnbeforeupdate(Object p);
            Object GetOnbeforeupdate(); 
            void SetOnerrorupdate(Object p);
            Object GetOnerrorupdate(); 
            string toString(); 
            [return: MarshalAs(UnmanagedType.Interface)] object CreateStyleSheet(string bstrHref,int lIndex);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F485-98B5-11CF-BB82-00AA00BDCE0B"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLDocument3 { 
            void ReleaseCapture();
            void Recalc([In] bool fForce); 
            object CreateTextNode([In] string text); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetDocumentElement();
            string GetUniqueID(); 
            bool AttachEvent([In] string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void DetachEvent([In] string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void SetOnrowsdelete([In] Object p);
            Object GetOnrowsdelete(); 
            void SetOnrowsinserted([In] Object p);
            Object GetOnrowsinserted(); 
            void SetOncellchange([In] Object p); 
            Object GetOncellchange();
            void SetOndatasetchanged([In] Object p); 
            Object GetOndatasetchanged();
            void SetOndataavailable([In] Object p);
            Object GetOndataavailable();
            void SetOndatasetcomplete([In] Object p); 
            Object GetOndatasetcomplete();
            void SetOnpropertychange([In] Object p); 
            Object GetOnpropertychange(); 
            void SetDir([In] string p);
            string GetDir(); 
            void SetOncontextmenu([In] Object p);
            Object GetOncontextmenu();
            void SetOnstop([In] Object p);
            Object GetOnstop(); 
            object CreateDocumentFragment();
            object GetParentDocument(); 
            void SetEnableDownload([In] bool p); 
            bool GetEnableDownload();
            void SetBaseUrl([In] string p); 
            string GetBaseUrl();
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetChildNodes();
            void SetInheritStyleSheets([In] bool p);
            bool GetInheritStyleSheets(); 
            void SetOnbeforeeditfocus([In] Object p);
            Object GetOnbeforeeditfocus(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElementCollection GetElementsByName([In] string v); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetElementById([In] string v);
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElementCollection GetElementsByTagName([In] string v); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F69A-98B5-11CF-BB82-00AA00BDCE0B"),
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLDocument4 {
            void Focus(); 
            bool HasFocus(); 
            void SetOnselectionchange(object p);
            object GetOnselectionchange(); 
            object GetNamespaces();
            object createDocumentFromUrl(string bstrUrl, string bstrOptions);
            void SetMedia(string bstrMedia);
            string GetMedia(); 
            object CreateEventObject([In, Optional] ref object eventObject);
            bool FireEvent(string eventName); 
            object CreateRenderStyle(string bstr); 
            void SetOncontrolselect(object p);
            object GetOncontrolselect(); 
            string GetURLUnencoded();
        }

 
        [ComImport(), Guid("3050f613-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLDocumentEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)] bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1026)] bool onstop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1027)] void onbeforeeditfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1037)] void onselectionchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("332C4426-26CB-11D0-B483-00C04FD90119"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLFramesCollection2 { 
            object Item(ref object idOrName);
            int GetLength(); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("332C4427-26CB-11D0-B483-00C04FD90119"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLWindow2 {
            [return: MarshalAs(UnmanagedType.IDispatch)] object Item([In] ref object pvarIndex); 
            int GetLength(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLFramesCollection2 GetFrames();
            void SetDefaultStatus([In] string p); 
            string GetDefaultStatus();
            void SetStatus([In] string p);
            string GetStatus();
            int SetTimeout([In] string expression, [In] int msec, [In] ref Object language); 
            void ClearTimeout([In] int timerID);
            void Alert([In] string message); 
            bool Confirm([In] string message); 
            [return: MarshalAs(UnmanagedType.Struct)] object Prompt([In] string message, [In] string defstr);
            object GetImage(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLLocation GetLocation();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IOmHistory GetHistory();
            void Close();
            void SetOpener([In] object p); 
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetOpener();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IOmNavigator GetNavigator(); 
            void SetName([In] string p); 
            string GetName();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLWindow2 GetParent(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLWindow2 Open([In] string URL, [In] string name, [In] string features, [In] bool replace);
            object GetSelf();
            object GetTop();
            object GetWindow(); 
            void Navigate([In] string URL);
            void SetOnfocus([In] Object p); 
            Object GetOnfocus(); 
            void SetOnblur([In] Object p);
            Object GetOnblur(); 
            void SetOnload([In] Object p);
            Object GetOnload();
            void SetOnbeforeunload(Object p);
            Object GetOnbeforeunload(); 
            void SetOnunload([In] Object p);
            Object GetOnunload(); 
            void SetOnhelp(Object p); 
            Object GetOnhelp();
            void SetOnerror([In] Object p); 
            Object GetOnerror();
            void SetOnresize([In] Object p);
            Object GetOnresize();
            void SetOnscroll([In] Object p); 
            Object GetOnscroll();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLDocument2 GetDocument(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLEventObj GetEvent(); 
            object Get_newEnum();
            Object ShowModalDialog([In] string dialog, [In] ref Object varArgIn, [In] ref Object varOptions); 
            void ShowHelp([In] string helpURL, [In] Object helpArg, [In] string features);
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLScreen GetScreen();
            object GetOption();
            void Focus(); 
            bool GetClosed();
            void Blur(); 
            void Scroll([In] int x, [In] int y); 
            object GetClientInformation();
            int SetInterval([In] string expression, [In] int msec, [In] ref Object language); 
            void ClearInterval([In] int timerID);
            void SetOffscreenBuffering([In] Object p);
            Object GetOffscreenBuffering();
            [return: MarshalAs(UnmanagedType.Struct)] Object ExecScript([In] string code, [In] string language); 
            string toString();
            void ScrollBy([In] int x, [In] int y); 
            void ScrollTo([In] int x, [In] int y); 
            void MoveTo([In] int x, [In] int y);
            void MoveBy([In] int x, [In] int y); 
            void ResizeTo([In] int x, [In] int y);
            void ResizeBy([In] int x, [In] int y);
            object GetExternal();
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f4ae-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLWindow3 {
            int GetScreenLeft(); 
            int GetScreenTop();
            bool AttachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void DetachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            int SetTimeout([In]ref object expression, int msec, [In] ref object language); 
            int SetInterval([In]ref object expression, int msec, [In] ref object language);
            void Print(); 
            void SetBeforePrint(object o); 
            object GetBeforePrint();
            void SetAfterPrint(object o); 
            object GetAfterPrint();
            object GetClipboardData();
            object ShowModelessDialog(string url, object varArgIn, object options);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f6cf-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLWindow4 {
            [return: MarshalAs(UnmanagedType.IDispatch)] object CreatePopup([In] ref object reserved); 
            [return: MarshalAs(UnmanagedType.Interface)] object frameElement();
        }

 
        [ComImport(), Guid("3050f625-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLWindowEvents2 {
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1008)] void onunload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1002)] bool onerror(string description, string url, int line);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1017)] void onbeforeunload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1024)] void onbeforeprint(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1025)] void onafterprint(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f666-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLPopup { 
            void show(int x, int y, int w, int h, ref object element);
            void hide(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLDocument GetDocument();
            bool IsOpen();
        }
 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f35c-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLScreen { 
            int GetColorDepth();
            void SetBufferDepth(int d); 
            int GetBufferDepth();
            int GetWidth();
            int GetHeight();
            void SetUpdateInterval(int i); 
            int GetUpdateInterval();
            int GetAvailHeight(); 
            int GetAvailWidth(); 
            bool GetFontSmoothingEnabled();
        } 


        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("163BB1E0-6E00-11CF-837A-48DC04C10000"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLLocation {
            void SetHref([In] string p); 
            string GetHref(); 
            void SetProtocol([In] string p);
            string GetProtocol(); 
            void SetHost([In] string p);
            string GetHost();
            void SetHostname([In] string p);
            string GetHostname(); 
            void SetPort([In] string p);
            string GetPort(); 
            void SetPathname([In] string p); 
            string GetPathname();
            void SetSearch([In] string p); 
            string GetSearch();
            void SetHash([In] string p);
            string GetHash();
            void Reload([In] bool flag); 
            void Replace([In] string bstr);
            void Assign([In] string bstr); 
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("FECEAAA2-8405-11CF-8BA1-00AA00476DA6"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IOmHistory {
            short GetLength();
            void Back(); 
            void Forward();
            void Go([In] ref Object pvargdistance); 
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("FECEAAA5-8405-11CF-8BA1-00AA00476DA6"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IOmNavigator {
            string GetAppCodeName();
            string GetAppName(); 
            string GetAppVersion();
            string GetUserAgent(); 
            bool JavaEnabled(); 
            bool TaintEnabled();
            object GetMimeTypes(); 
            object GetPlugins();
            bool GetCookieEnabled();
            object GetOpsProfile();
            string GetCpuClass(); 
            string GetSystemLanguage();
            string GetBrowserLanguage(); 
            string GetUserLanguage(); 
            string GetPlatform();
            string GetAppMinorVersion(); 
            int GetConnectionSpeed();
            bool GetOnLine();
            object GetUserProfile();
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F32D-98B5-11CF-BB82-00AA00BDCE0B"), 
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLEventObj {
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetSrcElement(); 
            bool GetAltKey();
            bool GetCtrlKey();
            bool GetShiftKey();
            void SetReturnValue(object p); 
            object GetReturnValue();
            void SetCancelBubble(bool p); 
            bool GetCancelBubble(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetFromElement();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetToElement(); 
            void SetKeyCode([In] int p);
            int GetKeyCode();
            int GetButton();
            string GetEventType(); 
            string GetQualifier();
            int GetReason(); 
            int GetX(); 
            int GetY();
            int GetClientX(); 
            int GetClientY();
            int GetOffsetX();
            int GetOffsetY();
            int GetScreenX(); 
            int GetScreenY();
            object GetSrcFilter(); 
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f48B-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLEventObj2 {
            void SetAttribute(string attributeName, object attributeValue, int lFlags);
            object GetAttribute(string attributeName, int lFlags); 
            bool RemoveAttribute(string attributeName, int lFlags);
            void SetPropertyName(string name); 
            string GetPropertyName(); 
            void SetBookmarks(ref object bm);
            object GetBookmarks(); 
            void SetRecordset(ref object rs);
            object GetRecordset();
            void SetDataFld(string df);
            string GetDataFld(); 
            void SetBoundElements(ref object be);
            object GetBoundElements(); 
            void SetRepeat(bool r); 
            bool GetRepeat();
            void SetSrcUrn(string urn); 
            string GetSrcUrn();
            void SetSrcElement(ref object se);
            object GetSrcElement();
            void SetAltKey(bool alt); 
            bool GetAltKey();
            void SetCtrlKey(bool ctrl); 
            bool GetCtrlKey(); 
            void SetShiftKey(bool shift);
            bool GetShiftKey(); 
            void SetFromElement(ref object element);
            object GetFromElement();
            void SetToElement(ref object element);
            object GetToElement(); 
            void SetButton(int b);
            int GetButton(); 
            void SetType(string type); 
            string GetType();
            void SetQualifier(string q); 
            string GetQualifier();
            void SetReason(int r);
            int GetReason();
            void SetX(int x); 
            int GetX();
            void SetY(int y); 
            int GetY(); 
            void SetClientX(int x);
            int GetClientX(); 
            void SetClientY(int y);
            int GetClientY();
            void SetOffsetX(int x);
            int GetOffsetX(); 
            void SetOffsetY(int y);
            int GetOffsetY(); 
            void SetScreenX(int x); 
            int GetScreenX();
            void SetScreenY(int y); 
            int GetScreenY();
            void SetSrcFilter(ref object filter);
            object GetSrcFilter();
            object GetDataTransfer(); 
        }
 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f814-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLEventObj4 { 
            int GetWheelDelta();
        };

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F21F-98B5-11CF-BB82-00AA00BDCE0B"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLElementCollection { 
            string toString(); 
            void SetLength(int p);
            int GetLength(); 
            [return: MarshalAs(UnmanagedType.Interface)] object Get_newEnum();
            [return: MarshalAs(UnmanagedType.IDispatch)] object Item(object idOrName, object index);
            [return: MarshalAs(UnmanagedType.Interface)] object Tags(object tagName);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F1FF-98B5-11CF-BB82-00AA00BDCE0B"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLElement {
            void SetAttribute(string attributeName, object attributeValue, int lFlags); 
            object GetAttribute(string attributeName, int lFlags);
            bool RemoveAttribute(string strAttributeName, int lFlags);
            void SetClassName(string p);
            string GetClassName(); 
            void SetId(string p);
            string GetId(); 
            string GetTagName(); 
            IHTMLElement GetParentElement();
            IHTMLStyle GetStyle(); 
            void SetOnhelp(Object p);
            Object GetOnhelp();
            void SetOnclick(Object p);
            Object GetOnclick(); 
            void SetOndblclick(Object p);
            Object GetOndblclick(); 
            void SetOnkeydown(Object p); 
            Object GetOnkeydown();
            void SetOnkeyup(Object p); 
            Object GetOnkeyup();
            void SetOnkeypress(Object p);
            Object GetOnkeypress();
            void SetOnmouseout(Object p); 
            Object GetOnmouseout();
            void SetOnmouseover(Object p); 
            Object GetOnmouseover(); 
            void SetOnmousemove(Object p);
            Object GetOnmousemove(); 
            void SetOnmousedown(Object p);
            Object GetOnmousedown();
            void SetOnmouseup(Object p);
            Object GetOnmouseup(); 
            [return: MarshalAs(UnmanagedType.Interface)] IHTMLDocument2 GetDocument();
            void SetTitle(string p); 
            string GetTitle(); 
            void SetLanguage(string p);
            string GetLanguage(); 
            void SetOnselectstart(Object p);
            Object GetOnselectstart();
            void ScrollIntoView(object varargStart);
            bool Contains(IHTMLElement pChild); 
            int GetSourceIndex();
            Object GetRecordNumber(); 
            void SetLang(string p); 
            string GetLang();
            int GetOffsetLeft(); 
            int GetOffsetTop();
            int GetOffsetWidth();
            int GetOffsetHeight();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetOffsetParent(); 
            void SetInnerHTML(string p);
            string GetInnerHTML(); 
            void SetInnerText(string p); 
            string GetInnerText();
            void SetOuterHTML(string p); 
            string GetOuterHTML();
            void SetOuterText(string p);
            string GetOuterText();
            void InsertAdjacentHTML(string @where, 
                string html);
            void InsertAdjacentText(string @where, 
                string text); 
            IHTMLElement GetParentTextEdit();
            bool GetIsTextEdit(); 
            void Click();
            [return: MarshalAs(UnmanagedType.Interface)] object GetFilters();
            void SetOndragstart(Object p);
            Object GetOndragstart(); 
            string toString();
            void SetOnbeforeupdate(Object p); 
            Object GetOnbeforeupdate(); 
            void SetOnafterupdate(Object p);
            Object GetOnafterupdate(); 
            void SetOnerrorupdate(Object p);
            Object GetOnerrorupdate();
            void SetOnrowexit(Object p);
            Object GetOnrowexit(); 
            void SetOnrowenter(Object p);
            Object GetOnrowenter(); 
            void SetOndatasetchanged(Object p); 
            Object GetOndatasetchanged();
            void SetOndataavailable(Object p); 
            Object GetOndataavailable();
            void SetOndatasetcomplete(Object p);
            Object GetOndatasetcomplete();
            void SetOnfilterchange(Object p); 
            Object GetOnfilterchange();
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetChildren(); 
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetAll(); 
        }
 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f434-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLElement2 { 
            string ScopeName();
            void SetCapture(bool containerCapture); 
            void ReleaseCapture(); 
            void SetOnLoseCapture(object v);
            object GetOnLoseCapture(); 
            string GetComponentFromPoint(int x, int y);
            void DoScroll(object component);
            void SetOnScroll(object v);
            object GetOnScroll(); 
            void SetOnDrag(object v);
            object GetOnDrag(); 
            void SetOnDragEnd(object v); 
            object GetOnDragEnd();
            void SetOnDragEnter(object v); 
            object GetOnDragEnter();
            void SetOnDragOver(object v);
            object GetOnDragOver();
            void SetOnDragleave(object v); 
            object GetOnDragLeave();
            void SetOnDrop(object v); 
            object GetOnDrop(); 
            void SetOnBeforeCut(object v);
            object GetOnBeforeCut(); 
            void SetOnCut(object v);
            object GetOnCut();
            void SetOnBeforeCopy(object v);
            object GetOnBeforeCopy(); 
            void SetOnCopy(object v);
            object GetOnCopy(object p); 
            void SetOnBeforePaste(object v); 
            object GetOnBeforePaste(object p);
            void SetOnPaste(object v); 
            object GetOnPaste(object p);
            object GetCurrentStyle();
            void SetOnPropertyChange(object v);
            object GetOnPropertyChange(object p); 
            object GetClientRects();
            object GetBoundingClientRect(); 
            void SetExpression(string propName, string expression, string language); 
            object GetExpression(string propName);
            bool RemoveExpression(string propName); 
            void SetTabIndex(int v);
            short GetTabIndex();
            void Focus();
            void SetAccessKey(string v); 
            string GetAccessKey();
            void SetOnBlur(object v); 
            object GetOnBlur(); 
            void SetOnFocus(object v);
            object GetOnFocus(); 
            void SetOnResize(object v);
            object GetOnResize();
            void Blur();
            void AddFilter(object pUnk); 
            void RemoveFilter(object pUnk);
            int ClientHeight(); 
            int ClientWidth(); 
            int ClientTop();
            int ClientLeft(); 
            bool AttachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void DetachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            object ReadyState();
            void SetOnReadyStateChange(object v); 
            object GetOnReadyStateChange();
            void SetOnRowsDelete(object v); 
            object GetOnRowsDelete(); 
            void SetOnRowsInserted(object v);
            object GetOnRowsInserted(); 
            void SetOnCellChange(object v);
            object GetOnCellChange();
            void SetDir(string v);
            string GetDir(); 
            object CreateControlRange();
            int GetScrollHeight(); 
            int GetScrollWidth(); 
            void SetScrollTop(int v);
            int GetScrollTop(); 
            void SetScrollLeft(int v);
            int GetScrollLeft();
            void ClearAttributes();
            void MergeAttributes(object mergeThis); 
            void SetOnContextMenu(object v);
            object GetOnContextMenu(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement 
                InsertAdjacentElement(string @where,
                    [In, MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement insertedElement); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement
                applyElement([In, MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement apply,
                    string @where);
            string GetAdjacentText(string @where); 
            string ReplaceAdjacentText(string @where,string newText);
            bool CanHaveChildren(); 
            int AddBehavior(string url, ref object oFactory); 
            bool RemoveBehavior(int cookie);
            object GetRuntimeStyle(); 
            object GetBehaviorUrns();
            void SetTagUrn(string v);
            string GetTagUrn();
            void SetOnBeforeEditFocus(object v); 
            object GetOnBeforeEditFocus();
            int GetReadyStateValue(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElementCollection GetElementsByTagName(string v); 
        }
 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f673-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLElement3 {
            void MergeAttributes(object mergeThis, object pvarFlags); 
            bool IsMultiLine();
            bool CanHaveHTML(); 
            void SetOnLayoutComplete(object v); 
            object GetOnLayoutComplete();
            void SetOnPage(object v); 
            object GetOnPage();
            void SetInflateBlock(bool v);
            bool GetInflateBlock();
            void SetOnBeforeDeactivate(object v); 
            object GetOnBeforeDeactivate();
            void SetActive(); 
            void SetContentEditable(string v); 
            string GetContentEditable();
            bool IsContentEditable(); 
            void SetHideFocus(bool v);
            bool GetHideFocus();
            void SetDisabled(bool v);
            bool GetDisabled(); 
            bool IsDisabled();
            void SetOnMove(object v); 
            object GetOnMove(); 
            void SetOnControlSelect(object v);
            object GetOnControlSelect(); 
            bool FireEvent(string bstrEventName, object pvarEventObject);
            void SetOnResizeStart(object v);
            object GetOnResizeStart();
            void SetOnResizeEnd(object v); 
            object GetOnResizeEnd();
            void SetOnMoveStart(object v); 
            object GetOnMoveStart(); 
            void SetOnMoveEnd(object v);
            object GetOnMoveEnd(); 
            void SetOnMouseEnter(object v);
            object GetOnMouseEnter();
            void SetOnMouseLeave(object v);
            object GetOnMouseLeave(); 
            void SetOnActivate(object v);
            object GetOnActivate(); 
            void SetOnDeactivate(object v); 
            object GetOnDeactivate();
            bool DragDrop(); 
            int GlyphMode();
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f5da-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        public interface IHTMLDOMNode { 
            long GetNodeType(); 
            IHTMLDOMNode GetParentNode();
            bool HasChildNodes(); 
            object GetChildNodes();
            object GetAttributes();
            IHTMLDOMNode InsertBefore(IHTMLDOMNode newChild, object refChild);
            IHTMLDOMNode RemoveChild(IHTMLDOMNode oldChild); 
            IHTMLDOMNode ReplaceChild(IHTMLDOMNode newChild, IHTMLDOMNode oldChild);
            IHTMLDOMNode CloneNode(bool fDeep); 
            IHTMLDOMNode RemoveNode(bool fDeep); 
            IHTMLDOMNode SwapNode(IHTMLDOMNode otherNode);
            IHTMLDOMNode ReplaceNode(IHTMLDOMNode replacement); 
            IHTMLDOMNode AppendChild(IHTMLDOMNode newChild);
            string NodeName();
            void SetNodeValue(object v);
            object GetNodeValue(); 
            IHTMLDOMNode FirstChild();
            IHTMLDOMNode LastChild(); 
            IHTMLDOMNode PreviousSibling(); 
            IHTMLDOMNode NextSibling();
        }; 

        [ComImport(), Guid("3050f60f-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }
 
        [ComImport(), Guid("3050f610-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLAnchorEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f611-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLAreaEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 
 
        [ComImport(), Guid("3050f617-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLButtonElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f612-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLControlElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        } 

        [ComImport(), Guid("3050f614-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLFormElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1007)] bool onsubmit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1015)] bool onreset(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }
 
        [ComImport(), Guid("3050f7ff-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLFrameSiteEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f616-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLImgEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1000)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f61a-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLInputFileElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412082)] bool onchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412102)] void onselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1000)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f61b-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLInputImageEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412080)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412083)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412084)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f618-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLInputTextElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1001)] bool onchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1006)] void onselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1001)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f61c-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLLabelEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        } 

        [ComImport(), Guid("3050f61d-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLLinkElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412080)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412083)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }
 
        [ComImport(), Guid("3050f61e-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLMapEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f61f-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLMarqueeElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412092)] void onbounce(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412086)] void onfinish(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412085)] void onstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 

        [ComImport(), Guid("3050f619-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLOptionButtonElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412082)] bool onchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 
 
        [ComImport(), Guid("3050f622-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLSelectElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412082)] void onchange_void(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }
 
        [ComImport(), Guid("3050f615-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLStyleElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f623-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLTableEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 
 
        [ComImport(), Guid("3050f624-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLTextContainerEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1001)] void onchange_void(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1006)] void onselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 

        [ComImport(), Guid("3050f621-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLScriptEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)]void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F25E-98B5-11CF-BB82-00AA00BDCE0B"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLStyle {
            void SetFontFamily(string p); 
            string GetFontFamily(); 
            void SetFontStyle(string p);
            string GetFontStyle(); 
            void SetFontObject(string p);
            string GetFontObject();
            void SetFontWeight(string p);
            string GetFontWeight(); 
            void SetFontSize(object p);
            object GetFontSize(); 
            void SetFont(string p); 
            string GetFont();
            void SetColor(object p); 
            object GetColor();
            void SetBackground(string p);
            string GetBackground();
            void SetBackgroundColor(object p); 
            object GetBackgroundColor();
            void SetBackgroundImage(string p); 
            string GetBackgroundImage(); 
            void SetBackgroundRepeat(string p);
            string GetBackgroundRepeat(); 
            void SetBackgroundAttachment(string p);
            string GetBackgroundAttachment();
            void SetBackgroundPosition(string p);
            string GetBackgroundPosition(); 
            void SetBackgroundPositionX(object p);
            object GetBackgroundPositionX(); 
            void SetBackgroundPositionY(object p); 
            object GetBackgroundPositionY();
            void SetWordSpacing(object p); 
            object GetWordSpacing();
            void SetLetterSpacing(object p);
            object GetLetterSpacing();
            void SetTextDecoration(string p); 
            string GetTextDecoration();
            void SetTextDecorationNone(bool p); 
            bool GetTextDecorationNone(); 
            void SetTextDecorationUnderline(bool p);
            bool GetTextDecorationUnderline(); 
            void SetTextDecorationOverline(bool p);
            bool GetTextDecorationOverline();
            void SetTextDecorationLineThrough(bool p);
            bool GetTextDecorationLineThrough(); 
            void SetTextDecorationBlink(bool p);
            bool GetTextDecorationBlink(); 
            void SetVerticalAlign(object p); 
            object GetVerticalAlign();
            void SetTextTransform(string p); 
            string GetTextTransform();
            void SetTextAlign(string p);
            string GetTextAlign();
            void SetTextIndent(object p); 
            object GetTextIndent();
            void SetLineHeight(object p); 
            object GetLineHeight(); 
            void SetMarginTop(object p);
            object GetMarginTop(); 
            void SetMarginRight(object p);
            object GetMarginRight();
            void SetMarginBottom(object p);
            object GetMarginBottom(); 
            void SetMarginLeft(object p);
            object GetMarginLeft(); 
            void SetMargin(string p); 
            string GetMargin();
            void SetPaddingTop(object p); 
            object GetPaddingTop();
            void SetPaddingRight(object p);
            object GetPaddingRight();
            void SetPaddingBottom(object p); 
            object GetPaddingBottom();
            void SetPaddingLeft(object p); 
            object GetPaddingLeft(); 
            void SetPadding(string p);
            string GetPadding(); 
            void SetBorder(string p);
            string GetBorder();
            void SetBorderTop(string p);
            string GetBorderTop(); 
            void SetBorderRight(string p);
            string GetBorderRight(); 
            void SetBorderBottom(string p); 
            string GetBorderBottom();
            void SetBorderLeft(string p); 
            string GetBorderLeft();
            void SetBorderColor(string p);
            string GetBorderColor();
            void SetBorderTopColor(object p); 
            object GetBorderTopColor();
            void SetBorderRightColor(object p); 
            object GetBorderRightColor(); 
            void SetBorderBottomColor(object p);
            object GetBorderBottomColor(); 
            void SetBorderLeftColor(object p);
            object GetBorderLeftColor();
            void SetBorderWidth(string p);
            string GetBorderWidth(); 
            void SetBorderTopWidth(object p);
            object GetBorderTopWidth(); 
            void SetBorderRightWidth(object p); 
            object GetBorderRightWidth();
            void SetBorderBottomWidth(object p); 
            object GetBorderBottomWidth();
            void SetBorderLeftWidth(object p);
            object GetBorderLeftWidth();
            void SetBorderStyle(string p); 
            string GetBorderStyle();
            void SetBorderTopStyle(string p); 
            string GetBorderTopStyle(); 
            void SetBorderRightStyle(string p);
            string GetBorderRightStyle(); 
            void SetBorderBottomStyle(string p);
            string GetBorderBottomStyle();
            void SetBorderLeftStyle(string p);
            string GetBorderLeftStyle(); 
            void SetWidth(object p);
            object GetWidth(); 
            void SetHeight(object p); 
            object GetHeight();
            void SetStyleFloat(string p); 
            string GetStyleFloat();
            void SetClear(string p);
            string GetClear();
            void SetDisplay(string p); 
            string GetDisplay();
            void SetVisibility(string p); 
            string GetVisibility(); 
            void SetListStyleType(string p);
            string GetListStyleType(); 
            void SetListStylePosition(string p);
            string GetListStylePosition();
            void SetListStyleImage(string p);
            string GetListStyleImage(); 
            void SetListStyle(string p);
            string GetListStyle(); 
            void SetWhiteSpace(string p); 
            string GetWhiteSpace();
            void SetTop(object p); 
            object GetTop();
            void SetLeft(object p);
            object GetLeft();
            string GetPosition(); 
            void SetZIndex(object p);
            object GetZIndex(); 
            void SetOverflow(string p); 
            string GetOverflow();
            void SetPageBreakBefore(string p); 
            string GetPageBreakBefore();
            void SetPageBreakAfter(string p);
            string GetPageBreakAfter();
            void SetCssText(string p); 
            string GetCssText();
            void SetPixelTop(int p); 
            int GetPixelTop(); 
            void SetPixelLeft(int p);
            int GetPixelLeft(); 
            void SetPixelWidth(int p);
            int GetPixelWidth();
            void SetPixelHeight(int p);
            int GetPixelHeight(); 
            void SetPosTop(float p);
            float GetPosTop(); 
            void SetPosLeft(float p); 
            float GetPosLeft();
            void SetPosWidth(float p); 
            float GetPosWidth();
            void SetPosHeight(float p);
            float GetPosHeight();
            void SetCursor(string p); 
            string GetCursor();
            void SetClip(string p); 
            string GetClip(); 
            void SetFilter(string p);
            string GetFilter(); 
            void SetAttribute(string strAttributeName, object AttributeValue, int lFlags);
            object GetAttribute(string strAttributeName, int lFlags);
            bool RemoveAttribute(string strAttributeName, int lFlags);
        } 

        [ComImport(), 
         Guid("39088D7E-B71E-11D1-8F39-00C04FD946D0"), 
         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
        ] 
        public interface IExtender {

            int Align {get; set;}
 
            bool Enabled {get; set;}
 
            int Height {get; set;} 

            int Left {get; set;} 

            bool TabStop {get; set;}

            int Top {get; set;} 

            bool Visible {get; set;} 
 
            int Width {get; set;}
 
            string Name {[return: MarshalAs(UnmanagedType.BStr)]get;}

            object Parent {[return: MarshalAs(UnmanagedType.Interface)]get;}
 
            IntPtr Hwnd {get;}
 
            object Container {[return: MarshalAs(UnmanagedType.Interface)]get;} 

            void Move( 
                [In, MarshalAs(UnmanagedType.Interface)]
                object left,
                [In, MarshalAs(UnmanagedType.Interface)]
                object top, 
                [In, MarshalAs(UnmanagedType.Interface)]
                object width, 
                [In, MarshalAs(UnmanagedType.Interface)] 
                object height);
        } 

        [ComImport(),
         Guid("8A701DA0-4FEB-101B-A82E-08002B2B2337"),
         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ]
        public interface IGetOleObject { 
            [return: MarshalAs(UnmanagedType.Interface)] 
            object GetOleObject(ref Guid riid);
        } 

        [
            ComImport(),
            Guid("CB2F6722-AB3A-11d2-9C40-00C04FA30A3E"), 
            InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
        ] 
        internal interface ICorRuntimeHost { 

            [PreserveSig()] int CreateLogicalThreadState(); 
            [PreserveSig()] int DeleteLogicalThreadState();
            [PreserveSig()] int SwitchInLogicalThreadState(
             [In] ref uint pFiberCookie);                 // [in] Cookie that indicates the fiber to use.
 
            [PreserveSig()] int SwitchOutLogicalThreadState(
             out uint FiberCookie);               // [out] Cookie that indicates the fiber being switched out. 
 
            [PreserveSig()] int LocksHeldByLogicalThread(           // Return code.
             out uint pCount                        // [out] Number of locks that the current thread holds. 
                );

            [PreserveSig()] int MapFile(
             IntPtr          hFile,          // [in]  HANDLE for file 
             out IntPtr      hMapAddress);   // [out] HINSTANCE for mapped file
 
            //================================================================= 
            //
            // New hosting methods 
            //
            // Returns an object for configuring the runtime prior to
            // it starting. If the runtime has been initialized this
            // routine returns an error. See ICorConfiguration. 
            [PreserveSig()] int GetConfiguration([MarshalAs(UnmanagedType.IUnknown)] out object pConfiguration);
 
            // Starts the runtime. This is equivalent to CoInitializeCor(); 
            [PreserveSig()] int Start();
 
            // Terminates the runtime, This is equivalent CoUninitializeCor();
            [PreserveSig()] int Stop();

            // Creates a domain in the runtime. The identity array is 
            // a pointer to an array TYPE containing IIdentity objects defining
            // the security identity. 
            [PreserveSig()] int CreateDomain(string pwzFriendlyName, 
                                 [MarshalAs(UnmanagedType.IUnknown)] object pIdentityArray, // Optional
                                 [MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain); 

            // Returns the default domain.
            [PreserveSig()] int GetDefaultDomain([MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);
 

            // Enumerate currently existing domains. 
            [PreserveSig()] int EnumDomains(out IntPtr hEnum); 

            // Returns S_FALSE when there are no more domains. A domain 
            // is passed out only when S_OK is returned.
            [PreserveSig()] int NextDomain(IntPtr hEnum,
                               [MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);
 
            // Close the enumeration, releasing resources
            [PreserveSig()] int CloseEnum(IntPtr hEnum); 
 
            [PreserveSig()] int CreateDomainEx(string pwzFriendlyName, // Optional
                                   [MarshalAs(UnmanagedType.IUnknown)] object pSetup,        // Optional 
                                   [MarshalAs(UnmanagedType.IUnknown)] object pEvidence,     // Optional
                                   [MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);

            [PreserveSig()] int CreateDomainSetup([MarshalAs(UnmanagedType.IUnknown)] out object pAppDomainSetup); 

            [PreserveSig()] int CreateEvidence([MarshalAs(UnmanagedType.IUnknown)] out object pEvidence); 
 
            [PreserveSig()] int UnloadDomain([MarshalAs(UnmanagedType.IUnknown)] object pAppDomain);
 
            // Returns the thread's domain.
            [PreserveSig()] int CurrentDomain([MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);
        }
 
        [
            ComImport(), 
            Guid("CB2F6723-AB3A-11d2-9C40-00C04FA30A3E") 
        ]
        internal class CorRuntimeHost 
        {
        }

        [ComImport(), 
        Guid("000C0601-0000-0000-C000-000000000046"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ] 
        public interface IMsoComponentManager {
 
        /// 
        /// 
        ///      Return in *ppvObj an implementation of interface iid for service
        ///      guidService (same as IServiceProvider::QueryService). 
        ///      Return NOERROR if the requested service is supported, otherwise return
        ///      NULL in *ppvObj and an appropriate error (eg E_FAIL, E_NOINTERFACE). 
        ///  
        [PreserveSig]
        int QueryService( 
            ref Guid guidService,
            ref Guid iid,
            [MarshalAs(UnmanagedType.Interface)]
            out object ppvObj); 

        ///  
        ///  
        ///      Standard FDebugMessage method.
        ///      Since IMsoComponentManager is a reference counted interface, 
        ///      MsoDWGetChkMemCounter should be used when processing the
        ///      msodmWriteBe message.
        /// 
        [PreserveSig] 
        bool FDebugMessage(
            IntPtr hInst, 
            int msg, 
            IntPtr wParam,
            IntPtr lParam); 

        /// 
        /// 
        ///      Register component piComponent and its registration info pcrinfo with 
        ///      this component manager.  Return in *pdwComponentID a cookie which will
        ///      identify the component when it calls other IMsoComponentManager 
        ///      methods. 
        ///      Return TRUE if successful, FALSE otherwise.
        ///  
        [PreserveSig]
        bool FRegisterComponent(
            IMsoComponent component,
            NativeMethods.MSOCRINFOSTRUCT pcrinfo, 
            out int dwComponentID);
 
        ///  
        /// 
        ///      Undo the registration of the component identified by dwComponentID 
        ///      (the cookie returned from the FRegisterComponent method).
        ///      Return TRUE if successful, FALSE otherwise.
        /// 
        [PreserveSig] 
        bool FRevokeComponent(int dwComponentID);
 
        ///  
        /// 
        ///      Update the registration info of the component identified by 
        ///      dwComponentID (the cookie returned from FRegisterComponent) with the
        ///      new registration information pcrinfo.
        ///      Typically this is used to update the idle time registration data, but
        ///      can be used to update other registration data as well. 
        ///      Return TRUE if successful, FALSE otherwise.
        ///  
        [PreserveSig] 
        bool FUpdateComponentRegistration(int dwComponentID,NativeMethods.MSOCRINFOSTRUCT pcrinfo);
 
        /// 
        /// 
        ///      Notify component manager that component identified by dwComponentID
        ///      (cookie returned from FRegisterComponent) has been activated. 
        ///      The active component gets the  chance to process messages before they
        ///      are dispatched (via IMsoComponent::FPreTranslateMessage) and typically 
        ///      gets first chance at idle time after the host. 
        ///      This method fails if another component is already Exclusively Active.
        ///      In this case, FALSE is returned and SetLastError is set to 
        ///      msoerrACompIsXActive (comp usually need not take any special action
        ///      in this case).
        ///      Return TRUE if successful.
        ///  
        [PreserveSig]
        bool FOnComponentActivate(int dwComponentID); 
 
        /// 
        ///  
        ///      Called to inform component manager that  component identified by
        ///      dwComponentID (cookie returned from FRegisterComponent) wishes
        ///      to perform a tracking operation (such as mouse tracking).
        ///      The component calls this method with fTrack == TRUE to begin the 
        ///      tracking operation and with fTrack == FALSE to end the operation.
        ///      During the tracking operation the component manager routes messages 
        ///      to the tracking component (via IMsoComponent::FPreTranslateMessage) 
        ///      rather than to the active component.  When the tracking operation ends,
        ///      the component manager should resume routing messages to the active 
        ///      component.
        ///      Note: component manager should perform no idle time processing during a
        ///              tracking operation other than give the tracking component idle
        ///              time via IMsoComponent::FDoIdle. 
        ///      Note: there can only be one tracking component at a time.
        ///      Return TRUE if successful, FALSE otherwise. 
        ///  
        [PreserveSig]
        bool FSetTrackingComponent(int dwComponentID, [In, MarshalAs(UnmanagedType.Bool)] bool fTrack); 

        /// 
        /// 
        ///      Notify component manager that component identified by dwComponentID 
        ///      (cookie returned from FRegisterComponent) is entering the state
        ///      identified by uStateID (msocstateXXX value).  (For convenience when 
        ///      dealing with sub CompMgrs, the host can call this method passing 0 for 
        ///      dwComponentID.)
        ///      Component manager should notify all other interested components within 
        ///      the state context indicated by uContext (a msoccontextXXX value),
        ///      excluding those within the state context of a CompMgr in rgpicmExclude,
        ///      via IMsoComponent::OnEnterState (see "Comments on State Contexts",
        ///      above). 
        ///      Component Manager should also take appropriate action depending on the
        ///      value of uStateID (see msocstate comments, above). 
        ///      dwReserved is reserved for future use and should be zero. 
        ///
        ///      rgpicmExclude (can be NULL) is an array of cpicmExclude CompMgrs (can 
        ///      include root CompMgr and/or sub CompMgrs); components within the state
        ///      context of a CompMgr appearing in this array should NOT be notified of
        ///      the state change (note: if uContext    is msoccontextMine, the only
        ///      CompMgrs in rgpicmExclude that are checked for exclusion are those that 
        ///      are sub CompMgrs of this Component Manager, since all other CompMgrs
        ///      are outside of this Component Manager's state context anyway.) 
        /// 
        ///      Note: Calls to this method are symmetric with calls to
        ///      FOnComponentExitState. 
        ///      That is, if n OnComponentEnterState calls are made, the component is
        ///      considered to be in the state until n FOnComponentExitState calls are
        ///      made.  Before revoking its registration a component must make a
        ///      sufficient number of FOnComponentExitState calls to offset any 
        ///      outstanding OnComponentEnterState calls it has made.
        /// 
        ///      Note: inplace objects should not call this method with 
        ///      uStateID == msocstateModal when entering modal state. Such objects
        ///      should call IOleInPlaceFrame::EnableModeless instead. 
        /// 
        [PreserveSig]
        void OnComponentEnterState(int dwComponentID,int uStateID,int uContext,int cpicmExclude,/* IMsoComponentManger** */ int rgpicmExclude,int dwReserved);
 
        /// 
        ///  
        ///      Notify component manager that component identified by dwComponentID 
        ///      (cookie returned from FRegisterComponent) is exiting the state
        ///      identified by uStateID (a msocstateXXX value).  (For convenience when 
        ///      dealing with sub CompMgrs, the host can call this method passing 0 for
        ///      dwComponentID.)
        ///      uContext, cpicmExclude, and rgpicmExclude are as they are in
        ///      OnComponentEnterState. 
        ///      Component manager      should notify all appropriate interested components
        ///      (taking into account uContext, cpicmExclude, rgpicmExclude) via 
        ///      IMsoComponent::OnEnterState (see "Comments on State Contexts", above). 
        ///      Component Manager should also take appropriate action depending on
        ///      the value of uStateID (see msocstate comments, above). 
        ///      Return TRUE if, at the end of this call, the state is still in effect
        ///      at the root of this component manager's state context
        ///      (because the host or some other component is still in the state),
        ///      otherwise return FALSE (ie. return what FInState would return). 
        ///      Caller can normally ignore the return value.
        /// 
        ///      Note: n calls to this method are symmetric with n calls to 
        ///      OnComponentEnterState (see OnComponentEnterState comments, above).
        ///  
        [PreserveSig]
        bool FOnComponentExitState(
            int dwComponentID,
            int uStateID, 
            int uContext,
            int cpicmExclude, 
            /* IMsoComponentManager** */ int rgpicmExclude); 

        ///  
        /// 
        ///      Return TRUE if the state identified by uStateID (a msocstateXXX value)
        ///      is in effect at the root of this component manager's state context,
        ///      FALSE otherwise (see "Comments on State Contexts", above). 
        ///      pvoid is reserved for future use and should be NULL.
        ///  
        [PreserveSig] 
        bool FInState(int uStateID,/* PVOID */ IntPtr pvoid);
 
        /// 
        /// 
        ///      Called periodically by a component during IMsoComponent::FDoIdle.
        ///      Return TRUE if component can continue its idle time processing, 
        ///      FALSE if not (in which case component returns from FDoIdle.)
        ///  
        [PreserveSig] 
        bool FContinueIdle();
 
        /// 
        /// 
        ///      Component identified by dwComponentID (cookie returned from
        ///      FRegisterComponent) wishes to push a message loop for reason uReason. 
        ///      uReason is one the values from the msoloop enumeration (above).
        ///      pvLoopData is data private to the component. 
        ///      The component manager should push its message loop, 
        ///      calling IMsoComponent::FContinueMessageLoop(uReason, pvLoopData)
        ///      during each loop iteration (see IMsoComponent::FContinueMessageLoop 
        ///      comments).  When IMsoComponent::FContinueMessageLoop returns FALSE, the
        ///      component manager terminates the loop.
        ///      Returns TRUE if component manager terminates loop because component
        ///      told it to (by returning FALSE from IMsoComponent::FContinueMessageLoop), 
        ///      FALSE if it had to terminate the loop for some other reason.  In the
        ///      latter case, component should perform any necessary action (such as 
        ///      cleanup). 
        /// 
        [PreserveSig] 
        bool FPushMessageLoop(int dwComponentID,int uReason,/* PVOID */ int pvLoopData);

        /// 
        ///  
        ///      Cause the component manager to create a "sub" component manager, which
        ///      will be one of its children in the hierarchical tree of component 
        ///      managers used to maintiain state contexts (see "Comments on State 
        ///      Contexts", above).
        ///      piunkOuter is the controlling unknown (can be NULL), riid is the 
        ///      desired IID, and *ppvObj returns       the created sub component manager.
        ///      piunkServProv (can be NULL) is a ptr to an object supporting
        ///      IServiceProvider interface to which the created sub component manager
        ///      will delegate its IMsoComponentManager::QueryService calls. 
        ///      (see objext.h or docobj.h for definition of IServiceProvider).
        ///      Returns TRUE if successful. 
        ///  
        [PreserveSig]
        bool FCreateSubComponentManager( 
            [MarshalAs(UnmanagedType.Interface)]
            object punkOuter,
            [MarshalAs(UnmanagedType.Interface)]
            object punkServProv, 
            ref Guid riid,
            out IntPtr ppvObj); 
 
        /// 
        ///  
        ///      Return in *ppicm an AddRef'ed ptr to this component manager's parent
        ///      in the hierarchical tree of component managers used to maintain state
        ///      contexts (see "Comments on State       Contexts", above).
        ///      Returns TRUE if the parent is returned, FALSE if no parent exists or 
        ///      some error occurred.
        ///  
        [PreserveSig] 
        bool FGetParentComponentManager(
            out IMsoComponentManager ppicm); 

        /// 
        /// 
        ///      Return in *ppic an AddRef'ed ptr to the current active or tracking 
        ///      component (as indicated by dwgac (a msogacXXX value)), and
        ///      its registration information in *pcrinfo.  ppic and/or pcrinfo can be 
        ///      NULL if caller is not interested these values.  If pcrinfo is not NULL, 
        ///      caller should set pcrinfo->cbSize before calling this method.
        ///      Returns TRUE if the component indicated by dwgac exists, FALSE if no 
        ///      such component exists or some error occurred.
        ///      dwReserved is reserved for future use and should be zero.
        /// 
        [PreserveSig] 
        bool FGetActiveComponent(
        int dwgac, 
            [Out, MarshalAs(UnmanagedType.LPArray)] 
            IMsoComponent[] ppic,
            NativeMethods.MSOCRINFOSTRUCT pcrinfo, 
            int dwReserved);
        }

        [ComImport(), 
        Guid("000C0600-0000-0000-C000-000000000046"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ] 
        public interface IMsoComponent {
 
            /// 
            /// 
            ///      Standard FDebugMessage method.
            ///      Since IMsoComponentManager is a reference counted interface, 
            ///      MsoDWGetChkMemCounter should be used when processing the
            ///      msodmWriteBe message. 
            ///  
            [PreserveSig]
            bool FDebugMessage( 
                IntPtr hInst,
                int msg,
                IntPtr wParam,
                IntPtr lParam); 

            ///  
            ///  
            ///      Give component a chance to process the message pMsg before it is
            ///      translated and dispatched. Component can do TranslateAccelerator 
            ///      do IsDialogMessage, modify pMsg, or take some other action.
            ///      Return TRUE if the message is consumed, FALSE otherwise.
            /// 
            [PreserveSig] 
            bool FPreTranslateMessage(ref NativeMethods.MSG msg);
 
            ///  
            /// 
            ///      Notify component when app enters or exits (as indicated by fEnter) 
            ///      the state identified by uStateID (a value from olecstate enumeration).
            ///      Component should take action depending on value of uStateID
            ///       (see olecstate comments, above).
            /// 
            ///      Note: If n calls are made with TRUE fEnter, component should consider
            ///      the state to be in effect until n calls are made with FALSE fEnter. 
            /// 
            ///     Note: Components should be aware that it is possible for this method to
            ///     be called with FALSE fEnter more    times than it was called with TRUE 
            ///     fEnter (so, for example, if component is maintaining a state counter
            ///     (incremented when this method is called with TRUE fEnter, decremented
            ///     when called with FALSE fEnter), the counter should not be decremented
            ///     for FALSE fEnter if it is already at zero.) 
            /// 
            [PreserveSig] 
            void OnEnterState( 
                int uStateID,
                bool fEnter); 

            /// 
            /// 
            ///      Notify component when the host application gains or loses activation. 
            ///     If fActive is TRUE, the host app is being activated and dwOtherThreadID
            ///      is the ID of the thread owning the window being deactivated. 
            ///      If fActive is FALSE, the host app is being deactivated and 
            ///      dwOtherThreadID is the ID of the thread owning the window being
            ///      activated. 
            ///      Note: this method is not called when both the window being activated
            ///      and the one being deactivated belong to the host app.
            /// 
            [PreserveSig] 
            void OnAppActivate(
                bool fActive, 
                int dwOtherThreadID); 

            ///  
            /// 
            ///      Notify the active component that it has lost its active status because
            ///      the host or another component has become active.
            ///  
            [PreserveSig]
            void OnLoseActivation(); 
 
            /// 
            ///  
            ///      Notify component when a new object is being activated.
            ///      If pic is non-NULL, then it is the component that is being activated.
            ///      In this case, fSameComponent is TRUE if pic is the same component as
            ///      the callee of this method, and pcrinfo is the reg info of pic. 
            ///      If pic is NULL and fHostIsActivating is TRUE, then the host is the
            ///      object being activated, and pchostinfo is its host info. 
            ///      If pic is NULL and fHostIsActivating is FALSE, then there is no current 
            ///      active object.
            /// 
            ///      If pic is being activated and pcrinfo->grf has the
            ///      olecrfExclusiveBorderSpace bit set, component should hide its border
            ///      space tools (toolbars, status bars, etc.);
            ///      component should also do this if host is activating and 
            ///      pchostinfo->grfchostf has the olechostfExclusiveBorderSpace bit set.
            ///      In either of these cases, component should unhide its border space 
            ///      tools the next time it is activated. 
            ///
            ///      if pic is being activated and pcrinfo->grf has the 
            ///      olecrfExclusiveActivation bit is set, then pic is being activated in
            ///      "ExclusiveActive" mode.
            ///      Component should retrieve the top frame window that is hosting pic
            ///      (via pic->HwndGetWindow(olecWindowFrameToplevel, 0)). 
            ///      If this window is different from component's own top frame window,
            ///         component should disable its windows and do other things it would do 
            ///         when receiving OnEnterState(olecstateModal, TRUE) notification. 
            ///      Otherwise, if component is top-level,
            ///         it should refuse to have its window activated by appropriately 
            ///         processing WM_MOUSEACTIVATE (but see WM_MOUSEACTIVATE NOTE, above).
            ///      Component should remain in one of these states until the
            ///      ExclusiveActive mode ends, indicated by a future call to
            ///      OnActivationChange with ExclusiveActivation bit not set or with NULL 
            ///      pcrinfo.
            ///  
            [PreserveSig] 
            void OnActivationChange(
                IMsoComponent component, 
                bool fSameComponent,
                int pcrinfo,
                bool fHostIsActivating,
                int pchostinfo, 
                int dwReserved);
 
            ///  
            /// 
            ///      Give component a chance to do idle time tasks.  grfidlef is a group of 
            ///      bit flags taken from the enumeration of oleidlef values (above),
            ///      indicating the type of idle tasks to perform.
            ///      Component may periodically call IOleComponentManager::FContinueIdle;
            ///      if this method returns FALSE, component should terminate its idle 
            ///      time processing and return.
            ///      Return TRUE if more time is needed to perform the idle time tasks, 
            ///      FALSE otherwise. 
            ///      Note: If a component reaches a point where it has no idle tasks
            ///      and does not need FDoIdle calls, it should remove its idle task 
            ///      registration via IOleComponentManager::FUpdateComponentRegistration.
            ///      Note: If this method is called on while component is performing a
            ///      tracking operation, component should only perform idle time tasks that
            ///      it deems are appropriate to perform during tracking. 
            /// 
            [PreserveSig] 
            bool FDoIdle( 
                int grfidlef);
 

            /// 
            /// 
            ///      Called during each iteration of a message loop that the component 
            ///      pushed. uReason and pvLoopData are the reason and the component private
            ///      data that were passed to IOleComponentManager::FPushMessageLoop. 
            ///      This method is called after peeking the next message in the queue 
            ///      (via PeekMessage) but before the message is removed from the queue.
            ///      The peeked message is passed in the pMsgPeeked param (NULL if no 
            ///      message is in the queue).  This method may be additionally called when
            ///      the next message has already been removed from the queue, in which case
            ///      pMsgPeeked is passed as NULL.
            ///      Return TRUE if the message loop should continue, FALSE otherwise. 
            ///      If FALSE is returned, the component manager terminates the loop without
            ///      removing pMsgPeeked from the queue. 
            ///  
            [PreserveSig]
            bool FContinueMessageLoop( 
                int uReason,
                int pvLoopData,
                [MarshalAs(UnmanagedType.LPArray)] NativeMethods.MSG[] pMsgPeeked);
 

            ///  
            ///  
            ///      Called when component manager wishes to know if the component is in a
            ///      state in which it can terminate.  If fPromptUser is FALSE, component 
            ///      should simply return TRUE if it can terminate, FALSE otherwise.
            ///      If fPromptUser is TRUE, component should return TRUE if it can
            ///      terminate without prompting the user; otherwise it should prompt the
            ///      user, either 1.) asking user if it can terminate and returning TRUE 
            ///      or FALSE appropriately, or 2.) giving an indication as to why it
            ///      cannot terminate and returning FALSE. 
            ///  
            [PreserveSig]
            bool FQueryTerminate( 
                bool fPromptUser);

            /// 
            ///  
            ///      Called when component manager wishes to terminate the component's
            ///      registration.  Component should revoke its registration with component 
            ///      manager, release references to component manager and perform any 
            ///      necessary cleanup.
            ///  
            [PreserveSig]
            void Terminate();

            ///  
            /// 
            ///      Called to retrieve a window associated with the component, as specified 
            ///      by dwWhich, a olecWindowXXX value (see olecWindow, above). 
            ///      dwReserved is reserved for future use and should be zero.
            ///      Component should return the desired window or NULL if no such window 
            ///      exists.
            /// 

            [PreserveSig] 
            IntPtr HwndGetWindow(
                int dwWhich, 
                int dwReserved); 
        }
 
        [ComVisible(true), Guid("8CC497C0-A1DF-11ce-8098-00AA0047BE5D"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual),
        SuppressUnmanagedCodeSecurity()]
        public interface ITextDocument { 
            string GetName();
            object GetSelection(); 
            int GetStoryCount(); 
            object GetStoryRanges();
            int GetSaved(); 
            void SetSaved(int value);
            object GetDefaultTabStop();
            void SetDefaultTabStop(object value);
            void New(); 
            void Open(object pVar, int flags, int codePage);
            void Save(object pVar, int flags, int codePage); 
            int Freeze(); 
            int Unfreeze();
            void BeginEditCollection(); 
            void EndEditCollection();
            int Undo(int count);
            int Redo(int count);
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange Range(int cp1, int cp2); 
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange RangeFromPoint(int x, int y);
        }; 
 
        [ComVisible(true), Guid("8CC497C2-A1DF-11ce-8098-00AA0047BE5D"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual), 
        SuppressUnmanagedCodeSecurity()]
        public interface ITextRange {
            string GetText();
            void SetText(string text); 
            object GetChar();
            void SetChar(object ch); 
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange GetDuplicate(); 
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange GetFormattedText();
            void SetFormattedText([In, MarshalAs(UnmanagedType.Interface)] ITextRange range); 
            int GetStart();
            void SetStart(int cpFirst);
            int GetEnd();
            void SetEnd(int cpLim); 
            object GetFont();
            void SetFont(object font); 
            object GetPara(); 
            void SetPara(object para);
            int GetStoryLength(); 
            int GetStoryType();
            void Collapse(int start);
            int Expand(int unit);
            int GetIndex(int unit); 
            void SetIndex(int unit, int index, int extend);
            void SetRange(int cpActive, int cpOther); 
            int InRange([In, MarshalAs(UnmanagedType.Interface)] ITextRange range); 
            int InStory([In, MarshalAs(UnmanagedType.Interface)] ITextRange range);
            int IsEqual([In, MarshalAs(UnmanagedType.Interface)] ITextRange range); 
            void Select();
            int StartOf(int unit, int extend);
            int EndOf(int unit, int extend);
            int Move(int unit, int count); 
            int MoveStart(int unit, int count);
            int MoveEnd(int unit, int count); 
            int MoveWhile(object cset, int count); 
            int MoveStartWhile(object cset, int count);
            int MoveEndWhile(object cset, int count); 
            int MoveUntil(object cset, int count);
            int MoveStartUntil(object cset, int count);
            int MoveEndUntil(object cset, int count);
            int FindText(string text, int cch, int flags); 
            int FindTextStart(string text, int cch, int flags);
            int FindTextEnd(string text, int cch, int flags); 
            int Delete(int unit, int count); 
            void Cut([Out] out object pVar);
            void Copy([Out] out object pVar); 
            void Paste(object pVar, int format);
            int CanPaste(object pVar, int format);
            int CanEdit();
            void ChangeCase(int type); 
            void GetPoint(int type, [Out] out int x, [Out] out int y);
            void SetPoint(int x, int y, int type, int extend); 
            void ScrollIntoView(int value); 
            object GetEmbeddedObject();
        }; 

        [ComImport(), Guid("00020D03-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IRichEditOleCallback {
            [PreserveSig] 
            int GetNewStorage(out IStorage ret);
 
            [PreserveSig] 
            int GetInPlaceContext(IntPtr lplpFrame, IntPtr lplpDoc, IntPtr lpFrameInfo);
 
            [PreserveSig]
            int ShowContainerUI(int fShow);

            [PreserveSig] 
            int QueryInsertObject(ref Guid lpclsid, IntPtr lpstg, int cp);
 
            [PreserveSig] 
            int DeleteObject(IntPtr lpoleobj);
 
            [PreserveSig]
            int QueryAcceptData(IComDataObject lpdataobj, /* CLIPFORMAT* */ IntPtr lpcfFormat, int reco, int fReally, IntPtr hMetaPict);

            [PreserveSig] 
            int ContextSensitiveHelp(int fEnterMode);
 
            [PreserveSig] 
            int GetClipboardData(NativeMethods.CHARRANGE lpchrg, int reco, IntPtr lplpdataobj);
 
            [PreserveSig]
            int GetDragDropEffect(bool fDrag, int grfKeyState, ref int pdwEffect);

            [PreserveSig] 
            int GetContextMenu(short seltype, IntPtr lpoleobj, NativeMethods.CHARRANGE lpchrg, out IntPtr hmenu);
        } 
 
        [ComImport(), Guid("00000115-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceUIWindow { 
             IntPtr GetWindow();

             [PreserveSig]
             int ContextSensitiveHelp( 

                     int fEnterMode); 
 

             [PreserveSig] 
             int GetBorder(
                    [Out]
                      NativeMethods.COMRECT lprectBorder);
 

             [PreserveSig] 
             int RequestBorderSpace( 
                    [In]
                      NativeMethods.COMRECT pborderwidths); 


             [PreserveSig]
             int SetBorderSpace( 
                    [In]
                      NativeMethods.COMRECT pborderwidths); 
 

             void SetActiveObject( 
                    [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IOleInPlaceActiveObject pActiveObject,
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string pszObjName); 

 
        } 
        [SuppressUnmanagedCodeSecurity, ComImport(),
        Guid("00000117-0000-0000-C000-000000000046"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceActiveObject {

             [PreserveSig] 
             int GetWindow( out IntPtr hwnd );
 
 
             void ContextSensitiveHelp(
 
                     int fEnterMode);


             [PreserveSig] 
             int TranslateAccelerator(
                    [In] 
                      ref NativeMethods.MSG lpmsg); 

 
             void OnFrameWindowActivate(

                     bool fActivate);
 

             void OnDocWindowActivate( 
 
                     int fActivate);
 

             void ResizeBorder(
                    [In]
                      NativeMethods.COMRECT prcBorder, 
                    [In]
                      UnsafeNativeMethods.IOleInPlaceUIWindow pUIWindow, 
 
                     bool fFrameWindow);
 

             void EnableModeless(

                     int fEnable); 

 
        } 
        [ComImport(), Guid("00000114-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleWindow { 

             [PreserveSig]
             int GetWindow( [Out]out IntPtr hwnd );
 

             void ContextSensitiveHelp( 
 
                     int fEnterMode);
        } 
        [SuppressUnmanagedCodeSecurity, ComImport(),
        Guid("00000113-0000-0000-C000-000000000046"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceObject { 

             [PreserveSig] 
             int GetWindow( [Out]out IntPtr hwnd ); 

 
             void ContextSensitiveHelp(

                     int fEnterMode);
 

             void InPlaceDeactivate(); 
 

             [PreserveSig] 
             int UIDeactivate();


             void SetObjectRects( 
                    [In]
                      NativeMethods.COMRECT lprcPosRect, 
                    [In] 
                      NativeMethods.COMRECT lprcClipRect);
 

             void ReactivateAndUndo();

 
        }
        [SuppressUnmanagedCodeSecurity, ComImport(), 
        Guid("00000112-0000-0000-C000-000000000046"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleObject { 

             [PreserveSig]
             int SetClientSite(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                      UnsafeNativeMethods.IOleClientSite pClientSite);
 
 
             UnsafeNativeMethods.IOleClientSite GetClientSite();
 
             [PreserveSig]
             int SetHostNames(
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string szContainerApp, 
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string szContainerObj); 
 
             [PreserveSig]
             int Close( 

                     int dwSaveOption);

             [PreserveSig] 
             int SetMoniker(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker, 
                    [In, MarshalAs(UnmanagedType.Interface)]
                     object pmk); 

              [PreserveSig]
              int GetMoniker(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwAssign,
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker, 
                    [Out, MarshalAs(UnmanagedType.Interface)]
                     out object moniker); 

             [PreserveSig]
             int InitFromData(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                     IComDataObject pDataObject,
 
                     int fCreation, 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwReserved); 

             [PreserveSig]
             int GetClipboardData(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwReserved,
                     out IComDataObject data); 
 
             [PreserveSig]
             int DoVerb( 

                     int iVerb,
                    [In]
                     IntPtr lpmsg, 
                    [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IOleClientSite pActiveSite, 
 
                     int lindex,
 
                     IntPtr hwndParent,
                    [In]
                     NativeMethods.COMRECT lprcPosRect);
 
             [PreserveSig]
             int EnumVerbs(out UnsafeNativeMethods.IEnumOLEVERB e); 
 
             [PreserveSig]
             int OleUpdate(); 

             [PreserveSig]
             int IsUpToDate();
 
             [PreserveSig]
             int GetUserClassID( 
                    [In, Out] 
                      ref Guid pClsid);
 
             [PreserveSig]
             int GetUserType(
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwFormOfType, 
                    [Out, MarshalAs(UnmanagedType.LPWStr)]
                     out string userType); 
 
             [PreserveSig]
             int SetExtent( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwDrawAspect,
                    [In]
                     NativeMethods.tagSIZEL pSizel); 

             [PreserveSig] 
             int GetExtent( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwDrawAspect, 
                    [Out]
                     NativeMethods.tagSIZEL pSizel);

             [PreserveSig] 
             int Advise(
                     IAdviseSink pAdvSink, 
                     out int cookie); 

             [PreserveSig] 
             int Unadvise(
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwConnection);
 
              [PreserveSig]
              int EnumAdvise(out IEnumSTATDATA e); 
 
             [PreserveSig]
             int GetMiscStatus( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwAspect,
                     out int misc);
 
             [PreserveSig]
             int SetColorScheme( 
                    [In] 
                      NativeMethods.tagLOGPALETTE pLogpal);
        } 

        [ComImport(), Guid("1C2056CC-5EF4-101B-8BC8-00AA003E3B29"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceObjectWindowless {
 
             [PreserveSig]
             int SetClientSite( 
                    [In, MarshalAs(UnmanagedType.Interface)] 
                      UnsafeNativeMethods.IOleClientSite pClientSite);
 
             [PreserveSig]
             int GetClientSite(out UnsafeNativeMethods.IOleClientSite site);

             [PreserveSig] 
             int SetHostNames(
                    [In, MarshalAs(UnmanagedType.LPWStr)] 
                      string szContainerApp, 
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string szContainerObj); 

             [PreserveSig]
             int Close(
 
                     int dwSaveOption);
 
             [PreserveSig] 
             int SetMoniker(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker,
                    [In, MarshalAs(UnmanagedType.Interface)]
                     object pmk);
 
              [PreserveSig]
              int GetMoniker( 
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwAssign,
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker,
                    [Out, MarshalAs(UnmanagedType.Interface)]
                     out object moniker);
 
             [PreserveSig]
             int InitFromData( 
                    [In, MarshalAs(UnmanagedType.Interface)] 
                     IComDataObject pDataObject,
 
                     int fCreation,
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwReserved);
 
             [PreserveSig]
             int GetClipboardData( 
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwReserved,
                     out IComDataObject data); 

             [PreserveSig]
             int DoVerb(
 
                     int iVerb,
                    [In] 
                     IntPtr lpmsg, 
                    [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IOleClientSite pActiveSite, 

                     int lindex,

                     IntPtr hwndParent, 
                    [In]
                     NativeMethods.COMRECT lprcPosRect); 
 
             [PreserveSig]
             int EnumVerbs(out UnsafeNativeMethods.IEnumOLEVERB e); 

             [PreserveSig]
             int OleUpdate();
 
             [PreserveSig]
             int IsUpToDate(); 
 
             [PreserveSig]
             int GetUserClassID( 
                    [In, Out]
                      ref Guid pClsid);

             [PreserveSig] 
             int GetUserType(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwFormOfType, 
                    [Out, MarshalAs(UnmanagedType.LPWStr)]
                     out string userType); 

             [PreserveSig]
             int SetExtent(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwDrawAspect,
                    [In] 
                     NativeMethods.tagSIZEL pSizel); 

             [PreserveSig] 
             int GetExtent(
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwDrawAspect,
                    [Out] 
                     NativeMethods.tagSIZEL pSizel);
 
             [PreserveSig] 
             int Advise(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                     IAdviseSink pAdvSink,
                     out int cookie);

             [PreserveSig] 
             int Unadvise(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwConnection); 

              [PreserveSig] 
                  int EnumAdvise(out IEnumSTATDATA e);

             [PreserveSig]
             int GetMiscStatus( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwAspect, 
                     out int misc); 

             [PreserveSig] 
             int SetColorScheme(
                    [In]
                      NativeMethods.tagLOGPALETTE pLogpal);
 
             [PreserveSig]
             int OnWindowMessage( 
                [In, MarshalAs(UnmanagedType.U4)]  int msg, 
                [In, MarshalAs(UnmanagedType.U4)]  int wParam,
                [In, MarshalAs(UnmanagedType.U4)]  int lParam, 
                [Out, MarshalAs(UnmanagedType.U4)] int plResult);

             [PreserveSig]
             int GetDropTarget( 
                [Out, MarshalAs(UnmanagedType.Interface)] object ppDropTarget);
 
        }; 

 
        [SuppressUnmanagedCodeSecurity, ComImport(),
        Guid("B196B288-BAB4-101A-B69C-00AA00341D07"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleControl { 
             [PreserveSig]
             int GetControlInfo( 
                    [Out] 
                      NativeMethods.tagCONTROLINFO pCI);
 
             [PreserveSig]
             int OnMnemonic(
                    [In]
                      ref NativeMethods.MSG pMsg); 

             [PreserveSig] 
             int OnAmbientPropertyChange( 

                     int dispID); 

             [PreserveSig]
             int FreezeEvents(
 
                     int bFreeze);
 
        } 
        [ComImport(), Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleServiceProvider { 
             [PreserveSig]
             int QueryService(
                  [In]
                      ref Guid guidService, 
                  [In]
                  ref Guid riid, 
                  out IntPtr ppvObject); 
        }
        [ComImport(), Guid("0000010d-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IViewObject {
            [PreserveSig]
            int Draw(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,
 
                int lindex, 

                IntPtr pvAspect, 
                [In]
                NativeMethods.tagDVTARGETDEVICE ptd,

                IntPtr hdcTargetDev, 

                IntPtr hdcDraw, 
                [In] 
                NativeMethods.COMRECT lprcBounds,
                [In] 
                NativeMethods.COMRECT lprcWBounds,

                IntPtr pfnContinue,
                [In] 
                int dwContinue);
 
 
            [PreserveSig]
            int GetColorSet( 
                [In, MarshalAs(UnmanagedType.U4)]
                int dwDrawAspect,

                int lindex, 

                IntPtr pvAspect, 
                [In] 
                NativeMethods.tagDVTARGETDEVICE ptd,
 
                IntPtr hicTargetDev,
                [Out]
                NativeMethods.tagLOGPALETTE ppColorSet);
 
            [PreserveSig]
            int Freeze( 
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,
 
                int lindex,

                IntPtr pvAspect,
                [Out] 
                IntPtr pdwFreeze);
 
            [PreserveSig] 
            int Unfreeze(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwFreeze);


            void SetAdvise( 
                [In, MarshalAs(UnmanagedType.U4)]
                int aspects, 
                [In, MarshalAs(UnmanagedType.U4)] 
                int advf,
                [In, MarshalAs(UnmanagedType.Interface)] 
                IAdviseSink pAdvSink);


            void GetAdvise( 
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] paspects, 
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] advf,
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)]
                IAdviseSink[] pAdvSink); 
        }
        [ComImport(), Guid("00000127-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IViewObject2 /* : IViewObject */ { 
            void Draw(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,

                int lindex,
 
                IntPtr pvAspect,
                [In] 
                NativeMethods.tagDVTARGETDEVICE ptd, 

                IntPtr hdcTargetDev, 

                IntPtr hdcDraw,
                [In]
                NativeMethods.COMRECT lprcBounds, 
                [In]
                NativeMethods.COMRECT lprcWBounds, 
 
                IntPtr pfnContinue,
                [In] 
                int dwContinue);


            [PreserveSig] 
            int GetColorSet(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect, 

                int lindex, 

                IntPtr pvAspect,
                [In]
                NativeMethods.tagDVTARGETDEVICE ptd, 

                IntPtr hicTargetDev, 
                [Out] 
                NativeMethods.tagLOGPALETTE ppColorSet);
 

            [PreserveSig]
            int Freeze(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,
 
                int lindex, 

                IntPtr pvAspect, 
                [Out]
                IntPtr pdwFreeze);

 
            [PreserveSig]
            int Unfreeze( 
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwFreeze);
 

            void SetAdvise(
                [In, MarshalAs(UnmanagedType.U4)]
                int aspects, 
                [In, MarshalAs(UnmanagedType.U4)]
                int advf, 
                [In, MarshalAs(UnmanagedType.Interface)] 
                IAdviseSink pAdvSink);
 

            void GetAdvise(
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] paspects,
                // These can be NULL if caller doesn't want them 
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] advf,
                // These can be NULL if caller doesn't want them 
                [In, Out, MarshalAs(UnmanagedType.LPArray)]
                IAdviseSink[] pAdvSink);

 
            void GetExtent(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect, 

                int lindex, 
                [In]
                NativeMethods.tagDVTARGETDEVICE ptd,
                [Out]
                NativeMethods.tagSIZEL lpsizel); 
        }
 
        [ComImport(), Guid("0000010C-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IPersist {
 
            [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
            void GetClassID(
                           [Out]
                           out Guid pClassID); 
        }
 
        [ComImport(), Guid("37D84F60-42CB-11CE-8135-00AA004BB851"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IPersistPropertyBag {
            void GetClassID( 
                [Out]
                out Guid pClassID);

 
            void InitNew();
 
 
            void Load(
                [In, MarshalAs(UnmanagedType.Interface)] 
                IPropertyBag pPropBag,
                [In, MarshalAs(UnmanagedType.Interface)]
                IErrorLog pErrorLog);
 

            void Save( 
                [In, MarshalAs(UnmanagedType.Interface)] 
                IPropertyBag pPropBag,
                [In, MarshalAs(UnmanagedType.Bool)] 
                bool fClearDirty,
                [In, MarshalAs(UnmanagedType.Bool)]
                bool fSaveAllProperties);
        } 
        [
            ComImport(), 
        Guid("CF51ED10-62FE-11CF-BF86-00A0C9034836"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
        ] 
        public interface IQuickActivate {
            void QuickActivate(
                              [In]
                              UnsafeNativeMethods.tagQACONTAINER pQaContainer, 
                              [Out]
                              UnsafeNativeMethods.tagQACONTROL pQaControl); 
 

            void SetContentExtent( 
                                 [In]
                                 NativeMethods.tagSIZEL pSizel);

 
            void GetContentExtent(
                                 [Out] 
                                 NativeMethods.tagSIZEL pSizel); 

        } 

        [ComImport(), Guid("000C060B-0000-0000-C000-000000000046"),
            SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
        public class SMsoComponentManager 
        {
        } 
 
        [ComImport(), Guid("55272A00-42CB-11CE-8135-00AA004BB851"),
        InterfaceType(ComInterfaceType.InterfaceIsIUnknown) 
        ]
        public interface IPropertyBag {
            [PreserveSig]
            int Read( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszPropName, 
                [In, Out] 
                ref object pVar,
                [In] 
                IErrorLog pErrorLog);

            [PreserveSig]
            int Write( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszPropName, 
                [In] 
                ref object pVar);
        } 

    [ComImport(), Guid("3127CA40-446E-11CE-8135-00AA004BB851"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
            public interface IErrorLog {
                     void AddError( 
                            [In, MarshalAs(UnmanagedType.LPWStr)]
                             string pszPropName_p0, 
                            [In, MarshalAs(UnmanagedType.Struct)] 
                              NativeMethods.tagEXCEPINFO pExcepInfo_p1);
 
            }

    [ComImport(), Guid("00000109-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPersistStream { 

         void GetClassID([Out] out Guid pClassId); 
 
         [PreserveSig]
         int IsDirty(); 


         void Load(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm);
 
 
         void Save(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm,
                [In, MarshalAs(UnmanagedType.Bool)]
                 bool fClearDirty);
 

         long GetSizeMax(); 
 

    } 

    [SuppressUnmanagedCodeSecurity, ComImport(),
    Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IPersistStreamInit {
         void GetClassID( 
                [Out] 
                  out Guid pClassID);
 

         [PreserveSig]
         int IsDirty();
 

         void Load( 
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm);
 

             void Save(
                    [In, MarshalAs(UnmanagedType.Interface)]
                      IStream pstm, 
                    [In, MarshalAs(UnmanagedType.Bool)]
                     bool fClearDirty); 
 

         void GetSizeMax( 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 long pcbSize);

 
         void InitNew();
 
 
    }
 
    [SuppressUnmanagedCodeSecurity, ComImport(),
    Guid("B196B286-BAB4-101A-B69C-00AA00341D07"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IConnectionPoint { 

        [PreserveSig] 
        int GetConnectionInterface(out Guid iid); 

 
        [PreserveSig]
        int GetConnectionPointContainer(
            [MarshalAs(UnmanagedType.Interface)]
            ref IConnectionPointContainer pContainer); 

 
         [PreserveSig] 
         int Advise(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  object pUnkSink,
              ref int cookie);

 
        [PreserveSig]
        int Unadvise( 
 
                 int cookie);
 
        [PreserveSig]
        int EnumConnections(out object pEnum);

    } 

    [ComImport(), Guid("0000010A-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IPersistStorage { 
         void GetClassID(
                [Out] 
                  out Guid pClassID);

         [PreserveSig]
         int IsDirty(); 

         void InitNew(IStorage pstg); 
 
         [PreserveSig]
         int Load(IStorage pstg); 

         void Save(IStorage pStgSave, bool fSameAsLoad);

         void SaveCompleted(IStorage pStgNew); 

         void HandsOffStorage(); 
    } 

    [ComImport(), Guid("00020404-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IEnumVariant {
         [PreserveSig]
         int Next(
                [In, MarshalAs(UnmanagedType.U4)] 
                 int celt,
                [In, Out] 
                 IntPtr rgvar, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] pceltFetched); 

         void Skip(
                [In, MarshalAs(UnmanagedType.U4)]
                 int celt); 

         void Reset(); 
 
         void Clone(
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.IEnumVariant[] ppenum);
    }

    [ComImport(), Guid("00000104-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IEnumOLEVERB {
 
 
         [PreserveSig]
         int Next( 
                [MarshalAs(UnmanagedType.U4)]
                int celt,
                [Out]
                NativeMethods.tagOLEVERB rgelt, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                int[] pceltFetched); 
 
         [PreserveSig]
         int Skip( 
                [In, MarshalAs(UnmanagedType.U4)]
                 int celt);

 
         void Reset();
 
 
         void Clone(
            out IEnumOLEVERB ppenum); 
    }

    // INTERFACE: IEnumACString
 
    // This interface was implemented to return autocomplete strings
    // into the caller's buffer (to reduce the number of memory allocations 
    // A sort index is also returned to control the order of items displayed 
    // by autocomplete.  The sort index should be set to zero if unused
    // The NextItem method increments the current index by one (similar to Next 
    // when one item is requested

    //public interface IEnumString
    //Do not declare IEnumString here -- use IEnumString from interopservices. 
    // even if it looks like it works, if you declaring the marshalling incorrectly, it will barf on appverifier.
 
 
    //-------------------------------------------------------------------------
    // IAutoComplete interface 
    // [Member functions]
    // IAutoComplete::Init(hwndEdit, punkACL, pwszRegKeyPath, pwszQuickComplete)
    // This function initializes an AutoComplete object, telling it
    // what control to subclass, and what list of strings to process. 
    // IAutoComplete::Enable(fEnable)
    // This function enables or disables the AutoComplete functionality. 
    //-------------------------------------------------------------------------- 

    [SuppressUnmanagedCodeSecurity, ComImport(), Guid("00bb2762-6a77-11d0-a535-00c04fd7d062"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IAutoComplete
    {

        int Init( 
                [In] HandleRef hwndEdit,          // hwnd of editbox or editbox deriviative.
                [In] System.Runtime.InteropServices.ComTypes.IEnumString punkACL,          // Pointer to object containing string to complete from. (IEnumString *) 
                [In] string pwszRegKeyPath,       // 
                [In] string pwszQuickComplete
                ); 
        void Enable([In] bool fEnable);            // Is it enabled?
    }

 
    [SuppressUnmanagedCodeSecurity, ComImport(), Guid("EAC04BC0-3791-11d2-BB95-0060977B464C"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
 
    public interface IAutoComplete2 
    {
        int Init( 
                [In] HandleRef hwndEdit,          // hwnd of editbox or editbox deriviative.
                [In] System.Runtime.InteropServices.ComTypes.IEnumString punkACL,          // Pointer to object containing string to complete from. (IEnumString *)
                [In] string pwszRegKeyPath,       //
                [In] string pwszQuickComplete 
                );
        void  Enable([In] bool fEnable);            // Is it enabled? 
 
        int  SetOptions([In] int dwFlag);
        void GetOptions([Out] IntPtr pdwFlag); 
    }

    [SuppressUnmanagedCodeSecurity, ComImport(), Guid("0000000C-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IStream { 

         int Read( 
 
                 IntPtr buf,
 
                 int len);


         int Write( 

                 IntPtr buf, 
 
                 int len);
 
        [return: MarshalAs(UnmanagedType.I8)]
         long Seek(
                [In, MarshalAs(UnmanagedType.I8)]
                 long dlibMove, 

                 int dwOrigin); 
 

         void SetSize( 
                [In, MarshalAs(UnmanagedType.I8)]
                 long libNewSize);

        [return: MarshalAs(UnmanagedType.I8)] 
         long CopyTo(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm, 
                [In, MarshalAs(UnmanagedType.I8)]
                 long cb, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 long[] pcbRead);

 
         void Commit(
 
                 int grfCommitFlags); 

 
         void Revert();


         void LockRegion( 
                [In, MarshalAs(UnmanagedType.I8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.I8)] 
                 long cb,
 
                 int dwLockType);


         void UnlockRegion( 
                [In, MarshalAs(UnmanagedType.I8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.I8)] 
                 long cb,
 
                 int dwLockType);


         void Stat( 
                 [Out]
                 NativeMethods.STATSTG pStatstg, 
                 int grfStatFlag); 

        [return: MarshalAs(UnmanagedType.Interface)] 
          UnsafeNativeMethods.IStream Clone();
    }

    public abstract class CharBuffer 
    {
 
        public static CharBuffer CreateBuffer(int size) 
        {
            if (Marshal.SystemDefaultCharSize == 1) 
            {
                return new AnsiCharBuffer(size);
            }
            return new UnicodeCharBuffer(size); 
        }
 
        public abstract IntPtr AllocCoTaskMem(); 
        public abstract string GetString();
        public abstract void PutCoTaskMem(IntPtr ptr); 
        public abstract void PutString(string s);
    }

    public class AnsiCharBuffer : CharBuffer 
    {
 
        internal byte[] buffer; 
        internal int offset;
 
        public AnsiCharBuffer(int size)
        {
            buffer = new byte[size];
        } 

        public override IntPtr AllocCoTaskMem() 
        { 
            IntPtr result = Marshal.AllocCoTaskMem(buffer.Length);
            Marshal.Copy(buffer, 0, result, buffer.Length); 
            return result;
        }

        public override string GetString() 
        {
            int i = offset; 
            while (i < buffer.Length && buffer[i] != 0) 
                i++;
            string result = Encoding.Default.GetString(buffer, offset, i - offset); 
            if (i < buffer.Length)
                i++;
            offset = i;
            return result; 
        }
 
        public override void PutCoTaskMem(IntPtr ptr) 
        {
            Marshal.Copy(ptr, buffer, 0, buffer.Length); 
            offset = 0;
        }

        public override void PutString(string s) 
        {
            byte[] bytes = Encoding.Default.GetBytes(s); 
            int count = Math.Min(bytes.Length, buffer.Length - offset); 
            Array.Copy(bytes, 0, buffer, offset, count);
            offset += count; 
            if (offset < buffer.Length) buffer[offset++] = 0;
        }
    }
 
    public class UnicodeCharBuffer : CharBuffer
    { 
 
        internal char[] buffer;
        internal int offset; 

        public UnicodeCharBuffer(int size)
        {
            buffer = new char[size]; 
        }
 
        public override IntPtr AllocCoTaskMem() 
        {
            IntPtr result = Marshal.AllocCoTaskMem(buffer.Length * 2); 
            Marshal.Copy(buffer, 0, result, buffer.Length);
            return result;
        }
 
        public override String GetString()
        { 
            int i = offset; 
            while (i < buffer.Length && buffer[i] != 0) i++;
            string result = new string(buffer, offset, i - offset); 
            if (i < buffer.Length) i++;
            offset = i;
            return result;
        } 

        public override void PutCoTaskMem(IntPtr ptr) 
        { 
            Marshal.Copy(ptr, buffer, 0, buffer.Length);
            offset = 0; 
        }

        public override void PutString(string s)
        { 
            int count = Math.Min(s.Length, buffer.Length - offset);
            s.CopyTo(0, buffer, offset, count); 
            offset += count; 
            if (offset < buffer.Length) buffer[offset++] = (char)0;
        } 
    }

    public class ComStreamFromDataStream : IStream {
        protected Stream dataStream; 

        // to support seeking ahead of the stream length... 
        private long virtualPosition = -1; 

 
        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        public ComStreamFromDataStream(Stream dataStream)
        {
            if (dataStream == null) throw new ArgumentNullException("dataStream"); 
            this.dataStream = dataStream;
        } 
 
        private void ActualizeVirtualPosition() {
            if (virtualPosition == -1) return; 

            if (virtualPosition > dataStream.Length)
                dataStream.SetLength(virtualPosition);
 
            dataStream.Position = virtualPosition;
 
            virtualPosition = -1; 
        }
 
        public IStream Clone() {
            NotImplemented();
            return null;
        } 

        public void Commit(int grfCommitFlags) { 
            dataStream.Flush(); 
            // Extend the length of the file if needed.
            ActualizeVirtualPosition(); 
        }

        public long CopyTo(IStream pstm, long cb, long[] pcbRead) {
            int bufsize = 4096; // one page 
            IntPtr buffer = Marshal.AllocHGlobal(bufsize);
            if (buffer == IntPtr.Zero) throw new OutOfMemoryException(); 
            long written = 0; 
            try {
                while (written < cb) { 
                    int toRead = bufsize;
                    if (written + toRead > cb) toRead  = (int) (cb - written);
                    int read = Read(buffer, toRead);
                    if (read == 0) break; 
                    if (pstm.Write(buffer, read) != read) {
                        throw EFail("Wrote an incorrect number of bytes"); 
                    } 
                    written += read;
                } 
            }
            finally {
                Marshal.FreeHGlobal(buffer);
            } 
            if (pcbRead != null && pcbRead.Length > 0) {
                pcbRead[0] = written; 
            } 

            return written; 
        }

        public Stream GetDataStream() {
            return dataStream; 
        }
 
        public void LockRegion(long libOffset, long cb, int dwLockType) { 
        }
 
        protected static ExternalException EFail(string msg) {
            ExternalException e = new ExternalException(msg, NativeMethods.E_FAIL);
            throw e;
        } 

        protected static void NotImplemented() { 
            ExternalException e = new ExternalException(SR.GetString(SR.UnsafeNativeMethodsNotImplemented), NativeMethods.E_NOTIMPL); 
            throw e;
        } 

        public int Read(IntPtr buf, /* cpr: int offset,*/  int length) {
            //        System.Text.Out.WriteLine("IStream::Read(" + length + ")");
            byte[] buffer = new byte[length]; 
            int count = Read(buffer, length);
            Marshal.Copy(buffer, 0, buf, count); 
            return count; 
        }
 
        public int Read(byte[] buffer, /* cpr: int offset,*/  int length) {
            ActualizeVirtualPosition();
            return dataStream.Read(buffer, 0, length);
        } 

        public void Revert() { 
            NotImplemented(); 
        }
 
        public long Seek(long offset, int origin) {
            // Console.WriteLine("IStream::Seek("+ offset + ", " + origin + ")");
            long pos = virtualPosition;
            if (virtualPosition == -1) { 
                pos = dataStream.Position;
            } 
            long len = dataStream.Length; 
            switch (origin) {
                case NativeMethods.STREAM_SEEK_SET: 
                    if (offset <= len) {
                        dataStream.Position = offset;
                        virtualPosition = -1;
                    } 
                    else {
                        virtualPosition = offset; 
                    } 
                    break;
                case NativeMethods.STREAM_SEEK_END: 
                    if (offset <= 0) {
                        dataStream.Position = len + offset;
                        virtualPosition = -1;
                    } 
                    else {
                        virtualPosition = len + offset; 
                    } 
                    break;
                case NativeMethods.STREAM_SEEK_CUR: 
                    if (offset+pos <= len) {
                        dataStream.Position = pos + offset;
                        virtualPosition = -1;
                    } 
                    else {
                        virtualPosition = offset + pos; 
                    } 
                    break;
            } 
            if (virtualPosition != -1) {
                return virtualPosition;
            }
            else { 
                return dataStream.Position;
            } 
        } 

        public void SetSize(long value) { 
            dataStream.SetLength(value);
        }

        public void Stat(NativeMethods.STATSTG pstatstg, int grfStatFlag) { 
            pstatstg.type = 2; // STGTY_STREAM
            pstatstg.cbSize = dataStream.Length; 
            pstatstg.grfLocksSupported = 2; //LOCK_EXCLUSIVE 
        }
 
        public void UnlockRegion(long libOffset, long cb, int dwLockType) {
        }

        public int Write(IntPtr buf, /* cpr: int offset,*/ int length) { 
            byte[] buffer = new byte[length];
            Marshal.Copy(buf, buffer, 0, length); 
            return Write(buffer, length); 
        }
 
        public int Write(byte[] buffer, /* cpr: int offset,*/ int length) {
            ActualizeVirtualPosition();
            dataStream.Write(buffer, 0, length);
            return length; 
        }
    } 
    [ComImport(), Guid("0000000B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IStorage {
 
        [return: MarshalAs(UnmanagedType.Interface)]
          UnsafeNativeMethods.IStream CreateStream(
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsName, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int grfMode, 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved1,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved2);

        [return: MarshalAs(UnmanagedType.Interface)]
          UnsafeNativeMethods.IStream OpenStream( 
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsName, 
 
                 IntPtr reserved1,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int grfMode,
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved2);
 
        [return: MarshalAs(UnmanagedType.Interface)]
          UnsafeNativeMethods.IStorage CreateStorage( 
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int grfMode,
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved1,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved2);
 
        [return: MarshalAs(UnmanagedType.Interface)] 
          UnsafeNativeMethods.IStorage OpenStorage(
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName,

                 IntPtr pstgPriority,   // must be null
                [In, MarshalAs(UnmanagedType.U4)] 
                 int grfMode,
 
                 IntPtr snbExclude, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved); 


         void CopyTo(
 
                 int ciidExclude,
                [In, MarshalAs(UnmanagedType.LPArray)] 
                 Guid[] pIIDExclude, 

                 IntPtr snbExclude, 
                [In, MarshalAs(UnmanagedType.Interface)]
                 UnsafeNativeMethods.IStorage stgDest);

 
         void MoveElementTo(
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName, 
                [In, MarshalAs(UnmanagedType.Interface)]
                 UnsafeNativeMethods.IStorage stgDest, 
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsNewName,
                [In, MarshalAs(UnmanagedType.U4)]
                 int grfFlags); 

 
         void Commit( 

                 int grfCommitFlags); 


         void Revert();
 

         void EnumElements( 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved1,
                     // void * 
                 IntPtr reserved2,
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved3,
                [Out, MarshalAs(UnmanagedType.Interface)] 
                 out object ppVal);                     // IEnumSTATSTG
 
 
         void DestroyElement(
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName);


         void RenameElement( 
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsOldName, 
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsNewName);
 

         void SetElementTimes(
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsName, 
                [In]
                 NativeMethods.FILETIME pctime, 
                [In] 
                 NativeMethods.FILETIME patime,
                [In] 
                 NativeMethods.FILETIME pmtime);


         void SetClass( 
                [In]
                 ref Guid clsid); 
 

         void SetStateBits( 

                 int grfStateBits,

                 int grfMask); 

 
         void Stat( 
                [Out]
                 NativeMethods.STATSTG pStatStg, 
                 int grfStatFlag);
    }

    [ComImport(), Guid("B196B28F-BAB4-101A-B69C-00AA00341D07"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IClassFactory2 {
 
 
         void CreateInstance(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  object unused,
                        [In]
                  ref Guid refiid,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  object[] ppunk);
 
 
         void LockServer(
 
                 int fLock);


         void GetLicInfo( 
                [Out]
                  NativeMethods.tagLICINFO licInfo); 
 

         void RequestLicKey( 
                [In, MarshalAs(UnmanagedType.U4)]
                 int dwReserved,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   string[] pBstrKey); 

 
         void CreateInstanceLic( 
                [In, MarshalAs(UnmanagedType.Interface)]
                  object pUnkOuter, 
                [In, MarshalAs(UnmanagedType.Interface)]
                  object pUnkReserved,
                        [In]
                  ref Guid riid, 
                [In, MarshalAs(UnmanagedType.BStr)]
                  string bstrKey, 
                [Out, MarshalAs(UnmanagedType.Interface)] 
                  out object ppVal);
    } 
    [SuppressUnmanagedCodeSecurity, ComImport(),
    Guid("B196B284-BAB4-101A-B69C-00AA00341D07"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IConnectionPointContainer { 

        [return: MarshalAs(UnmanagedType.Interface)] 
          object EnumConnectionPoints(); 

        [PreserveSig] 
        int FindConnectionPoint([In] ref Guid guid, [Out, MarshalAs(UnmanagedType.Interface)]out IConnectionPoint ppCP);

    }
 
    [ComImport(), Guid("B196B285-BAB4-101A-B69C-00AA00341D07"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IEnumConnectionPoints { 
        [PreserveSig] 
        int Next(int cConnections, out IConnectionPoint pCp, out int pcFetched);
 
        [PreserveSig]
        int Skip(int cSkip);

        void Reset(); 

        IEnumConnectionPoints Clone(); 
    } 

 
    [ComImport(), Guid("00020400-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IDispatch {
         int GetTypeInfoCount();
 
        [return: MarshalAs(UnmanagedType.Interface)]
         ITypeInfo GetTypeInfo( 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int iTInfo,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int lcid);


         [PreserveSig] 
         int GetIDsOfNames(
                [In] 
                 ref Guid riid, 
                [In, MarshalAs(UnmanagedType.LPArray)]
                 string[] rgszNames, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int cNames,
                [In, MarshalAs(UnmanagedType.U4)]
                 int lcid, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] rgDispId); 
 

         [PreserveSig] 
         int Invoke(

                 int dispIdMember,
                [In] 
                 ref Guid riid,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int lcid, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int dwFlags, 
                [Out, In]
                  NativeMethods.tagDISPPARAMS pDispParams,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  object[] pVarResult, 
                [Out, In]
                  NativeMethods.tagEXCEPINFO pExcepInfo, 
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  IntPtr [] pArgErr);
 
    }

    [ComImport(), Guid("00020401-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface  ITypeInfo { 
            [PreserveSig]
            int GetTypeAttr(ref IntPtr pTypeAttr); 
 

            [PreserveSig] 
            int GetTypeComp(
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                       UnsafeNativeMethods.ITypeComp[] ppTComp);
 

            [PreserveSig] 
            int GetFuncDesc( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int index, ref IntPtr pFuncDesc); 


             [PreserveSig]
             int GetVarDesc( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int index, ref IntPtr pVarDesc); 
 

             [PreserveSig] 
             int GetNames(

                     int memid,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      string[] rgBstrNames,
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int cMaxNames, 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      int[] pcNames); 


            [PreserveSig]
            int GetRefTypeOfImplType( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int index, 
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      int[] pRefType);
 

            [PreserveSig]
            int GetImplTypeFlags(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int index,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      int[] pImplTypeFlags); 

 
            [PreserveSig]
            int GetIDsOfNames(IntPtr rgszNames, int cNames, IntPtr pMemId);

 
            [PreserveSig]
            int Invoke(); 
 

            [PreserveSig] 
            int GetDocumentation(

                     int memid,
                      ref string pBstrName, 
                      ref string pBstrDocString,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      int[] pdwHelpContext, 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      string[] pBstrHelpFile); 


            [PreserveSig]
            int GetDllEntry( 

                     int memid, 
 
                      NativeMethods.tagINVOKEKIND invkind,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      string[] pBstrDllName,
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      string[] pBstrName,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      short[] pwOrdinal);
 
 
             [PreserveSig]
             int GetRefTypeInfo( 

                     IntPtr hreftype,
                     ref ITypeInfo pTypeInfo);
 

            [PreserveSig] 
            int AddressOfMember(); 

 
            [PreserveSig]
            int CreateInstance(
                    [In]
                      ref Guid riid, 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      object[] ppvObj); 
 

             [PreserveSig] 
             int GetMops(

                     int memid,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                     string[] pBstrMops);
 
 
            [PreserveSig]
            int GetContainingTypeLib( 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                       UnsafeNativeMethods.ITypeLib[] ppTLib,
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      int[] pIndex); 

             [PreserveSig] 
             void ReleaseTypeAttr(IntPtr typeAttr); 

             [PreserveSig] 
             void ReleaseFuncDesc(IntPtr funcDesc);

             [PreserveSig]
             void ReleaseVarDesc(IntPtr varDesc); 

    } 
    [ComImport(), Guid("00020403-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface  ITypeComp {
         void RemoteBind( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                 string szName,
                [In, MarshalAs(UnmanagedType.U4)]
                 int lHashVal, 
                [In, MarshalAs(UnmanagedType.U2)]
                 short wFlags, 
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  NativeMethods.tagDESCKIND[] pDescKind,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   NativeMethods.tagFUNCDESC[] ppFuncDesc,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   NativeMethods.tagVARDESC[] ppVarDesc,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeComp[] ppTypeComp, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  int[] pDummy); 


         void RemoteBindType(
                [In, MarshalAs(UnmanagedType.LPWStr)] 
                 string szName,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int lHashVal, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo); 

    }

    [ComImport(), Guid("00020402-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface  ITypeLib {
 
         void RemoteGetTypeInfoCount( 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  int[] pcTInfo); 


         void GetTypeInfo(
                [In, MarshalAs(UnmanagedType.U4)] 
                 int index,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo); 

 
         void GetTypeInfoType(
                [In, MarshalAs(UnmanagedType.U4)]
                 int index,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  NativeMethods.tagTYPEKIND[] pTKind);
 
 
         void GetTypeInfoOfGuid(
                [In] 
                  ref Guid guid,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo);
 

         void RemoteGetLibAttr( 
                IntPtr ppTLibAttr, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  int[] pDummy); 


         void GetTypeComp(
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeComp[] ppTComp);
 
 
         void RemoteGetDocumentation(
 
                 int index,
                [In, MarshalAs(UnmanagedType.U4)]
                 int refPtrFlags,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 string[] pBstrName,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 string[] pBstrDocString, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] pdwHelpContext, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 string[] pBstrHelpFile);

 
         void RemoteIsName(
                [In, MarshalAs(UnmanagedType.LPWStr)] 
                 string szNameBuf, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int lHashVal, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 IntPtr [] pfName,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 string[] pBstrLibName); 

 
         void RemoteFindName( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                 string szNameBuf, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int lHashVal,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 UnsafeNativeMethods.ITypeInfo[] ppTInfo, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] rgMemId, 
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                 short[] pcFound,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 string[] pBstrLibName);


         void LocalReleaseTLibAttr(); 
    }
 
    [ComImport(), 
     Guid("DF0B3D60-548F-101B-8E65-08002B2BD119"),
     InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface ISupportErrorInfo {

        int InterfaceSupportsErrorInfo(
                [In] ref Guid riid); 

 
    } 

    [ComImport(), 
     Guid("1CF2B120-547D-101B-8E65-08002B2BD119"),
     InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IErrorInfo {
 
        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig] 
        int GetGUID( 
                   [Out]
                   out Guid pguid); 

        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig]
        int GetSource( 
                     [In, Out, MarshalAs(UnmanagedType.BStr)]
                     ref string pBstrSource); 
 
        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig] 
        int GetDescription(
                          [In, Out, MarshalAs(UnmanagedType.BStr)]
                          ref string pBstrDescription);
 
        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig] 
        int GetHelpFile( 
                       [In, Out, MarshalAs(UnmanagedType.BStr)]
                       ref string pBstrHelpFile); 

        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig]
        int GetHelpContext( 
                          [In, Out, MarshalAs(UnmanagedType.U4)]
                          ref int pdwHelpContext); 
 
    }
 
    [StructLayout(LayoutKind.Sequential)]
    public sealed class tagQACONTAINER
    {
      [MarshalAs(UnmanagedType.U4)] 
      public int cbSize = Marshal.SizeOf(typeof(tagQACONTAINER));
 
      public UnsafeNativeMethods.IOleClientSite pClientSite; 

      [MarshalAs(UnmanagedType.Interface)] 
      public object pAdviseSink = null;

      public UnsafeNativeMethods.IPropertyNotifySink pPropertyNotifySink;
 
      [MarshalAs(UnmanagedType.Interface)]
      public object pUnkEventSink = null; 
 
      [MarshalAs(UnmanagedType.U4)]
      public int dwAmbientFlags; 

      [MarshalAs(UnmanagedType.U4)]
      public UInt32 colorFore;
 
      [MarshalAs(UnmanagedType.U4)]
      public UInt32 colorBack; 
 
      [MarshalAs(UnmanagedType.Interface)]
      public object pFont; 

      [MarshalAs(UnmanagedType.Interface)]
      public object pUndoMgr = null;
 
      [MarshalAs(UnmanagedType.U4)]
      public int dwAppearance; 
 
      public int lcid;
 
      public IntPtr hpal = IntPtr.Zero;

      [MarshalAs(UnmanagedType.Interface)]
      public object pBindHost = null; 

      // visual basic6 uses a old version of the struct that is missing these two fields. 
      // So, ActiveX sourcing does not work, with the EE trying to read off the 
      // end of the stack to get to these variables. If I do not define these,
      // Office or any of the other hosts will hopefully get nulls, otherwise they 
      // will crash.
      //
      //public UnsafeNativeMethods.IOleControlSite pControlSite;
 
      //public UnsafeNativeMethods.IOleServiceProvider pServiceProvider;
    } 
 
    [StructLayout(LayoutKind.Sequential)/*leftover(noAutoOffset)*/]
    public sealed class tagQACONTROL 
    {
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=0, cbSize)*/]
      public int cbSize = Marshal.SizeOf(typeof(tagQACONTROL));
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=4, dwMiscStatus)*/]
      public int dwMiscStatus = 0; 
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=8, dwViewStatus)*/]
      public int dwViewStatus = 0; 

      [MarshalAs(UnmanagedType.U4)/*leftover(offset=12, dwEventCookie)*/]
      public int dwEventCookie = 0;
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=16, dwPropNotifyCookie)*/]
      public int dwPropNotifyCookie = 0; 
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=20, dwPointerActivationPolicy)*/]
      public int dwPointerActivationPolicy = 0; 

    }

    [ComImport(), Guid("0000000A-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface ILockBytes {
 
 
         void ReadAt(
                [In, MarshalAs(UnmanagedType.U8)] 
                 long ulOffset,
                [Out]
                 IntPtr pv,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int cb,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 int[] pcbRead); 

 
         void WriteAt(
                [In, MarshalAs(UnmanagedType.U8)]
                 long ulOffset,
 
                 IntPtr pv,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int cb, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] pcbWritten); 


         void Flush();
 

         void SetSize( 
                [In, MarshalAs(UnmanagedType.U8)] 
                 long cb);
 

         void LockRegion(
                [In, MarshalAs(UnmanagedType.U8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.U8)]
                 long cb, 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int dwLockType);
 

         void UnlockRegion(
                [In, MarshalAs(UnmanagedType.U8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.U8)]
                 long cb, 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int dwLockType);
 

         void Stat(
                [Out]
                  NativeMethods.STATSTG pstatstg, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int grfStatFlag); 
 
    }
 
    [StructLayout(LayoutKind.Sequential),
        SuppressUnmanagedCodeSecurity()]
    public class OFNOTIFY
    { 
        // hdr was a by-value NMHDR structure
        public IntPtr hdr_hwndFrom = IntPtr.Zero; 
        public IntPtr hdr_idFrom = IntPtr.Zero; 
        public int  hdr_code = 0;
 
        public IntPtr lpOFN = IntPtr.Zero;
        public IntPtr pszFile = IntPtr.Zero;
    }
 
    internal static bool IsComObject(object o)
    { 
        return Marshal.IsComObject(o); 
    }
 
    internal static int ReleaseComObject(object objToRelease)
    {
        return Marshal.ReleaseComObject(objToRelease);
    } 

    [ReflectionPermission(SecurityAction.Assert, Unrestricted=true)] 
    public static object PtrToStructure(IntPtr lparam, Type cls) { 
        return Marshal.PtrToStructure(lparam, cls);
    } 

    [ReflectionPermission(SecurityAction.Assert, Unrestricted=true)]
    public static void PtrToStructure(IntPtr lparam, object data) {
        Marshal.PtrToStructure(lparam, data); 
    }
 
        internal static int SizeOf(Type t) 
        {
            return Marshal.SizeOf(t); 
        }

        internal static void ThrowExceptionForHR(int errorCode)
        { 
            Marshal.ThrowExceptionForHR(errorCode);
        } 
 

        public delegate int BrowseCallbackProc( 
            IntPtr hwnd,
            int msg,
            IntPtr lParam,
            IntPtr lpData); 

        [Flags] 
        public enum BrowseInfos 
        {
            NewDialogStyle      = 0x0040,   // Use the new dialog layout with the ability to resize 
            HideNewFolderButton = 0x0200    // Don't display the 'New Folder' button
        }

        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] 
        public class BROWSEINFO
        { 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            public IntPtr hwndOwner; //HWND hwndOwner; // HWND of the owner for the dialog
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            public IntPtr pidlRoot; //LPCITEMIDLIST pidlRoot; // Root ITEMIDLIST

            // For interop purposes, send over a buffer of MAX_PATH size.
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            public IntPtr pszDisplayName; //LPWSTR pszDisplayName; // Return display name of item selected.
 
            public string lpszTitle; //LPCWSTR lpszTitle; // text to go in the banner over the tree. 
            public int ulFlags; //UINT ulFlags; // Flags that control the return stuff
            public BrowseCallbackProc lpfn; //BFFCALLBACK lpfn; // Call back pointer 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
            public IntPtr lParam; //LPARAM lParam; // extra info that's passed back in callbacks
            public int iImage; //int iImage; // output var: where to return the Image index.
        } 

        [SuppressUnmanagedCodeSecurity(), 
            SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")] 
        internal class Shell32
        { 
            [DllImport(ExternDll.Shell32)]
            public static extern int SHGetSpecialFolderLocation(IntPtr hwnd, int csidl, ref IntPtr ppidl);
            //SHSTDAPI SHGetSpecialFolderLocation(HWND hwnd, int csidl, LPITEMIDLIST *ppidl);
 
            [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)]
            public static extern bool SHGetPathFromIDList(IntPtr pidl, IntPtr pszPath); 
            //SHSTDAPI_(BOOL) SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath); 

            [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)] 
            public static extern IntPtr SHBrowseForFolder([In] BROWSEINFO lpbi);
            //SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderW(LPBROWSEINFOW lpbi);

            [DllImport(ExternDll.Shell32)] 
            public static extern int SHGetMalloc([Out, MarshalAs(UnmanagedType.LPArray)] UnsafeNativeMethods.IMalloc[] ppMalloc);
            //SHSTDAPI SHGetMalloc(LPMALLOC * ppMalloc); 
 
            [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
            [DllImport(ExternDll.Shell32, PreserveSig = true, EntryPoint = "SHGetFolderPathEx")] 
            private static extern int SHGetFolderPathExPrivate(ref Guid rfid, uint dwFlags, IntPtr hToken, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszPath, uint cchPath);

            public static int SHGetFolderPathEx(ref Guid rfid, uint dwFlags, IntPtr hToken, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszPath, uint cchPath)
            { 
                if (IsVista)
                { 
                    return SHGetFolderPathExPrivate(ref rfid, dwFlags, hToken, pszPath, cchPath); 
                }
                throw new NotSupportedException(); 
            }

            [DllImport(ExternDll.Shell32, PreserveSig = true)]
            public static extern int SHCreateShellItem(IntPtr pidlParent, IntPtr psfParent, IntPtr pidl, out FileDialogNative.IShellItem ppsi); 

            [DllImport(ExternDll.Shell32, PreserveSig = true)] 
            public static extern int SHILCreateFromPath([MarshalAs(UnmanagedType.LPWStr)]string pszPath, out IntPtr ppIdl, ref uint rgflnOut); 
        }
 
        [
        ComImport(),
        Guid("00000002-0000-0000-c000-000000000046"),
        System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown), 
        SuppressUnmanagedCodeSecurity()
        ] 
        public interface IMalloc 
        {
            [PreserveSig] 
            IntPtr Alloc(int cb);

            [PreserveSig]
            IntPtr Realloc(IntPtr pv, int cb); 

            [PreserveSig] 
            void Free(IntPtr pv); 

            [PreserveSig] 
            int GetSize(IntPtr pv);

            [PreserveSig]
            int DidAlloc(IntPtr pv); 

            [PreserveSig] 
            void HeapMinimize(); 
        }
 
          [
          ComImport,
          Guid("00000126-0000-0000-C000-000000000046"),
          InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
          ]
          public interface IRunnableObject 
          { 
               void GetRunningClass(out Guid guid);
 
               [PreserveSig]
               int Run(IntPtr lpBindContext);
               bool IsRunning();
               void LockRunning(bool fLock, bool fLastUnlockCloses); 
               void SetContainedObject(bool fContained);
          } 
 
        [ComVisible(true), ComImport(), Guid("B722BCC7-4E68-101B-A2BC-00AA00404770"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
               public interface IOleDocumentSite 
          {

               [return: MarshalAs(UnmanagedType.I4)]
               [PreserveSig] 
               int ActivateMe(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                    IOleDocumentView pViewToActivate); 

          } 

          [ComVisible(true), Guid("B722BCC6-4E68-101B-A2BC-00AA00404770"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
               public interface IOleDocumentView
          { 

               void SetInPlaceSite( 
                    [In, MarshalAs(UnmanagedType.Interface)] 
                    IOleInPlaceSite pIPSite);
 
               [return: MarshalAs(UnmanagedType.Interface)]
               IOleInPlaceSite GetInPlaceSite();

               [return: MarshalAs(UnmanagedType.Interface)] 
               object GetDocument();
 
 
               void SetRect(
                    [In] 
                    ref NativeMethods.RECT prcView);


               void GetRect( 
                    [In, Out]
                    ref NativeMethods.RECT prcView); 
 

               void SetRectComplex( 
                    [In]
                    NativeMethods.RECT prcView,
                    [In]
                    NativeMethods.RECT prcHScroll, 
                    [In]
                    NativeMethods.RECT prcVScroll, 
                    [In] 
                    NativeMethods.RECT prcSizeBox);
 

               void Show(bool fShow);

 
               [PreserveSig]
               int UIActivate(bool fUIActivate); 
 

               void Open(); 

               [PreserveSig]
               int Close(
                    [In, MarshalAs(UnmanagedType.U4)] 
                    int dwReserved);
 
 
               void SaveViewState(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                    IStream pstm);


               void ApplyViewState( 
                    [In, MarshalAs(UnmanagedType.Interface)]
                    IStream pstm); 
 

               void Clone( 
                    [In, MarshalAs(UnmanagedType.Interface)]
                    IOleInPlaceSite pIPSiteNew,
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                    IOleDocumentView[] ppViewNew); 

 
          } 

        [ 
          ComImport,
          Guid("b722bcc5-4e68-101b-a2bc-00aa00404770"),
          InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
          ] 
          public interface IOleDocument
          { 
 
               [PreserveSig]
               int CreateView(IOleInPlaceSite pIPSite, 
                                   IStream pstm,
                                             int dwReserved,
                                             out IOleDocumentView ppView);
 
               [PreserveSig]
               int GetDocMiscStatus( 
                    out int pdwStatus); 

               int EnumViews( 
                    out object ppEnum,
                    out IOleDocumentView ppView);
          }
 
        [
            Guid("0000011e-0000-0000-C000-000000000046"),  ComImport, InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ] 
        public interface IOleCache
        { 
            int Cache(ref FORMATETC pformatetc,int advf);

            void Uncache(int  dwConnection);
 
            object EnumCache(/*[out] IEnumSTATDATA **ppenumSTATDATA*/);
 
            void InitCache(IComDataObject pDataObject); 

            void SetData(ref FORMATETC pformatetc, ref STGMEDIUM pmedium, bool fRelease); 
        }


 

 
        [ComImport, 
         TypeLibType(0x1050),
         Guid("618736E0-3C3D-11CF-810C-00AA00389B71"), 
        ]
        public interface IAccessibleInternal {
            [return: MarshalAs(UnmanagedType.IDispatch)]
            [DispId(unchecked((int)0xFFFFEC78))] 
            [TypeLibFunc(0x0040)]
            object get_accParent(); 
 
            [DispId(unchecked((int)0xFFFFEC77))]
            [TypeLibFunc(0x0040)] 
            int get_accChildCount();

            [return: MarshalAs(UnmanagedType.IDispatch)]
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC76))]
            object get_accChild([In][MarshalAs(UnmanagedType.Struct)] object varChild); 
 
            [return: MarshalAs(UnmanagedType.BStr)]
            [DispId(unchecked((int)0xFFFFEC75))] 
            [TypeLibFunc(0x0040)]
            string get_accName([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);

            [return: MarshalAs(UnmanagedType.BStr)] 
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC74))] 
            string get_accValue([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [return: MarshalAs(UnmanagedType.BStr)] 
            [DispId(unchecked((int)0xFFFFEC73))]
            [TypeLibFunc(0x0040)]
            string get_accDescription([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [DispId(unchecked((int)0xFFFFEC72))] 
            [TypeLibFunc(0x0040)] 
            object get_accRole([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC71))]
            object get_accState([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [return: MarshalAs(UnmanagedType.BStr)] 
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC70))]
            string get_accHelp([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [DispId(unchecked((int)0xFFFFEC6F))]
            [TypeLibFunc(0x0040)]
            int get_accHelpTopic([Out][MarshalAs(UnmanagedType.BStr)] out string pszHelpFile, 
                                                        [In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [return: MarshalAs(UnmanagedType.BStr)] 
            [DispId(unchecked((int)0xFFFFEC6E))]
            [TypeLibFunc(0x0040)] 
            string get_accKeyboardShortcut([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);

            [return: MarshalAs(UnmanagedType.Struct)]
            [DispId(unchecked((int)0xFFFFEC6D))] 
            [TypeLibFunc(0x0040)]
            object get_accFocus(); 
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [DispId(unchecked((int)0xFFFFEC6C))] 
            [TypeLibFunc(0x0040)]
            object get_accSelection();

            [return: MarshalAs(UnmanagedType.BStr)] 
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC6B))] 
            string get_accDefaultAction([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [DispId(unchecked((int)0xFFFFEC6A))] 
            [TypeLibFunc(0x0040)]
            void accSelect([In] int flagsSelect,
                           [In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [DispId(unchecked((int)0xFFFFEC69))]
            [TypeLibFunc(0x0040)] 
            void accLocation([Out] out int pxLeft, 
                             [Out] out int pyTop,
                             [Out] out int pcxWidth, 
                             [Out] out int pcyHeight,
                             [In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);

            [return: MarshalAs(UnmanagedType.Struct)] 
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC68))] 
            object accNavigate([In] int navDir, 
                               [In][Optional][MarshalAs(UnmanagedType.Struct)] object varStart);
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC67))]
            object accHitTest([In] int xLeft, 
                              [In] int yTop);
 
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC66))]
            void accDoDefaultAction([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC75))]
            void set_accName([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild, 
                                 [In][MarshalAs(UnmanagedType.BStr)] string pszName);
 
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC74))]
            void set_accValue([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild, 
                              [In][MarshalAs(UnmanagedType.BStr)] string pszValue);
        }

        [ 
        ComImport(),
        Guid("BEF6E002-A874-101A-8BBA-00AA00300CAB"), 
        System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IFont
        { 

            [return: MarshalAs(UnmanagedType.BStr)]
            string GetName();
 
            void SetName(
                   [In, MarshalAs(UnmanagedType.BStr)] 
                      string pname); 

            [return: MarshalAs(UnmanagedType.U8)] 
            long GetSize();

            void SetSize(
                   [In, MarshalAs(UnmanagedType.U8)] 
                     long psize);
 
            [return: MarshalAs(UnmanagedType.Bool)] 
            bool GetBold();
 
            void SetBold(
                   [In, MarshalAs(UnmanagedType.Bool)]
                     bool pbold);
 
            [return: MarshalAs(UnmanagedType.Bool)]
            bool GetItalic(); 
 
            void SetItalic(
                   [In, MarshalAs(UnmanagedType.Bool)] 
                     bool pitalic);

            [return: MarshalAs(UnmanagedType.Bool)]
            bool GetUnderline(); 

            void SetUnderline( 
                   [In, MarshalAs(UnmanagedType.Bool)] 
                     bool punderline);
 
            [return: MarshalAs(UnmanagedType.Bool)]
            bool GetStrikethrough();

            void SetStrikethrough( 
                   [In, MarshalAs(UnmanagedType.Bool)]
                     bool pstrikethrough); 
 
            [return: MarshalAs(UnmanagedType.I2)]
            short GetWeight(); 

            void SetWeight(
                   [In, MarshalAs(UnmanagedType.I2)]
                     short pweight); 

            [return: MarshalAs(UnmanagedType.I2)] 
            short GetCharset(); 

            void SetCharset( 
                   [In, MarshalAs(UnmanagedType.I2)]
                     short pcharset);

            IntPtr GetHFont(); 

            void Clone( 
                      out UnsafeNativeMethods.IFont ppfont); 

            [System.Runtime.InteropServices.PreserveSig] 
            int IsEqual(
                   [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IFont pfontOther);
 
            void SetRatio(
                    int cyLogical, 
                    int cyHimetric); 

            void QueryTextMetrics(out IntPtr ptm); 

            void AddRefHfont(
                    IntPtr hFont);
 
            void ReleaseHfont(
                    IntPtr hFont); 
 
            void SetHdc(
                    IntPtr hdc); 
        }

        [ComImport(), Guid("7BF80980-BF32-101A-8BBB-00AA00300CAB"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)]
        public interface IPicture 
        {
            IntPtr GetHandle(); 
 
            IntPtr GetHPal();
 
            [return: MarshalAs(UnmanagedType.I2)]
            short GetPictureType();

            int GetWidth(); 

            int GetHeight(); 
 
            void Render(
               IntPtr hDC, 
               int x,
               int y,
               int cx,
               int cy, 
               int xSrc,
               int ySrc, 
               int cxSrc, 
               int cySrc,
               IntPtr rcBounds 
               );

            void SetHPal(
                    IntPtr phpal); 

            IntPtr GetCurDC(); 
 
            void SelectPicture(
                    IntPtr hdcIn, 
                   [Out, MarshalAs(UnmanagedType.LPArray)]
                     IntPtr[] phdcOut,
                   [Out, MarshalAs(UnmanagedType.LPArray)]
                     IntPtr[] phbmpOut); 

            [return: MarshalAs(UnmanagedType.Bool)] 
            bool GetKeepOriginalFormat(); 

            void SetKeepOriginalFormat( 
                   [In, MarshalAs(UnmanagedType.Bool)]
                     bool pfkeep);

            void PictureChanged(); 

            [PreserveSig] 
            int SaveAsFile( 
                   [In, MarshalAs(UnmanagedType.Interface)]
                     UnsafeNativeMethods.IStream pstm, 

                    int fSaveMemCopy,
                   [Out]
                     out int pcbSize); 

            int GetAttributes(); 
        } 

        [ComImport(), Guid("7BF80981-BF32-101A-8BBB-00AA00300CAB"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIDispatch)] 
        public interface IPictureDisp
        {
            IntPtr Handle { get;}
 
            IntPtr HPal { get;}
 
            short PictureType { get;} 

            int Width { get;} 

            int Height { get;}

            void Render( 
                    IntPtr hdc,
                    int x, 
                    int y, 
                    int cx,
                    int cy, 
                    int xSrc,
                    int ySrc,
                    int cxSrc,
                    int cySrc); 
        }
 
        ///  
        /// 
        /// This class provides static methods to create, activate and deactivate the theming scope. 
        /// 
        [SuppressUnmanagedCodeSecurity]
        internal class ThemingScope
        { 
            private static ACTCTX enableThemingActivationContext;
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            private static IntPtr hActCtx; 
            private static bool contextCreationSucceeded;
 
            /// 
            /// We now use explicitactivate everywhere and use this method to determine if we
            /// really need to activate the activationcontext.  This should be pretty fast.
            ///  
            private static bool IsContextActive()
            { 
                IntPtr current = IntPtr.Zero; 

                if (contextCreationSucceeded && GetCurrentActCtx(out current)) 
                {
                    return current == hActCtx;
                }
                return false; 
            }
 
            ///  
            ///     Activate() does nothing if a theming context is already active on the current thread, which is good
            ///     for perf reasons. However, in some cases, like in the Timer callback, we need to put another context 
            ///     on the stack even if one is already present. In such cases, this method helps - you get to manage
            ///     the cookie yourself though.
            /// 
            public static IntPtr Activate() 
            {
                IntPtr userCookie = IntPtr.Zero; 
 
                if (Application.UseVisualStyles && contextCreationSucceeded && OSFeature.Feature.IsPresent(OSFeature.Themes))
                { 
                    if (!IsContextActive())
                    {
                        if (!ActivateActCtx(hActCtx, out userCookie))
                        { 
                            // Be sure cookie always zero if activation failed
                            userCookie = IntPtr.Zero; 
                        } 
                    }
                } 

                return userCookie;
            }
 
            /// 
            ///     Use this to deactivate a context activated by calling ExplicitActivate. 
            ///  
            public static IntPtr Deactivate(IntPtr userCookie)
            { 
                if (userCookie != IntPtr.Zero && OSFeature.Feature.IsPresent(OSFeature.Themes))
                {
                    if (DeactivateActCtx(0, userCookie))
                    { 
                        // deactivation succeeded...
                        userCookie = IntPtr.Zero; 
                    } 
                }
 
                return userCookie;
            }

            [ 
                // Ok to suppress because WinForms apps cannot bleed accross different AppDomains
                // and ThemingScope class is not public so external code can't lock on typeof(ThemingScope). 
                System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2002:DoNotLockOnObjectsWithWeakIdentity") 
            ]
            public static bool CreateActivationContext(string dllPath, int nativeResourceManifestID) 
            {
                lock (typeof(ThemingScope))
                {
                    if (!contextCreationSucceeded && OSFeature.Feature.IsPresent(OSFeature.Themes)) 
                    {
 
                        enableThemingActivationContext = new ACTCTX(); 

                        enableThemingActivationContext.cbSize = Marshal.SizeOf(typeof(ACTCTX)); 
                        enableThemingActivationContext.lpSource = dllPath;
                        enableThemingActivationContext.lpResourceName = (IntPtr)nativeResourceManifestID;
                        enableThemingActivationContext.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
 
                        hActCtx = CreateActCtx(ref enableThemingActivationContext);
                        contextCreationSucceeded = (hActCtx != new IntPtr(-1)); 
                    } 

                    return contextCreationSucceeded; 
                }
            }

            // All the pinvoke goo... 
            [DllImport(ExternDll.Kernel32)]
            private extern static IntPtr CreateActCtx(ref ACTCTX actctx); 
            [DllImport(ExternDll.Kernel32)] 
            private extern static bool ActivateActCtx(IntPtr hActCtx, out IntPtr lpCookie);
            [DllImport(ExternDll.Kernel32)] 
            private extern static bool DeactivateActCtx(int dwFlags, IntPtr lpCookie);
            [DllImport(ExternDll.Kernel32)]
            private extern static bool GetCurrentActCtx(out IntPtr handle);
 
            private const int ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x004;
            private const int ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x008; 
 
            [SuppressMessage("Microsoft.Design", "CA1049:TypesThatOwnNativeResourcesShouldBeDisposable")]
            private struct ACTCTX 
            {
                public int cbSize;
                public uint dwFlags;
                public string lpSource; 
                public ushort wProcessorArchitecture;
                public ushort wLangId; 
                public string lpAssemblyDirectory; 
                [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
                public IntPtr lpResourceName; 
                public string lpApplicationName;
            }
        }
 
        // ClickOnce related interop
        [ 
            StructLayout(LayoutKind.Sequential), 
            System.Security.SuppressUnmanagedCodeSecurityAttribute()
        ] 
        internal class PROCESS_INFORMATION
        {
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
            public IntPtr hProcess = IntPtr.Zero; 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
            public IntPtr hThread = IntPtr.Zero; 
            public int dwProcessId = 0; 
            public int dwThreadId = 0;
 
            // Note this will guarantee we will always free the handles
            // so unless you duplicate the handles from PROCESS_INFORMATION class
            // do not close those handles.
            ~PROCESS_INFORMATION() 
            {
                Close(); 
            } 

            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] 
            internal void Close()
            {
                if (hProcess != (IntPtr)0 && hProcess != (IntPtr)INVALID_HANDLE_VALUE)
                { 
                    CloseHandle(new HandleRef(this, hProcess));
                    hProcess = INVALID_HANDLE_VALUE; 
                } 

                if (hThread != (IntPtr)0 && hThread != (IntPtr)INVALID_HANDLE_VALUE) 
                {
                    CloseHandle(new HandleRef(this, hThread));
                    hThread = INVALID_HANDLE_VALUE;
                } 
            }
 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            private static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
 
            [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
            private static extern bool CloseHandle(HandleRef handle);
        }
 
        [DllImport(ExternDll.Mscorwks, CharSet=CharSet.Unicode, PreserveSig=false, SetLastError=false, BestFitMapping=false, ExactSpelling=true)]
        internal static extern void CorLaunchApplication(UInt32 hostType, 
            string applicationFullName, 
            int manifestPathsCount,
            string[] manifestPaths, 
            int activationDataCount,
            string[] activationData,
            PROCESS_INFORMATION processInformation);
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 
using System.Diagnostics.CodeAnalysis;
using System.Runtime.Versioning; 
 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Boolean,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Boolean,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32[]):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.IntPtr):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Object&):System.Int32")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Object&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.String):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Text.StringBuilder):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMAT2A):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMATA):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMATW):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARRANGE):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+EDITSTREAM):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+EDITSTREAM64):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+FINDTEXT):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+HDLAYOUT&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LOGFONT):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVBKIMAGE):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVCOLUMN):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVCOLUMN_T):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVFINDINFO&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVGROUP):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVHITTESTINFO&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVHITTESTINFO&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVHITTESTINFO):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVITEM&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVTILEVIEWINFO):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVTILEVIEWINFO):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+MCHITTESTINFO):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+MSG):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+MSG):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+PARAFORMAT):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+POINT):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+RECT&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+REPASTESPECIAL):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+SIZE):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+SYSTEMTIME):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+SYSTEMTIMEARRAY):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TBBUTTON&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TBBUTTONINFO&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TCITEM_T):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TEXTRANGE):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TOOLINFO_T):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TOOLINFO_TOOLTIP):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TV_HITTESTINFO):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TV_INSERTSTRUCT&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TV_ITEM&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+GETTEXTLENGTHEX,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Drawing.Rectangle&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+POINT,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.PostMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.IntPtr):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.PostMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.IntPtr):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods..ctor()")]
[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+SMsoComponentManager..ctor()")] 

// Verified that current call stacks that use these don't expose them in an unsafe fashion. 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.ClipCursor(System.Windows.Forms.NativeMethods+COMRECT):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.ClipCursor(System.Windows.Forms.NativeMethods+RECT&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetClientRect(System.Runtime.InteropServices.HandleRef,System.IntPtr):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetProcAddress(System.Runtime.InteropServices.HandleRef,System.String):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetRegionData(System.Runtime.InteropServices.HandleRef,System.Int32,System.IntPtr):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalFree(System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalLock(System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalUnlock(System.Runtime.InteropServices.HandleRef):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IsChild(System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+HDLAYOUT&):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.ImmNotifyIME(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetAncestor(System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetFocus():System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SetFocus(System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(System.Guid&,System.Object,System.Int32,System.Guid&):System.Object")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CoRegisterMessageFilter(System.Runtime.InteropServices.HandleRef,System.IntPtr&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(System.Windows.Forms.NativeMethods+MSG&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.EnableScrollBar(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.EnumThreadWindows(System.Int32,System.Windows.Forms.NativeMethods+EnumThreadWindowsCallback,System.Runtime.InteropServices.HandleRef):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetForegroundWindow():System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMenu(System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMenuItemInfo(System.Runtime.InteropServices.HandleRef,System.Int32,System.Boolean,System.Windows.Forms.NativeMethods+MENUITEMINFO_T_RW):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMessageA(System.Windows.Forms.NativeMethods+MSG&,System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetMessageW(System.Windows.Forms.NativeMethods+MSG&,System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetObject(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+BITMAP):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetShortPathName(System.String,System.String,System.UInt32):System.UInt32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetSystemPowerStatus(System.Windows.Forms.NativeMethods+SYSTEM_POWER_STATUS&):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetTempFileName(System.String,System.String,System.Int32,System.Text.StringBuilder):System.Void")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetWindowText(System.Runtime.InteropServices.HandleRef,System.Text.StringBuilder,System.Int32):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntCloseHandle(System.Runtime.InteropServices.HandleRef):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntCreateCompatibleDC(System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntCreateIC(System.String,System.String,System.String,System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntDuplicateHandle(System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef,System.IntPtr&,System.Int32,System.Boolean,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IntOleInitialize(System.Int32):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.IsDialogMessage(System.Runtime.InteropServices.HandleRef,System.Windows.Forms.NativeMethods+MSG&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.OleUninitialize():System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.PostThreadMessage(System.Int32,System.Int32,System.IntPtr,System.IntPtr):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Object&):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+CHARFORMAT2A):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+EDITSTREAM64):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVBKIMAGE):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVGROUP):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.Boolean")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+LVTILEVIEWINFO):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32,System.Windows.Forms.NativeMethods+TOOLINFO_TOOLTIP):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+GETTEXTLENGTHEX,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SendMessage(System.Runtime.InteropServices.HandleRef,System.Int32,System.Windows.Forms.NativeMethods+POINT,System.Windows.Forms.NativeMethods+LVINSERTMARK):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SystemParametersInfo(System.Int32,System.Int32,System.IntPtr[],System.Int32):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.TranslateMessage(System.Windows.Forms.NativeMethods+MSG&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.WaitMessage():System.Void")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetShortPathName(System.String,System.Text.StringBuilder,System.UInt32):System.UInt32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetWindowLong32(System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GetWindowLongPtr64(System.Runtime.InteropServices.HandleRef,System.Int32):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.OleCreateIPictureIndirect(System.Object,System.Guid&,System.Boolean):System.Windows.Forms.UnsafeNativeMethods+IPicture")] 

// Verified that current call stacks that use this seem to be safe. 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.GetCurrentActCtx(System.IntPtr&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.ActivateActCtx(System.IntPtr,System.IntPtr&):System.Boolean")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.CreateActCtx(System.Windows.Forms.UnsafeNativeMethods+ThemingScope+ACTCTX&):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+ThemingScope.DeactivateActCtx(System.Int32,System.IntPtr):System.Boolean")] 

// SEC 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemory(System.Runtime.InteropServices.HandleRef,System.Runtime.InteropServices.HandleRef,System.Int32):System.Void")] 

// SEC 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalAlloc(System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.GlobalReAlloc(System.Runtime.InteropServices.HandleRef,System.Int32,System.Int32):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemoryW(System.IntPtr,System.String,System.Int32):System.Void")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemoryW(System.IntPtr,System.Char[],System.Int32):System.Void")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemoryA(System.IntPtr,System.String,System.Int32):System.Void")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.CopyMemory(System.IntPtr,System.Byte[],System.Int32):System.Void")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.WideCharToMultiByte(System.Int32,System.Int32,System.String,System.Int32,System.Byte[],System.Int32,System.IntPtr,System.IntPtr):System.Int32")] 

[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SetWindowLongPtr64(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef):System.IntPtr")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SetWindowLongPtr32(System.Runtime.InteropServices.HandleRef,System.Int32,System.Runtime.InteropServices.HandleRef):System.IntPtr")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods.SHLoadIndirectString(System.String,System.Text.StringBuilder,System.UInt32,System.IntPtr):System.UInt32")]

[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+Shell32.SHCreateShellItem(System.IntPtr,System.IntPtr,System.IntPtr,System.Windows.Forms.FileDialogNative+IShellItem&):System.Int32")] 
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+Shell32.SHGetFolderPathExPrivate(System.Guid&,System.UInt32,System.IntPtr,System.Text.StringBuilder,System.UInt32):System.Int32")]
[assembly: SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Scope="member", Target="System.Windows.Forms.UnsafeNativeMethods+Shell32.SHILCreateFromPath(System.String,System.IntPtr&,System.UInt32&):System.Int32")] 
 
namespace System.Windows.Forms {
 
    using Accessibility;
    using System.Runtime.InteropServices;
    using System.Runtime.InteropServices.ComTypes;
    using System.Runtime.ConstrainedExecution; 
    using System;
    using System.Security.Permissions; 
    using System.Collections; 
    using System.IO;
    using System.Text; 
    using System.Security;
    using System.Diagnostics;
    using System.Diagnostics.CodeAnalysis;
    using System.Drawing; 

    using IComDataObject = System.Runtime.InteropServices.ComTypes.IDataObject; 
 
    [
    SuppressUnmanagedCodeSecurity() 
    ]
    internal static class UnsafeNativeMethods {

        [DllImport(ExternDll.Shlwapi, CharSet=CharSet.Unicode, ExactSpelling=true)] 
        internal static extern uint SHLoadIndirectString(string pszSource, StringBuilder pszOutBuf, uint cchOutBuf, IntPtr ppvReserved);
 
        [DllImport(ExternDll.Ole32)] 
        public static extern int ReadClassStg(HandleRef pStg, [In, Out] ref Guid pclsid);
 
        [DllImport(ExternDll.User32)]
        public static extern int GetClassName(HandleRef hwnd, StringBuilder lpClassName, int nMaxCount);

        //SetClassLong won't work correctly for 64-bit: we should use SetClassLongPtr instead.  On 
        //32-bit, SetClassLongPtr is just #defined as SetClassLong.  SetClassLong really should
        //take/return int instead of IntPtr/HandleRef, but since we're running this only for 32-bit 
        //it'll be OK. 
        public static IntPtr SetClassLong(HandleRef hWnd, int nIndex, IntPtr dwNewLong)
        { 
            if (IntPtr.Size == 4)
            {
                return SetClassLongPtr32(hWnd, nIndex, dwNewLong);
            } 
            return SetClassLongPtr64(hWnd, nIndex, dwNewLong);
        } 
        [DllImport(ExternDll.User32, CharSet = System.Runtime.InteropServices.CharSet.Auto, EntryPoint = "SetClassLong")] 
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        public static extern IntPtr SetClassLongPtr32(HandleRef hwnd, int nIndex, IntPtr dwNewLong); 
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
        [DllImport(ExternDll.User32, CharSet = System.Runtime.InteropServices.CharSet.Auto, EntryPoint = "SetClassLongPtr")]
        public static extern IntPtr SetClassLongPtr64(HandleRef hwnd, int nIndex, IntPtr dwNewLong);
 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, PreserveSig=false)]
        public static extern UnsafeNativeMethods.IClassFactory2 CoGetClassObject( 
            [In] 
            ref Guid clsid,
            int dwContext, 
            int serverInfo,
            [In]
            ref Guid refiid);
 
        [return: MarshalAs(UnmanagedType.Interface)][DllImport(ExternDll.Ole32, ExactSpelling=true, PreserveSig=false)]
        public static extern object CoCreateInstance( 
            [In] 
            ref Guid clsid,
            [MarshalAs(UnmanagedType.Interface)] 
            object punkOuter,
            int context,
            [In]
            ref Guid iid); 

        //This marshals differently than NativeMethods.POINTSTRUCT 
        private struct POINTSTRUCT { 
            public int x;
            public int y; 

            public POINTSTRUCT(int x, int y) {
                this.x = x;
                this.y = y; 
            }
        } 
 
        // We need this for Vista specific features/fixes
        private static readonly Version VistaOSVersion = new Version(6, 0); 

        /// 
        /// Used to tell if Vista API's are supported
        ///  
        internal static bool IsVista
        { 
            get 
            {
                OperatingSystem os = Environment.OSVersion; 
                if (os == null)
                    return false;

                return (os.Platform == PlatformID.Win32NT) && 
                       (os.Version.CompareTo(VistaOSVersion) >= 0);
            } 
        } 

        [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] 
        public static extern int GetLocaleInfo(int Locale,int LCType,StringBuilder lpLCData,int cchData) ;

        [DllImport(ExternDll.Ole32)]
        public static extern int WriteClassStm(IStream pStream, ref Guid clsid); 

        [DllImport(ExternDll.Ole32)] 
        public static extern int ReadClassStg(IStorage pStorage, [Out]out Guid clsid); 

        [DllImport(ExternDll.Ole32)] 
        public static extern int ReadClassStm(IStream pStream, [Out]out Guid clsid);

        [DllImport(ExternDll.Ole32)]
        public static extern int OleLoadFromStream(IStream pStorage, ref Guid iid, out IOleObject pObject); 
        [DllImport(ExternDll.Ole32)]
          public static extern int OleSaveToStream(IPersistStream pPersistStream, IStream pStream); 
 
        [DllImport(ExternDll.Ole32)]
        public static extern int CoGetMalloc(int dwReserved, out IMalloc pMalloc); 

        /* Commenting this out until someone actually needs to use it again...
        [DllImport(ExternDll.Ole32)]
          public static extern int OleSetMenuDescriptor(IntPtr hOleMenu, IntPtr hWndFrame, IntPtr hWndActiveObject, IOleInPlaceFrame frame, IOleInPlaceActiveObject activeObject); 
        */
 
        /* Commenting this out until someone actually needs to use it again... 
        [DllImport(ExternDll.Kernel32)]
        public static extern bool IsBadReadPtr(HandleRef ptr, int size); 
        */

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern bool PageSetupDlg([In, Out] NativeMethods.PAGESETUPDLG lppsd); 

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern bool PrintDlg([In, Out] NativeMethods.PRINTDLG lppd); 

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int PrintDlgEx([In, Out] NativeMethods.PRINTDLGEX lppdex);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int OleGetClipboard(ref IComDataObject data);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int OleSetClipboard(IComDataObject pDataObj);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int OleFlushClipboard(); 
        [DllImport(ExternDll.Oleaut32, ExactSpelling=true)]
        public static extern void OleCreatePropertyFrameIndirect(NativeMethods.OCPFIPARAMS p); 
        [DllImport(ExternDll.Oleaut32, EntryPoint = "OleCreateFontIndirect", ExactSpelling = true, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IFont OleCreateIFontIndirect(NativeMethods.FONTDESC fd, ref Guid iid);
        [DllImport(ExternDll.Oleaut32, EntryPoint = "OleCreatePictureIndirect", ExactSpelling = true, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IPicture OleCreateIPictureIndirect([MarshalAs(UnmanagedType.AsAny)]object pictdesc, ref Guid iid, bool fOwn); 
        [DllImport(ExternDll.Oleaut32, EntryPoint = "OleCreatePictureIndirect", ExactSpelling = true, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IPictureDisp OleCreateIPictureDispIndirect([MarshalAs(UnmanagedType.AsAny)] object pictdesc, ref Guid iid, bool fOwn); 
        // cpb: #8309 -- next two methods, refiid arg must be IPicture.iid 
        [DllImport(ExternDll.Oleaut32, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IPicture OleCreatePictureIndirect(NativeMethods.PICTDESC pictdesc, [In]ref Guid refiid, bool fOwn); 
        [DllImport(ExternDll.Oleaut32, PreserveSig = false)]
        public static extern UnsafeNativeMethods.IFont OleCreateFontIndirect(NativeMethods.tagFONTDESC fontdesc, [In]ref Guid refiid);
        [DllImport(ExternDll.Oleaut32, ExactSpelling = true)]
        public static extern int VarFormat(ref object pvarIn, HandleRef pstrFormat, int iFirstDay, int iFirstWeek, uint dwFlags, [In, Out]ref IntPtr pbstr); 
        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)]
        public static extern int DragQueryFile(HandleRef hDrop, int iFile, StringBuilder lpszFile, int cch); 
        [DllImport(ExternDll.User32, ExactSpelling=true)] 
        public static extern bool EnumChildWindows(HandleRef hwndParent, NativeMethods.EnumChildrenCallback lpEnumFunc, HandleRef lParam);
        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)] 
        public static extern IntPtr ShellExecute(HandleRef hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto, EntryPoint="ShellExecute", BestFitMapping = false)]
        public static extern IntPtr ShellExecute_NoBFM(HandleRef hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern int SetScrollPos(HandleRef hWnd, int nBar, int nPos, bool bRedraw);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern bool EnableScrollBar(HandleRef hWnd, int nBar, int value); 

        [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)] 
        public static extern int Shell_NotifyIcon(int message, NativeMethods.NOTIFYICONDATA pnid);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static bool InsertMenuItem(HandleRef hMenu, int uItem, bool fByPosition, NativeMethods.MENUITEMINFO_T lpmii);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr  GetMenu(HandleRef hWnd);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool GetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, [In, Out] NativeMethods.MENUITEMINFO_T lpmii); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool GetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, [In, Out] NativeMethods.MENUITEMINFO_T_RW lpmii); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static bool SetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, NativeMethods.MENUITEMINFO_T lpmii);
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="CreateMenu", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateMenu(); 
        public static IntPtr CreateMenu() {
            return System.Internal.HandleCollector.Add(IntCreateMenu(), NativeMethods.CommonHandles.Menu); 
        } 

        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern bool GetOpenFileName([In, Out] NativeMethods.OPENFILENAME_I ofn);

        [DllImport(ExternDll.User32, ExactSpelling=true)]
        public static extern bool EndDialog(HandleRef hWnd, IntPtr result); 

        public const int MB_PRECOMPOSED = 0x00000001; 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Unicode, SetLastError=true)] 
        public static extern int MultiByteToWideChar(int CodePage, int dwFlags, byte[] lpMultiByteStr, int cchMultiByte, char[] lpWideCharStr, int cchWideChar);
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Unicode)] 
        public static extern int WideCharToMultiByte(int codePage, int flags, [MarshalAs(UnmanagedType.LPWStr)]string wideStr, int chars, [In,Out]byte[] pOutBytes, int bufferBytes, IntPtr defaultChar, IntPtr pDefaultUsed);

        [DllImport(ExternDll.Kernel32, SetLastError=true, ExactSpelling=true, EntryPoint="RtlMoveMemory", CharSet=CharSet.Auto)]
        public static extern void CopyMemory(HandleRef destData, HandleRef srcData, int size); 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, EntryPoint="RtlMoveMemory")]
        public static extern void CopyMemory(IntPtr pdst, byte[] psrc, int cb); 
 
        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Unicode)]
        public static extern void CopyMemoryW(IntPtr pdst, string psrc, int cb); 
        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Unicode)]
        public static extern void CopyMemoryW(IntPtr pdst, char[] psrc, int cb);

        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Ansi)] 
        public static extern void CopyMemoryA(IntPtr pdst, string psrc, int cb);
        [DllImport(ExternDll.Kernel32, ExactSpelling = true, EntryPoint = "RtlMoveMemory", CharSet = CharSet.Ansi)] 
        public static extern void CopyMemoryA(IntPtr pdst, char[] psrc, int cb); 

 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, EntryPoint="DuplicateHandle", SetLastError=true)]
        private static extern IntPtr IntDuplicateHandle(HandleRef processSource, HandleRef handleSource, HandleRef processTarget, ref IntPtr handleTarget, int desiredAccess, bool inheritHandle, int options);
        public static IntPtr DuplicateHandle(HandleRef processSource, HandleRef handleSource, HandleRef processTarget, ref IntPtr handleTarget, int desiredAccess, bool inheritHandle, int options) {
            IntPtr ret = IntDuplicateHandle(processSource, handleSource, processTarget, ref handleTarget, 
                                         desiredAccess, inheritHandle, options);
            System.Internal.HandleCollector.Add(handleTarget, NativeMethods.CommonHandles.Kernel); 
            return ret; 
        }
 
        [DllImport(ExternDll.Ole32, PreserveSig=false)]
        public static extern UnsafeNativeMethods.IStorage StgOpenStorageOnILockBytes(UnsafeNativeMethods.ILockBytes iLockBytes, UnsafeNativeMethods.IStorage pStgPriority, int grfMode, int sndExcluded, int reserved);
        [DllImport(ExternDll.Ole32, PreserveSig=false)]
        public static extern IntPtr GetHGlobalFromILockBytes(UnsafeNativeMethods.ILockBytes pLkbyt); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SetWindowsHookEx(int hookid, NativeMethods.HookProc pfnhook, HandleRef hinst, int threadid); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetKeyboardState(byte [] keystate);
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="keybd_event", CharSet=CharSet.Auto)] 
        public static extern void Keybd_event(byte vk, byte scan, int flags, int extrainfo);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int SetKeyboardState(byte [] keystate);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool UnhookWindowsHookEx(HandleRef hhook);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern short GetAsyncKeyState(int vkey); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr CallNextHookEx(HandleRef hhook, int code, IntPtr wparam, IntPtr lparam); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int ScreenToClient( HandleRef hWnd, [In, Out] NativeMethods.POINT pt );
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        public static extern int GetModuleFileName(HandleRef hModule, StringBuilder buffer, int length); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool IsDialogMessage(HandleRef hWndDlg, [In, Out] ref NativeMethods.MSG msg); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool TranslateMessage([In, Out] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr DispatchMessage([In] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Ansi)]
        public static extern IntPtr DispatchMessageA([In] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Unicode)] 
        public static extern IntPtr DispatchMessageW([In] ref NativeMethods.MSG msg);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int PostThreadMessage(int id, int msg, IntPtr wparam, IntPtr lparam); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true)]
        public static extern int CoRegisterMessageFilter(HandleRef newFilter, ref IntPtr oldMsgFilter); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, EntryPoint="OleInitialize", SetLastError=true)]
        private static extern int IntOleInitialize(int val);
        public static int OleInitialize() {
            return IntOleInitialize(0); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public extern static bool EnumThreadWindows(int dwThreadId, NativeMethods.EnumThreadWindowsCallback lpfn, HandleRef lParam);
        [return:MarshalAs(UnmanagedType.Bool)] [DllImport(ExternDll.Kernel32)] 
        public extern static bool GetExitCodeThread(IntPtr hThread, out uint lpExitCode);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendDlgItemMessage(HandleRef hDlg, int nIDDlgItem, int Msg, IntPtr wParam, IntPtr lParam);
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern int OleUninitialize();
        [DllImport(ExternDll.Comdlg32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern bool GetSaveFileName([In, Out] NativeMethods.OPENFILENAME_I ofn); 
        [DllImport(ExternDll.User32, EntryPoint="ChildWindowFromPointEx", ExactSpelling=true, CharSet=CharSet.Auto)]
        private static extern IntPtr _ChildWindowFromPointEx(HandleRef hwndParent, POINTSTRUCT pt, int uFlags); 
        public static IntPtr ChildWindowFromPointEx(HandleRef hwndParent, int x, int y, int uFlags) {
            POINTSTRUCT ps = new POINTSTRUCT(x, y);
            return _ChildWindowFromPointEx(hwndParent, ps, uFlags);
        } 
        [DllImport(ExternDll.Kernel32, EntryPoint="CloseHandle", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
        private static extern bool IntCloseHandle(HandleRef handle); 
        public static bool CloseHandle(HandleRef handle) { 
            System.Internal.HandleCollector.Remove((IntPtr)handle, NativeMethods.CommonHandles.Kernel);
            return IntCloseHandle(handle); 
        }

        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, EntryPoint="CreateCompatibleDC", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateCompatibleDC(HandleRef hDC); 
        public static IntPtr CreateCompatibleDC(HandleRef hDC) {
            return System.Internal.HandleCollector.Add(IntCreateCompatibleDC(hDC), NativeMethods.CommonHandles.CompatibleHDC); 
        } 

        #region SendKeys SendInput functionality 

        [DllImport(ExternDll.User32, ExactSpelling = true, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool BlockInput([In, MarshalAs(UnmanagedType.Bool)] bool fBlockIt); 

        [DllImport(ExternDll.User32, ExactSpelling = true, SetLastError=true, CharSet = CharSet.Auto)] 
        public static extern uint SendInput(uint nInputs, NativeMethods.INPUT[] pInputs, int cbSize); 

        #endregion 

        /*
        [DllImport(ExternDll.Kernel32, EntryPoint = "CreateFileMapping", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr IntCreateFileMapping(HandleRef hFile, IntPtr lpAttributes, int flProtect, int dwMaxSizeHi, int dwMaxSizeLow, string lpName); 
        public static IntPtr CreateFileMapping(HandleRef hFile, IntPtr lpAttributes, int flProtect, int dwMaxSizeHi, int dwMaxSizeLow, string lpName) {
            return System.Internal.HandleCollector.Add(IntCreateFileMapping(hFile, lpAttributes, flProtect, dwMaxSizeHi, dwMaxSizeLow, lpName), NativeMethods.CommonHandles.Kernel); 
        } 

        [DllImport(ExternDll.Kernel32, EntryPoint = "OpenFileMapping", CharSet = CharSet.Auto, SetLastError = true)] 
        private static extern IntPtr IntOpenFileMapping(int dwDesiredAccess, bool bInheritHandle, string lpName);
        public static IntPtr OpenFileMapping(int dwDesiredAccess, bool bInheritHandle, string lpName) {
            return System.Internal.HandleCollector.Add(IntOpenFileMapping(dwDesiredAccess, bInheritHandle, lpName), NativeMethods.CommonHandles.Kernel);
        } 
*/
 
        [DllImport(ExternDll.Kernel32, EntryPoint = "MapViewOfFile", ExactSpelling = true, CharSet = CharSet.Auto, SetLastError = true)] 
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        private static extern IntPtr IntMapViewOfFile(HandleRef hFileMapping, int dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfBytesToMap); 
        public static IntPtr MapViewOfFile(HandleRef hFileMapping, int dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfBytesToMap) {
            return System.Internal.HandleCollector.Add(IntMapViewOfFile(hFileMapping, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap), NativeMethods.CommonHandles.Kernel);
        }
 
        [DllImport(ExternDll.Kernel32, EntryPoint = "UnmapViewOfFile", ExactSpelling = true, CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool IntUnmapViewOfFile(HandleRef pvBaseAddress); 
        public static bool UnmapViewOfFile(HandleRef pvBaseAddress) { 
            System.Internal.HandleCollector.Remove((IntPtr)pvBaseAddress, NativeMethods.CommonHandles.Kernel);
            return IntUnmapViewOfFile(pvBaseAddress); 
        }

        [DllImport(ExternDll.User32, ExactSpelling = true, EntryPoint = "GetDCEx", CharSet = CharSet.Auto)]
        private static extern IntPtr IntGetDCEx(HandleRef hWnd, HandleRef hrgnClip, int flags); 
        public static IntPtr GetDCEx(HandleRef hWnd, HandleRef hrgnClip, int flags) {
            return System.Internal.HandleCollector.Add(IntGetDCEx(hWnd, hrgnClip, flags), NativeMethods.CommonHandles.HDC); 
        } 

        // GetObject stuff 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.BITMAP bm);

        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.LOGPEN lp);
        public static int GetObject(HandleRef hObject, NativeMethods.LOGPEN lp) { 
            return GetObject(hObject, Marshal.SizeOf(typeof(NativeMethods.LOGPEN)), lp); 
        }
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.LOGBRUSH lb);
        public static int GetObject(HandleRef hObject, NativeMethods.LOGBRUSH lb) {
            return GetObject(hObject, Marshal.SizeOf(typeof(NativeMethods.LOGBRUSH)), lb); 
        }
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int GetObject(HandleRef hObject, int nSize, [In, Out] NativeMethods.LOGFONT lf);
        public static int GetObject(HandleRef hObject, NativeMethods.LOGFONT lp) { 
            return GetObject(hObject, Marshal.SizeOf(typeof(NativeMethods.LOGFONT)), lp);
        }

        //HPALETTE 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)]
        public static extern int GetObject(HandleRef hObject, int nSize, ref int nEntries); 
        [DllImport(ExternDll.Gdi32, SetLastError=true, CharSet=CharSet.Auto)] 
        public static extern int GetObject(HandleRef hObject, int nSize, int[] nEntries);
        [DllImport(ExternDll.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] 
        public static extern int GetObjectType(HandleRef hObject);

        [DllImport(ExternDll.User32, EntryPoint="CreateAcceleratorTable", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateAcceleratorTable(/*ACCEL*/ HandleRef pentries, int cCount); 
        public static IntPtr CreateAcceleratorTable(/*ACCEL*/ HandleRef pentries, int cCount) {
            return System.Internal.HandleCollector.Add(IntCreateAcceleratorTable(pentries, cCount), NativeMethods.CommonHandles.Accelerator); 
        } 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyAcceleratorTable", CharSet=CharSet.Auto)]
        private static extern bool IntDestroyAcceleratorTable(HandleRef hAccel); 
        public static bool DestroyAcceleratorTable(HandleRef hAccel) {
            System.Internal.HandleCollector.Remove((IntPtr)hAccel, NativeMethods.CommonHandles.Accelerator);
            return IntDestroyAcceleratorTable(hAccel);
        } 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern short VkKeyScan(char key); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetCapture(); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetCapture(HandleRef hwnd);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        [ResourceExposure(ResourceScope.None)] 
        public static extern IntPtr GetFocus();
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool GetCursorPos([In, Out] NativeMethods.POINT pt); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern short GetKeyState(int keyCode); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        [SuppressMessage("Microsoft.Security", "CA2101:SpecifyMarshalingForPInvokeStringArguments")]
        public static extern uint GetShortPathName(string lpszLongPath, StringBuilder lpszShortPath, uint cchBuffer);
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="SetWindowRgn", CharSet=CharSet.Auto)] 
        private static extern int IntSetWindowRgn(HandleRef hwnd, HandleRef hrgn, bool fRedraw);
        public static int SetWindowRgn(HandleRef hwnd, HandleRef hrgn, bool fRedraw) { 
            int retval = IntSetWindowRgn(hwnd, hrgn, fRedraw); 
            if (retval != 0) {
                // we do this because after a SetWindowRgn call, the system owns the region 
                // so we don't need to bother cleaning it up.
                //
                System.Internal.HandleCollector.Remove((IntPtr)hrgn, NativeMethods.CommonHandles.GDI);
            } 
            return retval;
        } 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int GetWindowText(HandleRef hWnd, StringBuilder lpString, int nMaxCount);
 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        public static extern void GetTempFileName(string tempDirName, string prefixName, int unique, StringBuilder sb);
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SetWindowText(HandleRef hWnd, string text); 
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalAlloc(int uFlags, int dwBytes); 

        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalReAlloc(HandleRef handle, int bytes, int flags);
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalLock(HandleRef handle); 
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GlobalUnlock(HandleRef handle); 

        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GlobalFree(HandleRef handle);
 
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int GlobalSize(HandleRef handle); 
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmSetConversionStatus(HandleRef hIMC, int conversion, int sentence); 

        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmGetConversionStatus(HandleRef hIMC, ref int conversion, ref int sentence);
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern IntPtr ImmGetContext(HandleRef hWnd); 
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmReleaseContext(HandleRef hWnd, HandleRef hIMC); 

        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern IntPtr ImmAssociateContext(HandleRef hWnd, HandleRef hIMC);
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmDestroyContext(HandleRef hIMC); 
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern IntPtr ImmCreateContext(); 

        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmSetOpenStatus(HandleRef hIMC, bool open);
 
        [DllImport(ExternDll.Imm32, CharSet=CharSet.Auto)]
        public static extern bool ImmGetOpenStatus(HandleRef hIMC); 
 
        [DllImport(ExternDll.Imm32, CharSet = CharSet.Auto)]
        public static extern bool ImmNotifyIME(HandleRef hIMC, int dwAction, int dwIndex, int dwValue); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetFocus(HandleRef hWnd);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetParent(HandleRef hWnd); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetAncestor(HandleRef hWnd, int flags); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool IsChild(HandleRef hWndParent, HandleRef hwnd);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")] 
        public static extern bool IsZoomed(HandleRef hWnd); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr FindWindow(string className, string windowName);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int MapWindowPoints(HandleRef hWndFrom, HandleRef hWndTo, [In, Out] ref NativeMethods.RECT rect, int cPoints); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int MapWindowPoints(HandleRef hWndFrom, HandleRef hWndTo, [In, Out] NativeMethods.POINT pt, int cPoints); 

        [DllImport(ExternDll.User32, CharSet = CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, bool wParam, int lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, int[] lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int[] wParam, int[] lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, ref int wParam, ref int lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, string lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, IntPtr wParam, string lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, StringBuilder lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TOOLINFO_T lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TOOLINFO_TOOLTIP lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TBBUTTON lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TBBUTTONINFO lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TV_ITEM lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.TV_INSERTSTRUCT lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TV_HITTESTINFO lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVBKIMAGE lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.LVHITTESTINFO lParam);

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TCITEM_T lParam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref NativeMethods.HDLAYOUT hdlayout); 

        //for Tooltips 
        //
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, HandleRef wParam, int lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, HandleRef lParam);
 
 
        // For RichTextBox
        // 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.PARAFORMAT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.CHARFORMATA lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.CHARFORMAT2A lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out, MarshalAs(UnmanagedType.LPStruct)] NativeMethods.CHARFORMATW lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern int SendMessage(HandleRef hWnd, int msg, int wParam, [Out, MarshalAs(UnmanagedType.IUnknown)]out object editOle);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.CHARRANGE lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.FINDTEXT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.TEXTRANGE lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.POINT lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, NativeMethods.POINT wParam, int lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.REPASTESPECIAL lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.EDITSTREAM lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.EDITSTREAM64 lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, NativeMethods.GETTEXTLENGTHEX wParam, int lParam);

        // For Button
        // 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] NativeMethods.SIZE lParam); 
 
        // For ListView
        // 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] ref NativeMethods.LVFINDINFO lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVHITTESTINFO lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVCOLUMN_T lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] ref NativeMethods.LVITEM lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVCOLUMN lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVGROUP lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, NativeMethods.POINT wParam, [In, Out] NativeMethods.LVINSERTMARK lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.LVINSERTMARK lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] NativeMethods.LVTILEVIEWINFO lParam); 

        // For MonthCalendar
        //
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.MCHITTESTINFO lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.SYSTEMTIME lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.SYSTEMTIMEARRAY lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, [In, Out] NativeMethods.LOGFONT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, NativeMethods.MSG lParam); 
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, int lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr SendMessage(HandleRef hWnd, int msg, IntPtr wParam, IntPtr lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, IntPtr wParam, [In, Out] ref NativeMethods.RECT lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, ref short wParam, ref short lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, [In, Out, MarshalAs(UnmanagedType.Bool)] ref bool wParam, IntPtr lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, int wParam, IntPtr lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, int wParam, [In, Out] ref NativeMethods.RECT lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, int wParam, [In, Out] ref Rectangle lParam);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public extern static IntPtr SendMessage(HandleRef hWnd, int Msg, IntPtr wParam, NativeMethods.ListViewCompareCallback pfnCompare); 

        [DllImport(ExternDll.User32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] 
        public static extern IntPtr SendMessageTimeout(HandleRef hWnd, int msg, IntPtr wParam, IntPtr lParam, int flags, int timeout, out IntPtr pdwResult); 

        public const int SMTO_ABORTIFHUNG = 0x0002; 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetParent(HandleRef hWnd, HandleRef hWndParent);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool GetWindowRect(HandleRef hWnd, [In, Out] ref NativeMethods.RECT rect);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr GetWindow(HandleRef hWnd, int uCmd); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetDlgItem(HandleRef hWnd, int nIDDlgItem); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        public static extern IntPtr GetModuleHandle(string modName);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr DefWindowProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr DefMDIChildProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg,
                                                IntPtr wParam, IntPtr lParam); 

/*
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr GetProp(HandleRef hWnd, int atom); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr GetProp(HandleRef hWnd, string name); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr RemoveProp(HandleRef hWnd, short atom);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern IntPtr RemoveProp(HandleRef hWnd, string propName);
   */
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern short GlobalDeleteAtom(short atom); 

        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Ansi)] 
        public static extern IntPtr GetProcAddress(HandleRef hModule, string lpProcName); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool GetClassInfo(HandleRef hInst, string lpszClass, [In, Out] NativeMethods.WNDCLASS_I wc);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool GetClassInfo(HandleRef hInst, string lpszClass, IntPtr h);
/* 
        [DllImport(ExternDll.Shfolder, CharSet=CharSet.Auto)]
        public static extern int SHGetFolderPath(HandleRef hwndOwner, int nFolder, HandleRef hToken, int dwFlags, StringBuilder lpszPath); 
*/ 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int GetSystemMetrics(int nIndex); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref NativeMethods.RECT rc, int nUpdate);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref int value, int ignore); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref bool value, int ignore); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, ref NativeMethods.HIGHCONTRAST_I rc, int nUpdate);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] NativeMethods.NONCLIENTMETRICS metrics, int nUpdate);
/*
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] NativeMethods.ICONMETRICS iconMetrics, int nUpdate); 
*/
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] NativeMethods.LOGFONT font, int nUpdate); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SystemParametersInfo(int nAction, int nParam, bool [] flag, bool nUpdate); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)]
        public static extern bool GetComputerName(StringBuilder lpBuffer, int[] nSize);
        [DllImport(ExternDll.Advapi32, CharSet=CharSet.Auto)]
        public static extern bool GetUserName(StringBuilder lpBuffer, int[] nSize); 
        [DllImport(ExternDll.User32, ExactSpelling=true)]
        public static extern IntPtr GetProcessWindowStation(); 
        [DllImport(ExternDll.User32, SetLastError=true)] 
        public static extern bool GetUserObjectInformation(HandleRef hObj, int nIndex, [MarshalAs(UnmanagedType.LPStruct)] NativeMethods.USEROBJECTFLAGS pvBuffer, int nLength, ref int lpnLengthNeeded);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int ClientToScreen( HandleRef hWnd, [In, Out] NativeMethods.POINT pt );
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetForegroundWindow();
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int MsgWaitForMultipleObjectsEx(int nCount, IntPtr pHandles, int dwMilliseconds, int dwWakeMask, int dwFlags);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr GetDesktopWindow(); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int RegisterDragDrop(HandleRef hwnd, UnsafeNativeMethods.IOleDropTarget target); 
        [DllImport(ExternDll.Ole32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int RevokeDragDrop(HandleRef hwnd);
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool PeekMessage([In, Out] ref NativeMethods.MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Unicode)]
        public static extern bool PeekMessageW([In, Out] ref NativeMethods.MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Ansi)] 
        public static extern bool PeekMessageA([In, Out] ref NativeMethods.MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove);
 
/*
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto),
         SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        public static extern bool SetProp(HandleRef hWnd, int atom, HandleRef data); 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool SetProp(HandleRef hWnd, string propName, HandleRef data); 
*/ 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern bool PostMessage(HandleRef hwnd, int msg, IntPtr wparam, IntPtr lparam); 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern short GlobalAddAtom(string atomName);
        [DllImport(ExternDll.Oleacc, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr LresultFromObject(ref Guid refiid, IntPtr wParam, HandleRef pAcc); 
        [DllImport(ExternDll.Oleacc, ExactSpelling=true, CharSet=System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int CreateStdAccessibleObject(HandleRef hWnd, int objID, ref Guid refiid, [In, Out, MarshalAs(UnmanagedType.Interface)] ref object pAcc); 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern void NotifyWinEvent(int winEvent, HandleRef hwnd, int objType, int objID);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetMenuItemID(HandleRef hMenu, int nPos);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetSubMenu(HandleRef hwnd, int index);
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetMenuItemCount(HandleRef hMenu);
        [DllImport(ExternDll.Oleaut32, PreserveSig=false)] 
        public static extern void GetErrorInfo(int reserved, [In, Out] ref UnsafeNativeMethods.IErrorInfo errorInfo); 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="BeginPaint", CharSet=CharSet.Auto)]
 
        private static extern IntPtr IntBeginPaint(HandleRef hWnd, [In, Out] ref NativeMethods.PAINTSTRUCT lpPaint);
        public static IntPtr BeginPaint(HandleRef hWnd, [In, Out, MarshalAs(UnmanagedType.LPStruct)] ref NativeMethods.PAINTSTRUCT lpPaint) {
            return System.Internal.HandleCollector.Add(IntBeginPaint(hWnd, ref lpPaint), NativeMethods.CommonHandles.HDC);
        } 

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="EndPaint", CharSet=CharSet.Auto)] 
        private static extern bool IntEndPaint(HandleRef hWnd, ref NativeMethods.PAINTSTRUCT lpPaint); 
        public static bool EndPaint(HandleRef hWnd, [In, MarshalAs(UnmanagedType.LPStruct)] ref NativeMethods.PAINTSTRUCT lpPaint) {
            System.Internal.HandleCollector.Remove(lpPaint.hdc, NativeMethods.CommonHandles.HDC); 
            return IntEndPaint(hWnd, ref lpPaint);
        }

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="GetDC", CharSet=CharSet.Auto)] 
        private static extern IntPtr IntGetDC(HandleRef hWnd);
        public static IntPtr GetDC(HandleRef hWnd) { 
            return System.Internal.HandleCollector.Add(IntGetDC(hWnd), NativeMethods.CommonHandles.HDC); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="GetWindowDC", CharSet=CharSet.Auto)]
        private static extern IntPtr IntGetWindowDC(HandleRef hWnd);
        public static IntPtr GetWindowDC(HandleRef hWnd) {
            return System.Internal.HandleCollector.Add(IntGetWindowDC(hWnd), NativeMethods.CommonHandles.HDC); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="ReleaseDC", CharSet=CharSet.Auto)] 
        private static extern int IntReleaseDC(HandleRef hWnd, HandleRef hDC);
        public static int ReleaseDC(HandleRef hWnd, HandleRef hDC) { 
            System.Internal.HandleCollector.Remove((IntPtr)hDC, NativeMethods.CommonHandles.HDC);
            return IntReleaseDC(hWnd, hDC);
        }
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, EntryPoint="CreateDC", CharSet=CharSet.Auto)]
        private static extern IntPtr IntCreateDC(string lpszDriver, string lpszDeviceName, string lpszOutput, HandleRef devMode); 
 
        public static IntPtr CreateDC(string lpszDriver) {
            return System.Internal.HandleCollector.Add(IntCreateDC(lpszDriver, null, null, NativeMethods.NullHandleRef), NativeMethods.CommonHandles.HDC); 
        }
        public static IntPtr CreateDC(string lpszDriverName, string lpszDeviceName, string lpszOutput, HandleRef /*DEVMODE*/ lpInitData) {
            return System.Internal.HandleCollector.Add(IntCreateDC(lpszDriverName, lpszDeviceName, lpszOutput, lpInitData), NativeMethods.CommonHandles.HDC);
        } 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)] 
        public static extern bool SystemParametersInfo(int nAction, int nParam, [In, Out] IntPtr[] rc, int nUpdate); 

        [DllImport(ExternDll.User32, EntryPoint="SendMessage", CharSet=CharSet.Auto)] 
        //public extern static IntPtr SendCallbackMessage(HandleRef hWnd, int Msg, IntPtr wParam, UnsafeNativeMethods.IRichTextBoxOleCallback lParam);
        public extern static IntPtr SendCallbackMessage(HandleRef hWnd, int Msg, IntPtr wParam, IntPtr lParam);

        [DllImport(ExternDll.Shell32, ExactSpelling=true, CharSet=CharSet.Ansi)] 
        public static extern void DragAcceptFiles(HandleRef hWnd, bool fAccept);
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int GetDeviceCaps(HandleRef hDC, int nIndex);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GetScrollInfo(HandleRef hWnd, int fnBar, NativeMethods.SCROLLINFO si);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern int SetScrollInfo(HandleRef hWnd, int fnBar, NativeMethods.SCROLLINFO si, bool redraw);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr GetActiveWindow();
 
        [DllImport(ExternDll.Mscoree, ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
        public static extern int LoadLibraryShim(string dllName, string version, IntPtr reserved, out IntPtr dllModule);

        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto, SetLastError=true)] 
        public static extern IntPtr LoadLibrary(string libname);
 
        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)] 
        public static extern bool FreeLibrary(HandleRef hModule);
 
        /* Not used.

        [DllImport(ExternDll.User32, SetLastError = true, CharSet=CharSet.Auto)]
        public static extern bool LoadString(HandleRef hInstance, int uID, StringBuilder lpBuffer, int nBufferMax ); 

        [DllImport(ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)] 
        public static extern bool SetDllDirectory(string lpPathName); 

        [DllImport(ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)] 
        public static extern int GetWindowsDirectory(StringBuilder lpBuffer, int uSize);

        [DllImport(ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)]
        public static extern int GetDllDirectory(int nBufferLength, StringBuilder lpPathName); 
        */
 
        //GetWindowLong won't work correctly for 64-bit: we should use GetWindowLongPtr instead.  On 
        //32-bit, GetWindowLongPtr is just #defined as GetWindowLong.  GetWindowLong really should
        //take/return int instead of IntPtr/HandleRef, but since we're running this only for 32-bit 
        //it'll be OK.
        public static IntPtr GetWindowLong(HandleRef hWnd, int nIndex)
        {
            if (IntPtr.Size == 4) 
            {
                return GetWindowLong32(hWnd, nIndex); 
            } 
            return GetWindowLongPtr64(hWnd, nIndex);
        } 
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "GetWindowLong")]
        public static extern IntPtr GetWindowLong32(HandleRef hWnd, int nIndex);
 
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "GetWindowLongPtr")] 
        public static extern IntPtr GetWindowLongPtr64(HandleRef hWnd, int nIndex); 

        //SetWindowLong won't work correctly for 64-bit: we should use SetWindowLongPtr instead.  On 
        //32-bit, SetWindowLongPtr is just #defined as SetWindowLong.  SetWindowLong really should
        //take/return int instead of IntPtr/HandleRef, but since we're running this only for 32-bit
        //it'll be OK.
        public static IntPtr SetWindowLong(HandleRef hWnd, int nIndex, HandleRef dwNewLong) 
        {
            if (IntPtr.Size == 4) 
            { 
                return SetWindowLongPtr32(hWnd, nIndex, dwNewLong);
            } 
            return SetWindowLongPtr64(hWnd, nIndex, dwNewLong);
        }
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLong")] 
        public static extern IntPtr SetWindowLongPtr32(HandleRef hWnd, int nIndex, HandleRef dwNewLong);
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")] 
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLongPtr")] 
        public static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, HandleRef dwNewLong);
 
        public static IntPtr SetWindowLong(HandleRef hWnd, int nIndex, NativeMethods.WndProc wndproc)
        {
            if (IntPtr.Size == 4)
            { 
                return SetWindowLongPtr32(hWnd, nIndex, wndproc);
            } 
            return SetWindowLongPtr64(hWnd, nIndex, wndproc); 
        }
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable")] 
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLong")]
        public static extern IntPtr SetWindowLongPtr32(HandleRef hWnd, int nIndex, NativeMethods.WndProc wndproc);
        [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
        [DllImport(ExternDll.User32, CharSet = CharSet.Auto, EntryPoint = "SetWindowLongPtr")] 
        public static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, NativeMethods.WndProc wndproc);
 
        [DllImport(ExternDll.Ole32, PreserveSig = false)] 

        public static extern UnsafeNativeMethods.ILockBytes CreateILockBytesOnHGlobal(HandleRef hGlobal, bool fDeleteOnRelease); 
        [DllImport(ExternDll.Ole32, PreserveSig=false)]
        public static extern UnsafeNativeMethods.IStorage StgCreateDocfileOnILockBytes(UnsafeNativeMethods.ILockBytes iLockBytes, int grfMode, int reserved);

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="CreatePopupMenu", CharSet=CharSet.Auto)] 
        private static extern IntPtr IntCreatePopupMenu();
        public static IntPtr CreatePopupMenu() { 
            return System.Internal.HandleCollector.Add(IntCreatePopupMenu(), NativeMethods.CommonHandles.Menu); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool RemoveMenu(HandleRef hMenu, int uPosition, int uFlags);

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyMenu", CharSet=CharSet.Auto)] 
        private static extern bool IntDestroyMenu(HandleRef hMenu);
        public static bool DestroyMenu(HandleRef hMenu) { 
            System.Internal.HandleCollector.Remove((IntPtr)hMenu, NativeMethods.CommonHandles.Menu); 
            return IntDestroyMenu(hMenu);
        } 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool SetForegroundWindow(HandleRef hWnd);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetSystemMenu(HandleRef hWnd, bool bRevert); 
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr DefFrameProc(IntPtr hWnd, IntPtr hWndClient, int msg, IntPtr wParam, IntPtr lParam); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool TranslateMDISysAccel(IntPtr hWndClient, [In, Out] ref NativeMethods.MSG msg);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern bool SetLayeredWindowAttributes(HandleRef hwnd, int crKey, byte bAlpha, int dwFlags); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public extern static bool SetMenu(HandleRef hWnd, HandleRef hMenu); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern int GetWindowPlacement(HandleRef hWnd, ref NativeMethods.WINDOWPLACEMENT placement);
 

        [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto)] 
        public static extern void GetStartupInfo([In, Out] NativeMethods.STARTUPINFO_I startupinfo_i); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool SetMenuDefaultItem(HandleRef hwnd, int nIndex, bool pos);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool EnableMenuItem(HandleRef hMenu, int UIDEnabledItem, int uEnable); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern IntPtr SetActiveWindow(HandleRef hWnd); 

        [DllImport(ExternDll.Gdi32, SetLastError=true, EntryPoint="CreateIC", CharSet=System.Runtime.InteropServices.CharSet.Auto)] 
        private static extern IntPtr IntCreateIC(string lpszDriverName, string lpszDeviceName, string lpszOutput, HandleRef /*DEVMODE*/ lpInitData);
        public static IntPtr CreateIC(string lpszDriverName, string lpszDeviceName, string lpszOutput, HandleRef /*DEVMODE*/ lpInitData) {
            return System.Internal.HandleCollector.Add(IntCreateIC(lpszDriverName, lpszDeviceName, lpszOutput, lpInitData), NativeMethods.CommonHandles.HDC);
        } 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool ClipCursor(ref NativeMethods.RECT rcClip); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool ClipCursor(NativeMethods.COMRECT rcClip);

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr SetCursor(HandleRef hcursor); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool SetCursorPos(int x, int y); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public extern static int ShowCursor(bool bShow);

        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyCursor", CharSet=CharSet.Auto)]
        private static extern bool IntDestroyCursor(HandleRef hCurs); 
        public static bool DestroyCursor(HandleRef hCurs) {
            System.Internal.HandleCollector.Remove((IntPtr)hCurs, NativeMethods.CommonHandles.Cursor); 
            return IntDestroyCursor(hCurs); 
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool IsWindow(HandleRef hWnd);

        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, EntryPoint="DeleteDC", CharSet=CharSet.Auto)] 
        private static extern bool IntDeleteDC(HandleRef hDC);
        public static bool DeleteDC(HandleRef hDC) { 
            System.Internal.HandleCollector.Remove((IntPtr)hDC, NativeMethods.CommonHandles.HDC); 
            return IntDeleteDC(hDC);
        } 

        public static bool DeleteCompatibleDC(HandleRef hDC)
        {
            System.Internal.HandleCollector.Remove((IntPtr)hDC, NativeMethods.CommonHandles.CompatibleHDC); 
            return IntDeleteDC(hDC);
        } 
 
        public const int LAYOUT_RTL = 0x00000001;
        public const int LAYOUT_BITMAPORIENTATIONPRESERVED = 0x00000008; 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Ansi)]
        public static extern bool GetMessageA([In, Out] ref NativeMethods.MSG msg, HandleRef hWnd, int uMsgFilterMin, int uMsgFilterMax);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Unicode)]
        public static extern bool GetMessageW([In, Out] ref NativeMethods.MSG msg, HandleRef hWnd, int uMsgFilterMin, int uMsgFilterMax); 
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr PostMessage(HandleRef hwnd, int msg, int wparam, int lparam); 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto)]
        public static extern IntPtr PostMessage(HandleRef hwnd, int msg, int wparam, IntPtr lparam);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GetClientRect(HandleRef hWnd, [In, Out] ref NativeMethods.RECT rect); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool GetClientRect(HandleRef hWnd, IntPtr rect); 

        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
        [DllImport(ExternDll.User32, EntryPoint="WindowFromPoint", ExactSpelling=true, CharSet=CharSet.Auto)]
        private static extern IntPtr _WindowFromPoint(POINTSTRUCT pt); 
        public static IntPtr WindowFromPoint(int x, int y) {
            POINTSTRUCT ps = new POINTSTRUCT(x, y); 
            return _WindowFromPoint(ps); 
        }
        [DllImport(ExternDll.User32, SetLastError=true, ExactSpelling = true)] 
        public static extern IntPtr WindowFromDC( HandleRef hDC );
        [DllImport(ExternDll.User32, EntryPoint="CreateWindowEx", CharSet=CharSet.Auto, SetLastError=true)]
        public static extern IntPtr IntCreateWindowEx(int  dwExStyle, string lpszClassName,
                                                   string lpszWindowName, int style, int x, int y, int width, int height, 
                                                   HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, [MarshalAs(UnmanagedType.AsAny)] object pvParam);
        public static IntPtr CreateWindowEx(int  dwExStyle, string lpszClassName, 
                                         string lpszWindowName, int style, int x, int y, int width, int height, 
                                         HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, [MarshalAs(UnmanagedType.AsAny)]object pvParam) {
            return IntCreateWindowEx(dwExStyle, lpszClassName, 
                                         lpszWindowName, style, x, y, width, height, hWndParent, hMenu,
                                         hInst, pvParam);
        }
 
        [DllImport(ExternDll.User32, ExactSpelling=true, EntryPoint="DestroyWindow", CharSet=CharSet.Auto)]
        public static extern bool IntDestroyWindow(HandleRef hWnd); 
        public static bool DestroyWindow(HandleRef hWnd) { 
            return IntDestroyWindow(hWnd);
        } 

        [DllImport(ExternDll.User32, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern bool UnregisterClass(string className, HandleRef hInstance);
 
        [DllImport(ExternDll.Gdi32, SetLastError=true, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern IntPtr GetStockObject(int nIndex); 
 
        [DllImport(ExternDll.User32, CharSet=CharSet.Auto, SetLastError=true)]
        public static extern short RegisterClass(NativeMethods.WNDCLASS_D wc); 

        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern void PostQuitMessage(int nExitCode);
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern void WaitMessage(); 
 
        [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
        public static extern bool SetWindowPlacement(HandleRef hWnd, [In] ref NativeMethods.WINDOWPLACEMENT placement); 

        // For system power status
        //
        [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool GetSystemPowerStatus([In, Out] ref NativeMethods.SYSTEM_POWER_STATUS systemPowerStatus);
 
        [DllImport(ExternDll.Powrprof, ExactSpelling=true, CharSet=CharSet.Auto)] 
        public static extern bool SetSuspendState(bool hiberate, bool forceCritical, bool disableWakeEvent);
 
        //for RegionData
        [DllImport(ExternDll.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int GetRegionData(HandleRef hRgn, int size, IntPtr lpRgnData);
 
        public unsafe static NativeMethods.RECT[] GetRectsFromRegion(IntPtr hRgn) {
            NativeMethods.RECT[] regionRects = null; 
            IntPtr pBytes = IntPtr.Zero; 
            try {
                // see how much memory we need to allocate 
                int regionDataSize = GetRegionData(new HandleRef(null, hRgn), 0, IntPtr.Zero);
                if (regionDataSize != 0) {
                    pBytes = Marshal.AllocCoTaskMem(regionDataSize);
                    // get the data 
                    int ret = GetRegionData(new HandleRef(null, hRgn), regionDataSize, pBytes);
                    if (ret == regionDataSize) { 
                        // cast to the structure 
                        NativeMethods.RGNDATAHEADER* pRgnDataHeader = (NativeMethods.RGNDATAHEADER*)pBytes;
                        if (pRgnDataHeader->iType == 1) {    // expecting RDH_RECTANGLES 
                            regionRects = new NativeMethods.RECT[pRgnDataHeader->nCount];

                            Debug.Assert(regionDataSize == pRgnDataHeader->cbSizeOfStruct + pRgnDataHeader->nCount * pRgnDataHeader->nRgnSize);
                            Debug.Assert(Marshal.SizeOf(typeof(NativeMethods.RECT)) == pRgnDataHeader->nRgnSize || pRgnDataHeader->nRgnSize == 0); 

                            // use the header size as the offset, and cast each rect in. 
                            int rectStart = pRgnDataHeader->cbSizeOfStruct; 
                            for (int i = 0; i < pRgnDataHeader->nCount; i++) {
                                // use some fancy pointer math to just copy the rect bits directly into the array. 
                                regionRects[i] = *((NativeMethods.RECT*)((byte*)pBytes + rectStart + (Marshal.SizeOf(typeof(NativeMethods.RECT)) * i)));
                            }
                        }
                    } 
                }
            } 
            finally { 
                if (pBytes != IntPtr.Zero) {
                    Marshal.FreeCoTaskMem(pBytes); 
                }
            }
            return regionRects;
        } 

        /* Unused 
        // for GetUserNameEx 
        public enum EXTENDED_NAME_FORMAT {
            NameUnknown = 0, 
            NameFullyQualifiedDN = 1,
            NameSamCompatible = 2,
            NameDisplay = 3,
            NameUniqueId = 6, 
            NameCanonical = 7,
            NameUserPrincipal = 8, 
            NameCanonicalEx = 9, 
            NameServicePrincipal = 10
        } 
        */

        [ComImport(), Guid("00000122-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleDropTarget { 
            [PreserveSig]
            int OleDragEnter( 
                [In, MarshalAs(UnmanagedType.Interface)] 
                object pDataObj,
                [In, MarshalAs(UnmanagedType.U4)] 
                int grfKeyState,
                [In, MarshalAs(UnmanagedType.U8)]
                long pt,
                [In, Out] 
                ref int pdwEffect);
 
            [PreserveSig] 
            int OleDragOver(
                [In, MarshalAs(UnmanagedType.U4)] 
                int grfKeyState,
                [In, MarshalAs(UnmanagedType.U8)]
                long pt,
                [In, Out] 
                ref int pdwEffect);
 
            [PreserveSig] 
            int OleDragLeave();
 
            [PreserveSig]
            int OleDrop(
                [In, MarshalAs(UnmanagedType.Interface)]
                object pDataObj, 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfKeyState, 
                [In, MarshalAs(UnmanagedType.U8)] 
                long pt,
                [In, Out] 
                ref int pdwEffect);
        }

        [ComImport(), Guid("00000121-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IOleDropSource {
 
            [PreserveSig] 
            int OleQueryContinueDrag(
                int fEscapePressed, 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfKeyState);

            [PreserveSig] 
            int OleGiveFeedback(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwEffect); 
        }
 
        [ComImport(), Guid("00000016-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleMessageFilter {

            [PreserveSig] 
            int HandleInComingCall(
                int dwCallType, 
                IntPtr hTaskCaller, 
                int dwTickCount,
                /* LPINTERFACEINFO */ IntPtr lpInterfaceInfo); 

            [PreserveSig]
            int RetryRejectedCall(
                IntPtr hTaskCallee, 
                int dwTickCount,
                int dwRejectType); 
 
            [PreserveSig]
            int MessagePending( 
                IntPtr hTaskCallee,
                int dwTickCount,
                int dwPendingType);
        } 

        [ 
        ComImport(), 
        Guid("B196B289-BAB4-101A-B69C-00AA00341D07"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ]
        public interface IOleControlSite {

            [PreserveSig] 
            int OnControlInfoChanged();
 
            [PreserveSig] 
            int LockInPlaceActive(int fLock);
 
            [PreserveSig]
            int GetExtendedControl(
                [Out, MarshalAs(UnmanagedType.IDispatch)]
                out object ppDisp); 

            [PreserveSig] 
            int TransformCoords( 
                [In, Out]
                NativeMethods._POINTL pPtlHimetric, 
                [In, Out]
                NativeMethods.tagPOINTF pPtfContainer,
                [In, MarshalAs(UnmanagedType.U4)]
                int dwFlags); 

            [PreserveSig] 
            int TranslateAccelerator( 
                [In]
                ref NativeMethods.MSG pMsg, 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfModifiers);

            [PreserveSig] 
            int OnFocus(int fGotFocus);
 
            [PreserveSig] 
            int ShowPropertyFrame();
 
        }

        [ComImport(), Guid("00000118-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleClientSite { 

            [PreserveSig] 
            int SaveObject(); 

            [PreserveSig] 
            int GetMoniker(
                [In, MarshalAs(UnmanagedType.U4)]
                int dwAssign,
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwWhichMoniker,
                [Out, MarshalAs(UnmanagedType.Interface)] 
                out object moniker); 

            [PreserveSig] 
            int GetContainer(out IOleContainer container);

            [PreserveSig]
            int ShowObject(); 

            [PreserveSig] 
            int OnShowWindow(int fShow); 

            [PreserveSig] 
            int RequestNewObjectLayout();
        }

        [ComImport(), Guid("00000119-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IOleInPlaceSite {
 
            IntPtr GetWindow(); 

            [PreserveSig] 
            int ContextSensitiveHelp(int fEnterMode);

            [PreserveSig]
            int CanInPlaceActivate(); 

            [PreserveSig] 
            int OnInPlaceActivate(); 

            [PreserveSig] 
            int OnUIActivate();

            [PreserveSig]
            int GetWindowContext( 
                [Out, MarshalAs(UnmanagedType.Interface)]
                out UnsafeNativeMethods.IOleInPlaceFrame ppFrame, 
                [Out, MarshalAs(UnmanagedType.Interface)] 
                out UnsafeNativeMethods.IOleInPlaceUIWindow ppDoc,
                [Out] 
                NativeMethods.COMRECT lprcPosRect,
                [Out]
                NativeMethods.COMRECT lprcClipRect,
                [In, Out] 
                NativeMethods.tagOIFI lpFrameInfo);
 
            [PreserveSig] 
            int Scroll(
                NativeMethods.tagSIZE scrollExtant); 

            [PreserveSig]
            int OnUIDeactivate(
                int fUndoable); 

            [PreserveSig] 
            int OnInPlaceDeactivate(); 

            [PreserveSig] 
            int DiscardUndoState();

            [PreserveSig]
            int DeactivateAndUndo(); 

            [PreserveSig] 
            int OnPosRectChange( 
                [In]
                NativeMethods.COMRECT lprcPosRect); 
        }

        [ComImport(), Guid("742B0E01-14E6-101B-914E-00AA00300CAB"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface ISimpleFrameSite { 

            [PreserveSig] 
                int PreMessageFilter( 
                IntPtr hwnd,
                [In, MarshalAs(UnmanagedType.U4)] 
                int msg,
                IntPtr wp,
                IntPtr lp,
                [In, Out] 
                ref IntPtr plResult,
                [In, Out, MarshalAs(UnmanagedType.U4)] 
                ref int pdwCookie); 

            [PreserveSig] 
            int PostMessageFilter(
                IntPtr hwnd,
                [In, MarshalAs(UnmanagedType.U4)]
                int msg, 
                IntPtr wp,
                IntPtr lp, 
                [In, Out] 
                ref IntPtr plResult,
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwCookie);
        }

        [ComImport(), Guid("40A050A0-3C31-101B-A82E-08002B2B2337"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IVBGetControl {
 
            [PreserveSig] 
            int EnumControls(
                int dwOleContF, 
                int dwWhich,
                [Out]
                out IEnumUnknown ppenum);
        } 

        [ComImport(), Guid("91733A60-3F4C-101B-A3F6-00AA0034E4E9"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IGetVBAObject { 

           [PreserveSig] 
           int GetObject(
                [In]
                ref Guid riid,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                IVBFormat[] rval,
                int dwReserved); 
        } 

        [ComImport(), Guid("9BFBBC02-EFF1-101A-84ED-00AA00341D07"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IPropertyNotifySink {
            void OnChanged(int dispID);

            [PreserveSig] 
            int OnRequestEdit(int dispID);
        } 
 
        [ComImport(), Guid("9849FD60-3768-101B-8D72-AE6164FFE3CF"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IVBFormat { 

            [PreserveSig]
            int Format(
                [In] 
                ref object var,
                IntPtr pszFormat, 
                IntPtr lpBuffer, 
                short cpBuffer,
                int lcid, 
                short firstD,
                short firstW,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                short[] result); 
        }
 
        [ComImport(), Guid("00000100-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IEnumUnknown {
 
            [PreserveSig]
            int Next(
                [In, MarshalAs(UnmanagedType.U4)]
                int celt, 
                [Out]
                IntPtr rgelt, 
                IntPtr pceltFetched); 

            [PreserveSig] 
                int Skip(
                [In, MarshalAs(UnmanagedType.U4)]
                int celt);
 
            void Reset();
 
            void Clone( 
                [Out]
                out IEnumUnknown ppenum); 
        }

        [ComImport(), Guid("0000011B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleContainer { 

            [PreserveSig] 
            int ParseDisplayName( 
                [In, MarshalAs(UnmanagedType.Interface)]
                object pbc, 
                [In, MarshalAs(UnmanagedType.BStr)]
                string pszDisplayName,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                int[] pchEaten, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                object[] ppmkOut); 
 
            [PreserveSig]
            int EnumObjects( 
                [In, MarshalAs(UnmanagedType.U4)]
                int grfFlags,
                [Out]
                out IEnumUnknown ppenum); 

            [PreserveSig] 
            int LockContainer( 
                bool fLock);
        } 

        [ComImport(), Guid("00000116-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceFrame {
 
            IntPtr GetWindow();
 
            [PreserveSig] 
            int ContextSensitiveHelp(int fEnterMode);
 
            [PreserveSig]
            int GetBorder(
                [Out]
                NativeMethods.COMRECT lprectBorder); 

            [PreserveSig] 
            int RequestBorderSpace( 
                [In]
                NativeMethods.COMRECT pborderwidths); 

            [PreserveSig]
            int SetBorderSpace(
                [In] 
                NativeMethods.COMRECT pborderwidths);
 
            [PreserveSig] 
            int  SetActiveObject(
                [In, MarshalAs(UnmanagedType.Interface)] 
                UnsafeNativeMethods.IOleInPlaceActiveObject pActiveObject,
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszObjName);
 
            [PreserveSig]
            int InsertMenus( 
                [In] 
                IntPtr hmenuShared,
                [In, Out] 
                NativeMethods.tagOleMenuGroupWidths lpMenuWidths);

            [PreserveSig]
            int SetMenu( 
                [In]
                IntPtr hmenuShared, 
                [In] 
                IntPtr holemenu,
                [In] 
                IntPtr hwndActiveObject);

            [PreserveSig]
            int RemoveMenus( 
                [In]
                IntPtr hmenuShared); 
 
            [PreserveSig]
            int SetStatusText( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszStatusText);

            [PreserveSig] 
            int EnableModeless(
                bool fEnable); 
 
            [PreserveSig]
                int TranslateAccelerator( 
                [In]
                ref NativeMethods.MSG lpmsg,
                [In, MarshalAs(UnmanagedType.U2)]
                short wID); 
        }
 
        // Used to control the webbrowser appearance and provide DTE to script via window.external 
        [ComVisible(true), ComImport(), Guid("BD3F23C0-D43E-11CF-893B-00AA00BDCE1A"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IDocHostUIHandler {

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int ShowContextMenu(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwID, 
                [In]
                NativeMethods.POINT pt, 
                [In, MarshalAs(UnmanagedType.Interface)]
                object pcmdtReserved,
                [In, MarshalAs(UnmanagedType.Interface)]
                object pdispReserved); 

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig] 
            int GetHostInfo(
                [In, Out] 
                NativeMethods.DOCHOSTUIINFO info);

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int ShowUI(
                [In, MarshalAs(UnmanagedType.I4)] 
                int dwID, 
                [In]
                UnsafeNativeMethods.IOleInPlaceActiveObject activeObject, 
                [In]
                NativeMethods.IOleCommandTarget commandTarget,
                [In]
                UnsafeNativeMethods.IOleInPlaceFrame frame, 
                [In]
                UnsafeNativeMethods.IOleInPlaceUIWindow doc); 
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int HideUI();

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int UpdateUI();
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int EnableModeless( 
                [In, MarshalAs(UnmanagedType.Bool)]
                bool fEnable);

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int OnDocWindowActivate( 
                [In, MarshalAs(UnmanagedType.Bool)] 
                bool fActivate);
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig]
            int OnFrameWindowActivate(
                [In, MarshalAs(UnmanagedType.Bool)] 
                bool fActivate);
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int ResizeBorder( 
                [In]
                NativeMethods.COMRECT rect,
                [In]
                UnsafeNativeMethods.IOleInPlaceUIWindow doc, 
                bool fFrameWindow);
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int TranslateAccelerator( 
                [In]
                ref NativeMethods.MSG msg,
                [In]
                ref Guid group, 
                [In, MarshalAs(UnmanagedType.I4)]
                int nCmdID); 
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int GetOptionKeyPath(
                [Out, MarshalAs(UnmanagedType.LPArray)]
                String[] pbstrKey,
                [In, MarshalAs(UnmanagedType.U4)] 
                int dw);
 
            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int GetDropTarget( 
                [In, MarshalAs(UnmanagedType.Interface)]
                UnsafeNativeMethods.IOleDropTarget pDropTarget,
                [Out, MarshalAs(UnmanagedType.Interface)]
                out UnsafeNativeMethods.IOleDropTarget ppDropTarget); 

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig] 
            int GetExternal(
                [Out, MarshalAs(UnmanagedType.Interface)] 
                out object ppDispatch);

            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int TranslateUrl(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwTranslate, 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string strURLIn, 
                [Out, MarshalAs(UnmanagedType.LPWStr)]
                out string pstrURLOut);

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig]
            int FilterDataObject( 
                IComDataObject pDO, 
                out IComDataObject ppDORet);
        } 

        [SuppressUnmanagedCodeSecurity, ComImport(), Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E"),
        TypeLibType(TypeLibTypeFlags.FHidden | TypeLibTypeFlags.FDual | TypeLibTypeFlags.FOleAutomation)]
        public interface IWebBrowser2 { 
            //
            // IWebBrowser members 
            [DispId(100)] void GoBack(); 
            [DispId(101)] void GoForward();
            [DispId(102)] void GoHome(); 
            [DispId(103)] void GoSearch();
            [DispId(104)] void Navigate([In] string Url, [In] ref object flags,
                            [In] ref object targetFrameName, [In] ref object postData,
                            [In] ref object headers); 
            [DispId(-550)] void Refresh();
            [DispId(105)] void Refresh2([In] ref object level); 
            [DispId(106)] void Stop(); 
            [DispId(200)] object Application {[return: MarshalAs(UnmanagedType.IDispatch)]get;}
            [DispId(201)] object Parent {[return: MarshalAs(UnmanagedType.IDispatch)]get;} 
            [DispId(202)] object Container {[return: MarshalAs(UnmanagedType.IDispatch)]get;}
            [DispId(203)] object Document {[return: MarshalAs(UnmanagedType.IDispatch)]get;}
            [DispId(204)] bool TopLevelContainer {get;}
            [DispId(205)] string Type {get;} 
            [DispId(206)] int Left {get; set;}
            [DispId(207)] int Top {get; set;} 
            [DispId(208)] int Width {get; set;} 
            [DispId(209)] int Height {get; set;}
            [DispId(210)] string LocationName {get;} 
            [DispId(211)] string LocationURL {get;}
            [DispId(212)] bool Busy {get;}
            //
            // IWebBrowserApp members 
            [DispId(300)] void Quit();
            [DispId(301)] void ClientToWindow([Out]out int pcx, [Out]out int pcy); 
            [DispId(302)] void PutProperty([In] string property, [In] object vtValue); 
            [DispId(303)] object GetProperty([In] string property);
            [DispId(0)] string Name {get;} 
            [DispId(-515)] int HWND {get;}
            [DispId(400)] string FullName {get;}
            [DispId(401)] string Path {get;}
            [DispId(402)] bool Visible {get; set;} 
            [DispId(403)] bool StatusBar {get; set;}
            [DispId(404)] string StatusText {get; set;} 
            [DispId(405)] int ToolBar {get; set;} 
            [DispId(406)] bool MenuBar {get; set;}
            [DispId(407)] bool FullScreen {get; set;} 
            //
            // IWebBrowser2 members
            [DispId(500)] void Navigate2([In] ref object URL, [In] ref object flags,
                            [In] ref object targetFrameName, [In] ref object postData, 
                            [In] ref object headers);
            [DispId(501)] NativeMethods.OLECMDF QueryStatusWB([In] NativeMethods.OLECMDID cmdID); 
            [DispId(502)] void ExecWB([In] NativeMethods.OLECMDID cmdID, 
                    [In] NativeMethods.OLECMDEXECOPT cmdexecopt,
                    ref object pvaIn, 
                    IntPtr pvaOut);
            [DispId(503)] void ShowBrowserBar([In] ref object pvaClsid, [In] ref object pvarShow,
                    [In] ref object pvarSize);
            [DispId(-525)] WebBrowserReadyState ReadyState {get;} 
            [DispId(550)] bool Offline {get; set;}
            [DispId(551)] bool Silent {get; set;} 
            [DispId(552)] bool RegisterAsBrowser {get; set;} 
            [DispId(553)] bool RegisterAsDropTarget {get; set;}
            [DispId(554)] bool TheaterMode {get; set;} 
            [DispId(555)] bool AddressBar {get; set;}
            [DispId(556)] bool Resizable {get; set;}
        }
 
        [ComImport(), Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DWebBrowserEvents2 {
            [DispId(102)] void StatusTextChange([In] string text); 
            [DispId(108)] void ProgressChange([In] int progress, [In] int progressMax);
            [DispId(105)] void CommandStateChange([In] long command, [In] bool enable);
            [DispId(106)] void DownloadBegin();
            [DispId(104)] void DownloadComplete(); 
            [DispId(113)] void TitleChange([In] string text);
            [DispId(112)] void PropertyChange([In] string szProperty); 
            [DispId(250)] void BeforeNavigate2([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                                 [In] ref object URL, [In] ref object flags,
                                 [In] ref object targetFrameName, [In] ref object postData, 
                                 [In] ref object headers, [In, Out] ref bool cancel);
            [DispId(251)] void NewWindow2([In, Out, MarshalAs(UnmanagedType.IDispatch)] ref object pDisp,
                                [In, Out] ref bool cancel);
            [DispId(252)] void NavigateComplete2([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                                [In] ref object URL);
            [DispId(259)] void DocumentComplete([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                                [In] ref object URL); 
            [DispId(253)] void OnQuit();
            [DispId(254)] void OnVisible([In] bool visible); 
            [DispId(255)] void OnToolBar([In] bool toolBar);
            [DispId(256)] void OnMenuBar([In] bool menuBar);
            [DispId(257)] void OnStatusBar([In] bool statusBar);
            [DispId(258)] void OnFullScreen([In] bool fullScreen); 
            [DispId(260)] void OnTheaterMode([In] bool theaterMode);
            [DispId(262)] void WindowSetResizable([In] bool resizable); 
            [DispId(264)] void WindowSetLeft([In] int left); 
            [DispId(265)] void WindowSetTop([In] int top);
            [DispId(266)] void WindowSetWidth([In] int width); 
            [DispId(267)] void WindowSetHeight([In] int height);
            [DispId(263)] void WindowClosing([In] bool isChildWindow, [In, Out] ref bool cancel);
            [DispId(268)] void ClientToHostWindow([In, Out] ref long cx, [In, Out] ref long cy);
            [DispId(269)] void SetSecureLockIcon([In] int secureLockIcon); 
            [DispId(270)] void FileDownload([In, Out] ref bool cancel);
            [DispId(271)] void NavigateError([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, 
                    [In] ref object URL, [In] ref object frame, [In] ref object statusCode, [In, Out] ref bool cancel); 
            [DispId(225)] void PrintTemplateInstantiation([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp);
            [DispId(226)] void PrintTemplateTeardown([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp); 
            [DispId(227)] void UpdatePageStatus([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp,
                    [In] ref object nPage, [In] ref object fDone);
            [DispId(272)] void PrivacyImpactedStateChange([In] bool bImpacted);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("626FC520-A41E-11cf-A731-00A0C9082637"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLDocument {
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetScript(); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("332C4425-26CB-11D0-B483-00C04FD90119"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLDocument2 {
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetScript(); 
            IHTMLElementCollection GetAll(); 
            IHTMLElement GetBody();
            IHTMLElement GetActiveElement(); 
            IHTMLElementCollection GetImages();
            IHTMLElementCollection GetApplets();
            IHTMLElementCollection GetLinks();
            IHTMLElementCollection GetForms(); 
            IHTMLElementCollection GetAnchors();
            void SetTitle(string p); 
            string GetTitle(); 
            IHTMLElementCollection GetScripts();
            void SetDesignMode(string p); 
            string GetDesignMode();
            [return: MarshalAs(UnmanagedType.Interface)] object GetSelection();
            string GetReadyState();
            [return: MarshalAs(UnmanagedType.Interface)] object GetFrames(); 
            IHTMLElementCollection GetEmbeds();
            IHTMLElementCollection GetPlugins(); 
            void SetAlinkColor(object c); 
            object GetAlinkColor();
            void SetBgColor(object c); 
            object GetBgColor();
            void SetFgColor(object c);
            object GetFgColor();
            void SetLinkColor(object c); 
            object GetLinkColor();
            void SetVlinkColor(object c); 
            object GetVlinkColor(); 
            string GetReferrer();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLLocation GetLocation(); 
            string GetLastModified();
            void SetUrl(string p);
            string GetUrl();
            void SetDomain(string p); 
            string GetDomain();
            void SetCookie(string p); 
            string GetCookie(); 
            void SetExpando(bool p);
            bool GetExpando(); 
            void SetCharset(string p);
            string GetCharset();
            void SetDefaultCharset(string p);
            string GetDefaultCharset(); 
            string GetMimeType();
            string GetFileSize(); 
            string GetFileCreatedDate(); 
            string GetFileModifiedDate();
            string GetFileUpdatedDate(); 
            string GetSecurity();
            string GetProtocol();
            string GetNameProp();
            int Write([In, MarshalAs(UnmanagedType.SafeArray)] object[] psarray); 
            int WriteLine([In, MarshalAs(UnmanagedType.SafeArray)] object[] psarray);
            [return: MarshalAs(UnmanagedType.Interface)] object Open(string mimeExtension, object name, object features, object replace); 
            void Close(); 
            void Clear();
            bool QueryCommandSupported(string cmdID); 
            bool QueryCommandEnabled(string cmdID);
            bool QueryCommandState(string cmdID);
            bool QueryCommandIndeterm(string cmdID);
            string QueryCommandText( 
                    string cmdID);
            Object QueryCommandValue(string cmdID); 
            bool ExecCommand(string cmdID, 
                    bool showUI, Object value);
            bool ExecCommandShowHelp(string cmdID); 
            IHTMLElement CreateElement(string eTag);
            void SetOnhelp(Object p);
            Object GetOnhelp();
            void SetOnclick(Object p); 
            Object GetOnclick();
            void SetOndblclick(Object p); 
            Object GetOndblclick(); 
            void SetOnkeyup(Object p);
            Object GetOnkeyup(); 
            void SetOnkeydown(Object p);
            Object GetOnkeydown();
            void SetOnkeypress(Object p);
            Object GetOnkeypress(); 
            void SetOnmouseup(Object p);
            Object GetOnmouseup(); 
            void SetOnmousedown(Object p); 
            Object GetOnmousedown();
            void SetOnmousemove(Object p); 
            Object GetOnmousemove();
            void SetOnmouseout(Object p);
            Object GetOnmouseout();
            void SetOnmouseover(Object p); 
            Object GetOnmouseover();
            void SetOnreadystatechange(Object p); 
            Object GetOnreadystatechange(); 
            void SetOnafterupdate(Object p);
            Object GetOnafterupdate(); 
            void SetOnrowexit(Object p);
            Object GetOnrowexit();
            void SetOnrowenter(Object p);
            Object GetOnrowenter(); 
            void SetOndragstart(Object p);
            Object GetOndragstart(); 
            void SetOnselectstart(Object p); 
            Object GetOnselectstart();
            IHTMLElement ElementFromPoint(int x, int y); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLWindow2 GetParentWindow();
            [return: MarshalAs(UnmanagedType.Interface)] object GetStyleSheets();
            void SetOnbeforeupdate(Object p);
            Object GetOnbeforeupdate(); 
            void SetOnerrorupdate(Object p);
            Object GetOnerrorupdate(); 
            string toString(); 
            [return: MarshalAs(UnmanagedType.Interface)] object CreateStyleSheet(string bstrHref,int lIndex);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F485-98B5-11CF-BB82-00AA00BDCE0B"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLDocument3 { 
            void ReleaseCapture();
            void Recalc([In] bool fForce); 
            object CreateTextNode([In] string text); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetDocumentElement();
            string GetUniqueID(); 
            bool AttachEvent([In] string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void DetachEvent([In] string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void SetOnrowsdelete([In] Object p);
            Object GetOnrowsdelete(); 
            void SetOnrowsinserted([In] Object p);
            Object GetOnrowsinserted(); 
            void SetOncellchange([In] Object p); 
            Object GetOncellchange();
            void SetOndatasetchanged([In] Object p); 
            Object GetOndatasetchanged();
            void SetOndataavailable([In] Object p);
            Object GetOndataavailable();
            void SetOndatasetcomplete([In] Object p); 
            Object GetOndatasetcomplete();
            void SetOnpropertychange([In] Object p); 
            Object GetOnpropertychange(); 
            void SetDir([In] string p);
            string GetDir(); 
            void SetOncontextmenu([In] Object p);
            Object GetOncontextmenu();
            void SetOnstop([In] Object p);
            Object GetOnstop(); 
            object CreateDocumentFragment();
            object GetParentDocument(); 
            void SetEnableDownload([In] bool p); 
            bool GetEnableDownload();
            void SetBaseUrl([In] string p); 
            string GetBaseUrl();
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetChildNodes();
            void SetInheritStyleSheets([In] bool p);
            bool GetInheritStyleSheets(); 
            void SetOnbeforeeditfocus([In] Object p);
            Object GetOnbeforeeditfocus(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElementCollection GetElementsByName([In] string v); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetElementById([In] string v);
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElementCollection GetElementsByTagName([In] string v); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F69A-98B5-11CF-BB82-00AA00BDCE0B"),
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLDocument4 {
            void Focus(); 
            bool HasFocus(); 
            void SetOnselectionchange(object p);
            object GetOnselectionchange(); 
            object GetNamespaces();
            object createDocumentFromUrl(string bstrUrl, string bstrOptions);
            void SetMedia(string bstrMedia);
            string GetMedia(); 
            object CreateEventObject([In, Optional] ref object eventObject);
            bool FireEvent(string eventName); 
            object CreateRenderStyle(string bstr); 
            void SetOncontrolselect(object p);
            object GetOncontrolselect(); 
            string GetURLUnencoded();
        }

 
        [ComImport(), Guid("3050f613-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLDocumentEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)] bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1026)] bool onstop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1027)] void onbeforeeditfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1037)] void onselectionchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("332C4426-26CB-11D0-B483-00C04FD90119"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLFramesCollection2 { 
            object Item(ref object idOrName);
            int GetLength(); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("332C4427-26CB-11D0-B483-00C04FD90119"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLWindow2 {
            [return: MarshalAs(UnmanagedType.IDispatch)] object Item([In] ref object pvarIndex); 
            int GetLength(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLFramesCollection2 GetFrames();
            void SetDefaultStatus([In] string p); 
            string GetDefaultStatus();
            void SetStatus([In] string p);
            string GetStatus();
            int SetTimeout([In] string expression, [In] int msec, [In] ref Object language); 
            void ClearTimeout([In] int timerID);
            void Alert([In] string message); 
            bool Confirm([In] string message); 
            [return: MarshalAs(UnmanagedType.Struct)] object Prompt([In] string message, [In] string defstr);
            object GetImage(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLLocation GetLocation();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IOmHistory GetHistory();
            void Close();
            void SetOpener([In] object p); 
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetOpener();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IOmNavigator GetNavigator(); 
            void SetName([In] string p); 
            string GetName();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLWindow2 GetParent(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLWindow2 Open([In] string URL, [In] string name, [In] string features, [In] bool replace);
            object GetSelf();
            object GetTop();
            object GetWindow(); 
            void Navigate([In] string URL);
            void SetOnfocus([In] Object p); 
            Object GetOnfocus(); 
            void SetOnblur([In] Object p);
            Object GetOnblur(); 
            void SetOnload([In] Object p);
            Object GetOnload();
            void SetOnbeforeunload(Object p);
            Object GetOnbeforeunload(); 
            void SetOnunload([In] Object p);
            Object GetOnunload(); 
            void SetOnhelp(Object p); 
            Object GetOnhelp();
            void SetOnerror([In] Object p); 
            Object GetOnerror();
            void SetOnresize([In] Object p);
            Object GetOnresize();
            void SetOnscroll([In] Object p); 
            Object GetOnscroll();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLDocument2 GetDocument(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLEventObj GetEvent(); 
            object Get_newEnum();
            Object ShowModalDialog([In] string dialog, [In] ref Object varArgIn, [In] ref Object varOptions); 
            void ShowHelp([In] string helpURL, [In] Object helpArg, [In] string features);
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLScreen GetScreen();
            object GetOption();
            void Focus(); 
            bool GetClosed();
            void Blur(); 
            void Scroll([In] int x, [In] int y); 
            object GetClientInformation();
            int SetInterval([In] string expression, [In] int msec, [In] ref Object language); 
            void ClearInterval([In] int timerID);
            void SetOffscreenBuffering([In] Object p);
            Object GetOffscreenBuffering();
            [return: MarshalAs(UnmanagedType.Struct)] Object ExecScript([In] string code, [In] string language); 
            string toString();
            void ScrollBy([In] int x, [In] int y); 
            void ScrollTo([In] int x, [In] int y); 
            void MoveTo([In] int x, [In] int y);
            void MoveBy([In] int x, [In] int y); 
            void ResizeTo([In] int x, [In] int y);
            void ResizeBy([In] int x, [In] int y);
            object GetExternal();
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f4ae-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLWindow3 {
            int GetScreenLeft(); 
            int GetScreenTop();
            bool AttachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void DetachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            int SetTimeout([In]ref object expression, int msec, [In] ref object language); 
            int SetInterval([In]ref object expression, int msec, [In] ref object language);
            void Print(); 
            void SetBeforePrint(object o); 
            object GetBeforePrint();
            void SetAfterPrint(object o); 
            object GetAfterPrint();
            object GetClipboardData();
            object ShowModelessDialog(string url, object varArgIn, object options);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f6cf-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLWindow4 {
            [return: MarshalAs(UnmanagedType.IDispatch)] object CreatePopup([In] ref object reserved); 
            [return: MarshalAs(UnmanagedType.Interface)] object frameElement();
        }

 
        [ComImport(), Guid("3050f625-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLWindowEvents2 {
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1008)] void onunload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1002)] bool onerror(string description, string url, int line);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1017)] void onbeforeunload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1024)] void onbeforeprint(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1025)] void onafterprint(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f666-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLPopup { 
            void show(int x, int y, int w, int h, ref object element);
            void hide(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLDocument GetDocument();
            bool IsOpen();
        }
 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f35c-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        public interface IHTMLScreen { 
            int GetColorDepth();
            void SetBufferDepth(int d); 
            int GetBufferDepth();
            int GetWidth();
            int GetHeight();
            void SetUpdateInterval(int i); 
            int GetUpdateInterval();
            int GetAvailHeight(); 
            int GetAvailWidth(); 
            bool GetFontSmoothingEnabled();
        } 


        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("163BB1E0-6E00-11CF-837A-48DC04C10000"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLLocation {
            void SetHref([In] string p); 
            string GetHref(); 
            void SetProtocol([In] string p);
            string GetProtocol(); 
            void SetHost([In] string p);
            string GetHost();
            void SetHostname([In] string p);
            string GetHostname(); 
            void SetPort([In] string p);
            string GetPort(); 
            void SetPathname([In] string p); 
            string GetPathname();
            void SetSearch([In] string p); 
            string GetSearch();
            void SetHash([In] string p);
            string GetHash();
            void Reload([In] bool flag); 
            void Replace([In] string bstr);
            void Assign([In] string bstr); 
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("FECEAAA2-8405-11CF-8BA1-00AA00476DA6"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IOmHistory {
            short GetLength();
            void Back(); 
            void Forward();
            void Go([In] ref Object pvargdistance); 
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("FECEAAA5-8405-11CF-8BA1-00AA00476DA6"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IOmNavigator {
            string GetAppCodeName();
            string GetAppName(); 
            string GetAppVersion();
            string GetUserAgent(); 
            bool JavaEnabled(); 
            bool TaintEnabled();
            object GetMimeTypes(); 
            object GetPlugins();
            bool GetCookieEnabled();
            object GetOpsProfile();
            string GetCpuClass(); 
            string GetSystemLanguage();
            string GetBrowserLanguage(); 
            string GetUserLanguage(); 
            string GetPlatform();
            string GetAppMinorVersion(); 
            int GetConnectionSpeed();
            bool GetOnLine();
            object GetUserProfile();
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F32D-98B5-11CF-BB82-00AA00BDCE0B"), 
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLEventObj {
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetSrcElement(); 
            bool GetAltKey();
            bool GetCtrlKey();
            bool GetShiftKey();
            void SetReturnValue(object p); 
            object GetReturnValue();
            void SetCancelBubble(bool p); 
            bool GetCancelBubble(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetFromElement();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetToElement(); 
            void SetKeyCode([In] int p);
            int GetKeyCode();
            int GetButton();
            string GetEventType(); 
            string GetQualifier();
            int GetReason(); 
            int GetX(); 
            int GetY();
            int GetClientX(); 
            int GetClientY();
            int GetOffsetX();
            int GetOffsetY();
            int GetScreenX(); 
            int GetScreenY();
            object GetSrcFilter(); 
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f48B-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLEventObj2 {
            void SetAttribute(string attributeName, object attributeValue, int lFlags);
            object GetAttribute(string attributeName, int lFlags); 
            bool RemoveAttribute(string attributeName, int lFlags);
            void SetPropertyName(string name); 
            string GetPropertyName(); 
            void SetBookmarks(ref object bm);
            object GetBookmarks(); 
            void SetRecordset(ref object rs);
            object GetRecordset();
            void SetDataFld(string df);
            string GetDataFld(); 
            void SetBoundElements(ref object be);
            object GetBoundElements(); 
            void SetRepeat(bool r); 
            bool GetRepeat();
            void SetSrcUrn(string urn); 
            string GetSrcUrn();
            void SetSrcElement(ref object se);
            object GetSrcElement();
            void SetAltKey(bool alt); 
            bool GetAltKey();
            void SetCtrlKey(bool ctrl); 
            bool GetCtrlKey(); 
            void SetShiftKey(bool shift);
            bool GetShiftKey(); 
            void SetFromElement(ref object element);
            object GetFromElement();
            void SetToElement(ref object element);
            object GetToElement(); 
            void SetButton(int b);
            int GetButton(); 
            void SetType(string type); 
            string GetType();
            void SetQualifier(string q); 
            string GetQualifier();
            void SetReason(int r);
            int GetReason();
            void SetX(int x); 
            int GetX();
            void SetY(int y); 
            int GetY(); 
            void SetClientX(int x);
            int GetClientX(); 
            void SetClientY(int y);
            int GetClientY();
            void SetOffsetX(int x);
            int GetOffsetX(); 
            void SetOffsetY(int y);
            int GetOffsetY(); 
            void SetScreenX(int x); 
            int GetScreenX();
            void SetScreenY(int y); 
            int GetScreenY();
            void SetSrcFilter(ref object filter);
            object GetSrcFilter();
            object GetDataTransfer(); 
        }
 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f814-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLEventObj4 { 
            int GetWheelDelta();
        };

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F21F-98B5-11CF-BB82-00AA00BDCE0B"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLElementCollection { 
            string toString(); 
            void SetLength(int p);
            int GetLength(); 
            [return: MarshalAs(UnmanagedType.Interface)] object Get_newEnum();
            [return: MarshalAs(UnmanagedType.IDispatch)] object Item(object idOrName, object index);
            [return: MarshalAs(UnmanagedType.Interface)] object Tags(object tagName);
        } 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F1FF-98B5-11CF-BB82-00AA00BDCE0B"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLElement {
            void SetAttribute(string attributeName, object attributeValue, int lFlags); 
            object GetAttribute(string attributeName, int lFlags);
            bool RemoveAttribute(string strAttributeName, int lFlags);
            void SetClassName(string p);
            string GetClassName(); 
            void SetId(string p);
            string GetId(); 
            string GetTagName(); 
            IHTMLElement GetParentElement();
            IHTMLStyle GetStyle(); 
            void SetOnhelp(Object p);
            Object GetOnhelp();
            void SetOnclick(Object p);
            Object GetOnclick(); 
            void SetOndblclick(Object p);
            Object GetOndblclick(); 
            void SetOnkeydown(Object p); 
            Object GetOnkeydown();
            void SetOnkeyup(Object p); 
            Object GetOnkeyup();
            void SetOnkeypress(Object p);
            Object GetOnkeypress();
            void SetOnmouseout(Object p); 
            Object GetOnmouseout();
            void SetOnmouseover(Object p); 
            Object GetOnmouseover(); 
            void SetOnmousemove(Object p);
            Object GetOnmousemove(); 
            void SetOnmousedown(Object p);
            Object GetOnmousedown();
            void SetOnmouseup(Object p);
            Object GetOnmouseup(); 
            [return: MarshalAs(UnmanagedType.Interface)] IHTMLDocument2 GetDocument();
            void SetTitle(string p); 
            string GetTitle(); 
            void SetLanguage(string p);
            string GetLanguage(); 
            void SetOnselectstart(Object p);
            Object GetOnselectstart();
            void ScrollIntoView(object varargStart);
            bool Contains(IHTMLElement pChild); 
            int GetSourceIndex();
            Object GetRecordNumber(); 
            void SetLang(string p); 
            string GetLang();
            int GetOffsetLeft(); 
            int GetOffsetTop();
            int GetOffsetWidth();
            int GetOffsetHeight();
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement GetOffsetParent(); 
            void SetInnerHTML(string p);
            string GetInnerHTML(); 
            void SetInnerText(string p); 
            string GetInnerText();
            void SetOuterHTML(string p); 
            string GetOuterHTML();
            void SetOuterText(string p);
            string GetOuterText();
            void InsertAdjacentHTML(string @where, 
                string html);
            void InsertAdjacentText(string @where, 
                string text); 
            IHTMLElement GetParentTextEdit();
            bool GetIsTextEdit(); 
            void Click();
            [return: MarshalAs(UnmanagedType.Interface)] object GetFilters();
            void SetOndragstart(Object p);
            Object GetOndragstart(); 
            string toString();
            void SetOnbeforeupdate(Object p); 
            Object GetOnbeforeupdate(); 
            void SetOnafterupdate(Object p);
            Object GetOnafterupdate(); 
            void SetOnerrorupdate(Object p);
            Object GetOnerrorupdate();
            void SetOnrowexit(Object p);
            Object GetOnrowexit(); 
            void SetOnrowenter(Object p);
            Object GetOnrowenter(); 
            void SetOndatasetchanged(Object p); 
            Object GetOndatasetchanged();
            void SetOndataavailable(Object p); 
            Object GetOndataavailable();
            void SetOndatasetcomplete(Object p);
            Object GetOndatasetcomplete();
            void SetOnfilterchange(Object p); 
            Object GetOnfilterchange();
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetChildren(); 
            [return: MarshalAs(UnmanagedType.IDispatch)] object GetAll(); 
        }
 

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f434-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLElement2 { 
            string ScopeName();
            void SetCapture(bool containerCapture); 
            void ReleaseCapture(); 
            void SetOnLoseCapture(object v);
            object GetOnLoseCapture(); 
            string GetComponentFromPoint(int x, int y);
            void DoScroll(object component);
            void SetOnScroll(object v);
            object GetOnScroll(); 
            void SetOnDrag(object v);
            object GetOnDrag(); 
            void SetOnDragEnd(object v); 
            object GetOnDragEnd();
            void SetOnDragEnter(object v); 
            object GetOnDragEnter();
            void SetOnDragOver(object v);
            object GetOnDragOver();
            void SetOnDragleave(object v); 
            object GetOnDragLeave();
            void SetOnDrop(object v); 
            object GetOnDrop(); 
            void SetOnBeforeCut(object v);
            object GetOnBeforeCut(); 
            void SetOnCut(object v);
            object GetOnCut();
            void SetOnBeforeCopy(object v);
            object GetOnBeforeCopy(); 
            void SetOnCopy(object v);
            object GetOnCopy(object p); 
            void SetOnBeforePaste(object v); 
            object GetOnBeforePaste(object p);
            void SetOnPaste(object v); 
            object GetOnPaste(object p);
            object GetCurrentStyle();
            void SetOnPropertyChange(object v);
            object GetOnPropertyChange(object p); 
            object GetClientRects();
            object GetBoundingClientRect(); 
            void SetExpression(string propName, string expression, string language); 
            object GetExpression(string propName);
            bool RemoveExpression(string propName); 
            void SetTabIndex(int v);
            short GetTabIndex();
            void Focus();
            void SetAccessKey(string v); 
            string GetAccessKey();
            void SetOnBlur(object v); 
            object GetOnBlur(); 
            void SetOnFocus(object v);
            object GetOnFocus(); 
            void SetOnResize(object v);
            object GetOnResize();
            void Blur();
            void AddFilter(object pUnk); 
            void RemoveFilter(object pUnk);
            int ClientHeight(); 
            int ClientWidth(); 
            int ClientTop();
            int ClientLeft(); 
            bool AttachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            void DetachEvent(string ev, [In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
            object ReadyState();
            void SetOnReadyStateChange(object v); 
            object GetOnReadyStateChange();
            void SetOnRowsDelete(object v); 
            object GetOnRowsDelete(); 
            void SetOnRowsInserted(object v);
            object GetOnRowsInserted(); 
            void SetOnCellChange(object v);
            object GetOnCellChange();
            void SetDir(string v);
            string GetDir(); 
            object CreateControlRange();
            int GetScrollHeight(); 
            int GetScrollWidth(); 
            void SetScrollTop(int v);
            int GetScrollTop(); 
            void SetScrollLeft(int v);
            int GetScrollLeft();
            void ClearAttributes();
            void MergeAttributes(object mergeThis); 
            void SetOnContextMenu(object v);
            object GetOnContextMenu(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement 
                InsertAdjacentElement(string @where,
                    [In, MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement insertedElement); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement
                applyElement([In, MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElement apply,
                    string @where);
            string GetAdjacentText(string @where); 
            string ReplaceAdjacentText(string @where,string newText);
            bool CanHaveChildren(); 
            int AddBehavior(string url, ref object oFactory); 
            bool RemoveBehavior(int cookie);
            object GetRuntimeStyle(); 
            object GetBehaviorUrns();
            void SetTagUrn(string v);
            string GetTagUrn();
            void SetOnBeforeEditFocus(object v); 
            object GetOnBeforeEditFocus();
            int GetReadyStateValue(); 
            [return: MarshalAs(UnmanagedType.Interface)] UnsafeNativeMethods.IHTMLElementCollection GetElementsByTagName(string v); 
        }
 
        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f673-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        internal interface IHTMLElement3 {
            void MergeAttributes(object mergeThis, object pvarFlags); 
            bool IsMultiLine();
            bool CanHaveHTML(); 
            void SetOnLayoutComplete(object v); 
            object GetOnLayoutComplete();
            void SetOnPage(object v); 
            object GetOnPage();
            void SetInflateBlock(bool v);
            bool GetInflateBlock();
            void SetOnBeforeDeactivate(object v); 
            object GetOnBeforeDeactivate();
            void SetActive(); 
            void SetContentEditable(string v); 
            string GetContentEditable();
            bool IsContentEditable(); 
            void SetHideFocus(bool v);
            bool GetHideFocus();
            void SetDisabled(bool v);
            bool GetDisabled(); 
            bool IsDisabled();
            void SetOnMove(object v); 
            object GetOnMove(); 
            void SetOnControlSelect(object v);
            object GetOnControlSelect(); 
            bool FireEvent(string bstrEventName, object pvarEventObject);
            void SetOnResizeStart(object v);
            object GetOnResizeStart();
            void SetOnResizeEnd(object v); 
            object GetOnResizeEnd();
            void SetOnMoveStart(object v); 
            object GetOnMoveStart(); 
            void SetOnMoveEnd(object v);
            object GetOnMoveEnd(); 
            void SetOnMouseEnter(object v);
            object GetOnMouseEnter();
            void SetOnMouseLeave(object v);
            object GetOnMouseLeave(); 
            void SetOnActivate(object v);
            object GetOnActivate(); 
            void SetOnDeactivate(object v); 
            object GetOnDeactivate();
            bool DragDrop(); 
            int GlyphMode();
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050f5da-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
        public interface IHTMLDOMNode { 
            long GetNodeType(); 
            IHTMLDOMNode GetParentNode();
            bool HasChildNodes(); 
            object GetChildNodes();
            object GetAttributes();
            IHTMLDOMNode InsertBefore(IHTMLDOMNode newChild, object refChild);
            IHTMLDOMNode RemoveChild(IHTMLDOMNode oldChild); 
            IHTMLDOMNode ReplaceChild(IHTMLDOMNode newChild, IHTMLDOMNode oldChild);
            IHTMLDOMNode CloneNode(bool fDeep); 
            IHTMLDOMNode RemoveNode(bool fDeep); 
            IHTMLDOMNode SwapNode(IHTMLDOMNode otherNode);
            IHTMLDOMNode ReplaceNode(IHTMLDOMNode replacement); 
            IHTMLDOMNode AppendChild(IHTMLDOMNode newChild);
            string NodeName();
            void SetNodeValue(object v);
            object GetNodeValue(); 
            IHTMLDOMNode FirstChild();
            IHTMLDOMNode LastChild(); 
            IHTMLDOMNode PreviousSibling(); 
            IHTMLDOMNode NextSibling();
        }; 

        [ComImport(), Guid("3050f60f-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }
 
        [ComImport(), Guid("3050f610-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLAnchorEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f611-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLAreaEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 
 
        [ComImport(), Guid("3050f617-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLButtonElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f612-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLControlElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        } 

        [ComImport(), Guid("3050f614-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLFormElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1007)] bool onsubmit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1015)] bool onreset(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }
 
        [ComImport(), Guid("3050f7ff-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLFrameSiteEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f616-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLImgEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1000)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f61a-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLInputFileElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412082)] bool onchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412102)] void onselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1000)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f61b-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLInputImageEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412080)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412083)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412084)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f618-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLInputTextElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1001)] bool onchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1006)] void onselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1001)] void onabort(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }

        [ComImport(), Guid("3050f61c-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLLabelEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        } 

        [ComImport(), Guid("3050f61d-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLLinkElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412080)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412083)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }
 
        [ComImport(), Guid("3050f61e-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLMapEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f61f-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLMarqueeElementEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412092)] void onbounce(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412086)] void onfinish(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412085)] void onstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 

        [ComImport(), Guid("3050f619-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch),
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLOptionButtonElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147412082)] bool onchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 
 
        [ComImport(), Guid("3050f622-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLSelectElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147412082)] void onchange_void(UnsafeNativeMethods.IHTMLEventObj evtObj);
        }
 
        [ComImport(), Guid("3050f615-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)] 
        public interface DHTMLStyleElementEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1003)] void onload(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)] void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [ComImport(), Guid("3050f623-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLTableEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 
 
        [ComImport(), Guid("3050f624-98b5-11cf-bb82-00aa00bdce0b"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLTextContainerEvents2 {
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1001)] void onchange_void(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1006)] void onselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
        } 

        [ComImport(), Guid("3050f621-98b5-11cf-bb82-00aa00bdce0b"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), 
        TypeLibType(TypeLibTypeFlags.FHidden)]
        public interface DHTMLScriptEvents2 { 
            [DispId(-2147418102)] bool onhelp(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-600)] bool onclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-601)] bool ondblclick(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-603)] bool onkeypress(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-602)] void onkeydown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-604)] void onkeyup(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418103)] void onmouseout(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418104)] void onmouseover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-606)] void onmousemove(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-605)] void onmousedown(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-607)] void onmouseup(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418100)] bool onselectstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418095)] void onfilterchange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418101)] bool ondragstart(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418108)] bool onbeforeupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418107)] void onafterupdate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418099)]  bool onerrorupdate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418106)] bool onrowexit(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418105)] void onrowenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418098)] void ondatasetchanged(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418097)] void ondataavailable(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418096)] void ondatasetcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418094)] void onlosecapture(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418093)] void onpropertychange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1014)] void onscroll(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418111)] void onfocus(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418112)] void onblur(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1016)] void onresize(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418092)] bool ondrag(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418091)] void ondragend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418090)] bool ondragenter(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418089)]  bool ondragover(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418088)] void ondragleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418087)] bool ondrop(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418083)] bool onbeforecut(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418086)] bool oncut(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418082)] bool onbeforecopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418085)] bool oncopy(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418081)] bool onbeforepaste(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418084)] bool onpaste(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1023)] bool oncontextmenu(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-2147418080)] void onrowsdelete(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418079)] void onrowsinserted(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(-2147418078)] void oncellchange(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(-609)] void onreadystatechange(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1030)] void onlayoutcomplete(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1031)] void onpage(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1042)] void onmouseenter(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1043)] void onmouseleave(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1044)] void onactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1045)] void ondeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1034)] bool onbeforedeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1047)] bool onbeforeactivate(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1048)] void onfocusin(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1049)] void onfocusout(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1035)] void onmove(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1036)] bool oncontrolselect(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1038)] bool onmovestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1039)] void onmoveend(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1040)] bool onresizestart(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1041)] void onresizeend(UnsafeNativeMethods.IHTMLEventObj evtObj); 
            [DispId(1033)] bool onmousewheel(UnsafeNativeMethods.IHTMLEventObj evtObj);
            [DispId(1002)]void onerror(UnsafeNativeMethods.IHTMLEventObj evtObj); 
        }

        [SuppressUnmanagedCodeSecurity, ComVisible(true), Guid("3050F25E-98B5-11CF-BB82-00AA00BDCE0B"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)] 
        internal interface IHTMLStyle {
            void SetFontFamily(string p); 
            string GetFontFamily(); 
            void SetFontStyle(string p);
            string GetFontStyle(); 
            void SetFontObject(string p);
            string GetFontObject();
            void SetFontWeight(string p);
            string GetFontWeight(); 
            void SetFontSize(object p);
            object GetFontSize(); 
            void SetFont(string p); 
            string GetFont();
            void SetColor(object p); 
            object GetColor();
            void SetBackground(string p);
            string GetBackground();
            void SetBackgroundColor(object p); 
            object GetBackgroundColor();
            void SetBackgroundImage(string p); 
            string GetBackgroundImage(); 
            void SetBackgroundRepeat(string p);
            string GetBackgroundRepeat(); 
            void SetBackgroundAttachment(string p);
            string GetBackgroundAttachment();
            void SetBackgroundPosition(string p);
            string GetBackgroundPosition(); 
            void SetBackgroundPositionX(object p);
            object GetBackgroundPositionX(); 
            void SetBackgroundPositionY(object p); 
            object GetBackgroundPositionY();
            void SetWordSpacing(object p); 
            object GetWordSpacing();
            void SetLetterSpacing(object p);
            object GetLetterSpacing();
            void SetTextDecoration(string p); 
            string GetTextDecoration();
            void SetTextDecorationNone(bool p); 
            bool GetTextDecorationNone(); 
            void SetTextDecorationUnderline(bool p);
            bool GetTextDecorationUnderline(); 
            void SetTextDecorationOverline(bool p);
            bool GetTextDecorationOverline();
            void SetTextDecorationLineThrough(bool p);
            bool GetTextDecorationLineThrough(); 
            void SetTextDecorationBlink(bool p);
            bool GetTextDecorationBlink(); 
            void SetVerticalAlign(object p); 
            object GetVerticalAlign();
            void SetTextTransform(string p); 
            string GetTextTransform();
            void SetTextAlign(string p);
            string GetTextAlign();
            void SetTextIndent(object p); 
            object GetTextIndent();
            void SetLineHeight(object p); 
            object GetLineHeight(); 
            void SetMarginTop(object p);
            object GetMarginTop(); 
            void SetMarginRight(object p);
            object GetMarginRight();
            void SetMarginBottom(object p);
            object GetMarginBottom(); 
            void SetMarginLeft(object p);
            object GetMarginLeft(); 
            void SetMargin(string p); 
            string GetMargin();
            void SetPaddingTop(object p); 
            object GetPaddingTop();
            void SetPaddingRight(object p);
            object GetPaddingRight();
            void SetPaddingBottom(object p); 
            object GetPaddingBottom();
            void SetPaddingLeft(object p); 
            object GetPaddingLeft(); 
            void SetPadding(string p);
            string GetPadding(); 
            void SetBorder(string p);
            string GetBorder();
            void SetBorderTop(string p);
            string GetBorderTop(); 
            void SetBorderRight(string p);
            string GetBorderRight(); 
            void SetBorderBottom(string p); 
            string GetBorderBottom();
            void SetBorderLeft(string p); 
            string GetBorderLeft();
            void SetBorderColor(string p);
            string GetBorderColor();
            void SetBorderTopColor(object p); 
            object GetBorderTopColor();
            void SetBorderRightColor(object p); 
            object GetBorderRightColor(); 
            void SetBorderBottomColor(object p);
            object GetBorderBottomColor(); 
            void SetBorderLeftColor(object p);
            object GetBorderLeftColor();
            void SetBorderWidth(string p);
            string GetBorderWidth(); 
            void SetBorderTopWidth(object p);
            object GetBorderTopWidth(); 
            void SetBorderRightWidth(object p); 
            object GetBorderRightWidth();
            void SetBorderBottomWidth(object p); 
            object GetBorderBottomWidth();
            void SetBorderLeftWidth(object p);
            object GetBorderLeftWidth();
            void SetBorderStyle(string p); 
            string GetBorderStyle();
            void SetBorderTopStyle(string p); 
            string GetBorderTopStyle(); 
            void SetBorderRightStyle(string p);
            string GetBorderRightStyle(); 
            void SetBorderBottomStyle(string p);
            string GetBorderBottomStyle();
            void SetBorderLeftStyle(string p);
            string GetBorderLeftStyle(); 
            void SetWidth(object p);
            object GetWidth(); 
            void SetHeight(object p); 
            object GetHeight();
            void SetStyleFloat(string p); 
            string GetStyleFloat();
            void SetClear(string p);
            string GetClear();
            void SetDisplay(string p); 
            string GetDisplay();
            void SetVisibility(string p); 
            string GetVisibility(); 
            void SetListStyleType(string p);
            string GetListStyleType(); 
            void SetListStylePosition(string p);
            string GetListStylePosition();
            void SetListStyleImage(string p);
            string GetListStyleImage(); 
            void SetListStyle(string p);
            string GetListStyle(); 
            void SetWhiteSpace(string p); 
            string GetWhiteSpace();
            void SetTop(object p); 
            object GetTop();
            void SetLeft(object p);
            object GetLeft();
            string GetPosition(); 
            void SetZIndex(object p);
            object GetZIndex(); 
            void SetOverflow(string p); 
            string GetOverflow();
            void SetPageBreakBefore(string p); 
            string GetPageBreakBefore();
            void SetPageBreakAfter(string p);
            string GetPageBreakAfter();
            void SetCssText(string p); 
            string GetCssText();
            void SetPixelTop(int p); 
            int GetPixelTop(); 
            void SetPixelLeft(int p);
            int GetPixelLeft(); 
            void SetPixelWidth(int p);
            int GetPixelWidth();
            void SetPixelHeight(int p);
            int GetPixelHeight(); 
            void SetPosTop(float p);
            float GetPosTop(); 
            void SetPosLeft(float p); 
            float GetPosLeft();
            void SetPosWidth(float p); 
            float GetPosWidth();
            void SetPosHeight(float p);
            float GetPosHeight();
            void SetCursor(string p); 
            string GetCursor();
            void SetClip(string p); 
            string GetClip(); 
            void SetFilter(string p);
            string GetFilter(); 
            void SetAttribute(string strAttributeName, object AttributeValue, int lFlags);
            object GetAttribute(string strAttributeName, int lFlags);
            bool RemoveAttribute(string strAttributeName, int lFlags);
        } 

        [ComImport(), 
         Guid("39088D7E-B71E-11D1-8F39-00C04FD946D0"), 
         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
        ] 
        public interface IExtender {

            int Align {get; set;}
 
            bool Enabled {get; set;}
 
            int Height {get; set;} 

            int Left {get; set;} 

            bool TabStop {get; set;}

            int Top {get; set;} 

            bool Visible {get; set;} 
 
            int Width {get; set;}
 
            string Name {[return: MarshalAs(UnmanagedType.BStr)]get;}

            object Parent {[return: MarshalAs(UnmanagedType.Interface)]get;}
 
            IntPtr Hwnd {get;}
 
            object Container {[return: MarshalAs(UnmanagedType.Interface)]get;} 

            void Move( 
                [In, MarshalAs(UnmanagedType.Interface)]
                object left,
                [In, MarshalAs(UnmanagedType.Interface)]
                object top, 
                [In, MarshalAs(UnmanagedType.Interface)]
                object width, 
                [In, MarshalAs(UnmanagedType.Interface)] 
                object height);
        } 

        [ComImport(),
         Guid("8A701DA0-4FEB-101B-A82E-08002B2B2337"),
         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ]
        public interface IGetOleObject { 
            [return: MarshalAs(UnmanagedType.Interface)] 
            object GetOleObject(ref Guid riid);
        } 

        [
            ComImport(),
            Guid("CB2F6722-AB3A-11d2-9C40-00C04FA30A3E"), 
            InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
        ] 
        internal interface ICorRuntimeHost { 

            [PreserveSig()] int CreateLogicalThreadState(); 
            [PreserveSig()] int DeleteLogicalThreadState();
            [PreserveSig()] int SwitchInLogicalThreadState(
             [In] ref uint pFiberCookie);                 // [in] Cookie that indicates the fiber to use.
 
            [PreserveSig()] int SwitchOutLogicalThreadState(
             out uint FiberCookie);               // [out] Cookie that indicates the fiber being switched out. 
 
            [PreserveSig()] int LocksHeldByLogicalThread(           // Return code.
             out uint pCount                        // [out] Number of locks that the current thread holds. 
                );

            [PreserveSig()] int MapFile(
             IntPtr          hFile,          // [in]  HANDLE for file 
             out IntPtr      hMapAddress);   // [out] HINSTANCE for mapped file
 
            //================================================================= 
            //
            // New hosting methods 
            //
            // Returns an object for configuring the runtime prior to
            // it starting. If the runtime has been initialized this
            // routine returns an error. See ICorConfiguration. 
            [PreserveSig()] int GetConfiguration([MarshalAs(UnmanagedType.IUnknown)] out object pConfiguration);
 
            // Starts the runtime. This is equivalent to CoInitializeCor(); 
            [PreserveSig()] int Start();
 
            // Terminates the runtime, This is equivalent CoUninitializeCor();
            [PreserveSig()] int Stop();

            // Creates a domain in the runtime. The identity array is 
            // a pointer to an array TYPE containing IIdentity objects defining
            // the security identity. 
            [PreserveSig()] int CreateDomain(string pwzFriendlyName, 
                                 [MarshalAs(UnmanagedType.IUnknown)] object pIdentityArray, // Optional
                                 [MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain); 

            // Returns the default domain.
            [PreserveSig()] int GetDefaultDomain([MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);
 

            // Enumerate currently existing domains. 
            [PreserveSig()] int EnumDomains(out IntPtr hEnum); 

            // Returns S_FALSE when there are no more domains. A domain 
            // is passed out only when S_OK is returned.
            [PreserveSig()] int NextDomain(IntPtr hEnum,
                               [MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);
 
            // Close the enumeration, releasing resources
            [PreserveSig()] int CloseEnum(IntPtr hEnum); 
 
            [PreserveSig()] int CreateDomainEx(string pwzFriendlyName, // Optional
                                   [MarshalAs(UnmanagedType.IUnknown)] object pSetup,        // Optional 
                                   [MarshalAs(UnmanagedType.IUnknown)] object pEvidence,     // Optional
                                   [MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);

            [PreserveSig()] int CreateDomainSetup([MarshalAs(UnmanagedType.IUnknown)] out object pAppDomainSetup); 

            [PreserveSig()] int CreateEvidence([MarshalAs(UnmanagedType.IUnknown)] out object pEvidence); 
 
            [PreserveSig()] int UnloadDomain([MarshalAs(UnmanagedType.IUnknown)] object pAppDomain);
 
            // Returns the thread's domain.
            [PreserveSig()] int CurrentDomain([MarshalAs(UnmanagedType.IUnknown)] out object pAppDomain);
        }
 
        [
            ComImport(), 
            Guid("CB2F6723-AB3A-11d2-9C40-00C04FA30A3E") 
        ]
        internal class CorRuntimeHost 
        {
        }

        [ComImport(), 
        Guid("000C0601-0000-0000-C000-000000000046"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ] 
        public interface IMsoComponentManager {
 
        /// 
        /// 
        ///      Return in *ppvObj an implementation of interface iid for service
        ///      guidService (same as IServiceProvider::QueryService). 
        ///      Return NOERROR if the requested service is supported, otherwise return
        ///      NULL in *ppvObj and an appropriate error (eg E_FAIL, E_NOINTERFACE). 
        ///  
        [PreserveSig]
        int QueryService( 
            ref Guid guidService,
            ref Guid iid,
            [MarshalAs(UnmanagedType.Interface)]
            out object ppvObj); 

        ///  
        ///  
        ///      Standard FDebugMessage method.
        ///      Since IMsoComponentManager is a reference counted interface, 
        ///      MsoDWGetChkMemCounter should be used when processing the
        ///      msodmWriteBe message.
        /// 
        [PreserveSig] 
        bool FDebugMessage(
            IntPtr hInst, 
            int msg, 
            IntPtr wParam,
            IntPtr lParam); 

        /// 
        /// 
        ///      Register component piComponent and its registration info pcrinfo with 
        ///      this component manager.  Return in *pdwComponentID a cookie which will
        ///      identify the component when it calls other IMsoComponentManager 
        ///      methods. 
        ///      Return TRUE if successful, FALSE otherwise.
        ///  
        [PreserveSig]
        bool FRegisterComponent(
            IMsoComponent component,
            NativeMethods.MSOCRINFOSTRUCT pcrinfo, 
            out int dwComponentID);
 
        ///  
        /// 
        ///      Undo the registration of the component identified by dwComponentID 
        ///      (the cookie returned from the FRegisterComponent method).
        ///      Return TRUE if successful, FALSE otherwise.
        /// 
        [PreserveSig] 
        bool FRevokeComponent(int dwComponentID);
 
        ///  
        /// 
        ///      Update the registration info of the component identified by 
        ///      dwComponentID (the cookie returned from FRegisterComponent) with the
        ///      new registration information pcrinfo.
        ///      Typically this is used to update the idle time registration data, but
        ///      can be used to update other registration data as well. 
        ///      Return TRUE if successful, FALSE otherwise.
        ///  
        [PreserveSig] 
        bool FUpdateComponentRegistration(int dwComponentID,NativeMethods.MSOCRINFOSTRUCT pcrinfo);
 
        /// 
        /// 
        ///      Notify component manager that component identified by dwComponentID
        ///      (cookie returned from FRegisterComponent) has been activated. 
        ///      The active component gets the  chance to process messages before they
        ///      are dispatched (via IMsoComponent::FPreTranslateMessage) and typically 
        ///      gets first chance at idle time after the host. 
        ///      This method fails if another component is already Exclusively Active.
        ///      In this case, FALSE is returned and SetLastError is set to 
        ///      msoerrACompIsXActive (comp usually need not take any special action
        ///      in this case).
        ///      Return TRUE if successful.
        ///  
        [PreserveSig]
        bool FOnComponentActivate(int dwComponentID); 
 
        /// 
        ///  
        ///      Called to inform component manager that  component identified by
        ///      dwComponentID (cookie returned from FRegisterComponent) wishes
        ///      to perform a tracking operation (such as mouse tracking).
        ///      The component calls this method with fTrack == TRUE to begin the 
        ///      tracking operation and with fTrack == FALSE to end the operation.
        ///      During the tracking operation the component manager routes messages 
        ///      to the tracking component (via IMsoComponent::FPreTranslateMessage) 
        ///      rather than to the active component.  When the tracking operation ends,
        ///      the component manager should resume routing messages to the active 
        ///      component.
        ///      Note: component manager should perform no idle time processing during a
        ///              tracking operation other than give the tracking component idle
        ///              time via IMsoComponent::FDoIdle. 
        ///      Note: there can only be one tracking component at a time.
        ///      Return TRUE if successful, FALSE otherwise. 
        ///  
        [PreserveSig]
        bool FSetTrackingComponent(int dwComponentID, [In, MarshalAs(UnmanagedType.Bool)] bool fTrack); 

        /// 
        /// 
        ///      Notify component manager that component identified by dwComponentID 
        ///      (cookie returned from FRegisterComponent) is entering the state
        ///      identified by uStateID (msocstateXXX value).  (For convenience when 
        ///      dealing with sub CompMgrs, the host can call this method passing 0 for 
        ///      dwComponentID.)
        ///      Component manager should notify all other interested components within 
        ///      the state context indicated by uContext (a msoccontextXXX value),
        ///      excluding those within the state context of a CompMgr in rgpicmExclude,
        ///      via IMsoComponent::OnEnterState (see "Comments on State Contexts",
        ///      above). 
        ///      Component Manager should also take appropriate action depending on the
        ///      value of uStateID (see msocstate comments, above). 
        ///      dwReserved is reserved for future use and should be zero. 
        ///
        ///      rgpicmExclude (can be NULL) is an array of cpicmExclude CompMgrs (can 
        ///      include root CompMgr and/or sub CompMgrs); components within the state
        ///      context of a CompMgr appearing in this array should NOT be notified of
        ///      the state change (note: if uContext    is msoccontextMine, the only
        ///      CompMgrs in rgpicmExclude that are checked for exclusion are those that 
        ///      are sub CompMgrs of this Component Manager, since all other CompMgrs
        ///      are outside of this Component Manager's state context anyway.) 
        /// 
        ///      Note: Calls to this method are symmetric with calls to
        ///      FOnComponentExitState. 
        ///      That is, if n OnComponentEnterState calls are made, the component is
        ///      considered to be in the state until n FOnComponentExitState calls are
        ///      made.  Before revoking its registration a component must make a
        ///      sufficient number of FOnComponentExitState calls to offset any 
        ///      outstanding OnComponentEnterState calls it has made.
        /// 
        ///      Note: inplace objects should not call this method with 
        ///      uStateID == msocstateModal when entering modal state. Such objects
        ///      should call IOleInPlaceFrame::EnableModeless instead. 
        /// 
        [PreserveSig]
        void OnComponentEnterState(int dwComponentID,int uStateID,int uContext,int cpicmExclude,/* IMsoComponentManger** */ int rgpicmExclude,int dwReserved);
 
        /// 
        ///  
        ///      Notify component manager that component identified by dwComponentID 
        ///      (cookie returned from FRegisterComponent) is exiting the state
        ///      identified by uStateID (a msocstateXXX value).  (For convenience when 
        ///      dealing with sub CompMgrs, the host can call this method passing 0 for
        ///      dwComponentID.)
        ///      uContext, cpicmExclude, and rgpicmExclude are as they are in
        ///      OnComponentEnterState. 
        ///      Component manager      should notify all appropriate interested components
        ///      (taking into account uContext, cpicmExclude, rgpicmExclude) via 
        ///      IMsoComponent::OnEnterState (see "Comments on State Contexts", above). 
        ///      Component Manager should also take appropriate action depending on
        ///      the value of uStateID (see msocstate comments, above). 
        ///      Return TRUE if, at the end of this call, the state is still in effect
        ///      at the root of this component manager's state context
        ///      (because the host or some other component is still in the state),
        ///      otherwise return FALSE (ie. return what FInState would return). 
        ///      Caller can normally ignore the return value.
        /// 
        ///      Note: n calls to this method are symmetric with n calls to 
        ///      OnComponentEnterState (see OnComponentEnterState comments, above).
        ///  
        [PreserveSig]
        bool FOnComponentExitState(
            int dwComponentID,
            int uStateID, 
            int uContext,
            int cpicmExclude, 
            /* IMsoComponentManager** */ int rgpicmExclude); 

        ///  
        /// 
        ///      Return TRUE if the state identified by uStateID (a msocstateXXX value)
        ///      is in effect at the root of this component manager's state context,
        ///      FALSE otherwise (see "Comments on State Contexts", above). 
        ///      pvoid is reserved for future use and should be NULL.
        ///  
        [PreserveSig] 
        bool FInState(int uStateID,/* PVOID */ IntPtr pvoid);
 
        /// 
        /// 
        ///      Called periodically by a component during IMsoComponent::FDoIdle.
        ///      Return TRUE if component can continue its idle time processing, 
        ///      FALSE if not (in which case component returns from FDoIdle.)
        ///  
        [PreserveSig] 
        bool FContinueIdle();
 
        /// 
        /// 
        ///      Component identified by dwComponentID (cookie returned from
        ///      FRegisterComponent) wishes to push a message loop for reason uReason. 
        ///      uReason is one the values from the msoloop enumeration (above).
        ///      pvLoopData is data private to the component. 
        ///      The component manager should push its message loop, 
        ///      calling IMsoComponent::FContinueMessageLoop(uReason, pvLoopData)
        ///      during each loop iteration (see IMsoComponent::FContinueMessageLoop 
        ///      comments).  When IMsoComponent::FContinueMessageLoop returns FALSE, the
        ///      component manager terminates the loop.
        ///      Returns TRUE if component manager terminates loop because component
        ///      told it to (by returning FALSE from IMsoComponent::FContinueMessageLoop), 
        ///      FALSE if it had to terminate the loop for some other reason.  In the
        ///      latter case, component should perform any necessary action (such as 
        ///      cleanup). 
        /// 
        [PreserveSig] 
        bool FPushMessageLoop(int dwComponentID,int uReason,/* PVOID */ int pvLoopData);

        /// 
        ///  
        ///      Cause the component manager to create a "sub" component manager, which
        ///      will be one of its children in the hierarchical tree of component 
        ///      managers used to maintiain state contexts (see "Comments on State 
        ///      Contexts", above).
        ///      piunkOuter is the controlling unknown (can be NULL), riid is the 
        ///      desired IID, and *ppvObj returns       the created sub component manager.
        ///      piunkServProv (can be NULL) is a ptr to an object supporting
        ///      IServiceProvider interface to which the created sub component manager
        ///      will delegate its IMsoComponentManager::QueryService calls. 
        ///      (see objext.h or docobj.h for definition of IServiceProvider).
        ///      Returns TRUE if successful. 
        ///  
        [PreserveSig]
        bool FCreateSubComponentManager( 
            [MarshalAs(UnmanagedType.Interface)]
            object punkOuter,
            [MarshalAs(UnmanagedType.Interface)]
            object punkServProv, 
            ref Guid riid,
            out IntPtr ppvObj); 
 
        /// 
        ///  
        ///      Return in *ppicm an AddRef'ed ptr to this component manager's parent
        ///      in the hierarchical tree of component managers used to maintain state
        ///      contexts (see "Comments on State       Contexts", above).
        ///      Returns TRUE if the parent is returned, FALSE if no parent exists or 
        ///      some error occurred.
        ///  
        [PreserveSig] 
        bool FGetParentComponentManager(
            out IMsoComponentManager ppicm); 

        /// 
        /// 
        ///      Return in *ppic an AddRef'ed ptr to the current active or tracking 
        ///      component (as indicated by dwgac (a msogacXXX value)), and
        ///      its registration information in *pcrinfo.  ppic and/or pcrinfo can be 
        ///      NULL if caller is not interested these values.  If pcrinfo is not NULL, 
        ///      caller should set pcrinfo->cbSize before calling this method.
        ///      Returns TRUE if the component indicated by dwgac exists, FALSE if no 
        ///      such component exists or some error occurred.
        ///      dwReserved is reserved for future use and should be zero.
        /// 
        [PreserveSig] 
        bool FGetActiveComponent(
        int dwgac, 
            [Out, MarshalAs(UnmanagedType.LPArray)] 
            IMsoComponent[] ppic,
            NativeMethods.MSOCRINFOSTRUCT pcrinfo, 
            int dwReserved);
        }

        [ComImport(), 
        Guid("000C0600-0000-0000-C000-000000000046"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ] 
        public interface IMsoComponent {
 
            /// 
            /// 
            ///      Standard FDebugMessage method.
            ///      Since IMsoComponentManager is a reference counted interface, 
            ///      MsoDWGetChkMemCounter should be used when processing the
            ///      msodmWriteBe message. 
            ///  
            [PreserveSig]
            bool FDebugMessage( 
                IntPtr hInst,
                int msg,
                IntPtr wParam,
                IntPtr lParam); 

            ///  
            ///  
            ///      Give component a chance to process the message pMsg before it is
            ///      translated and dispatched. Component can do TranslateAccelerator 
            ///      do IsDialogMessage, modify pMsg, or take some other action.
            ///      Return TRUE if the message is consumed, FALSE otherwise.
            /// 
            [PreserveSig] 
            bool FPreTranslateMessage(ref NativeMethods.MSG msg);
 
            ///  
            /// 
            ///      Notify component when app enters or exits (as indicated by fEnter) 
            ///      the state identified by uStateID (a value from olecstate enumeration).
            ///      Component should take action depending on value of uStateID
            ///       (see olecstate comments, above).
            /// 
            ///      Note: If n calls are made with TRUE fEnter, component should consider
            ///      the state to be in effect until n calls are made with FALSE fEnter. 
            /// 
            ///     Note: Components should be aware that it is possible for this method to
            ///     be called with FALSE fEnter more    times than it was called with TRUE 
            ///     fEnter (so, for example, if component is maintaining a state counter
            ///     (incremented when this method is called with TRUE fEnter, decremented
            ///     when called with FALSE fEnter), the counter should not be decremented
            ///     for FALSE fEnter if it is already at zero.) 
            /// 
            [PreserveSig] 
            void OnEnterState( 
                int uStateID,
                bool fEnter); 

            /// 
            /// 
            ///      Notify component when the host application gains or loses activation. 
            ///     If fActive is TRUE, the host app is being activated and dwOtherThreadID
            ///      is the ID of the thread owning the window being deactivated. 
            ///      If fActive is FALSE, the host app is being deactivated and 
            ///      dwOtherThreadID is the ID of the thread owning the window being
            ///      activated. 
            ///      Note: this method is not called when both the window being activated
            ///      and the one being deactivated belong to the host app.
            /// 
            [PreserveSig] 
            void OnAppActivate(
                bool fActive, 
                int dwOtherThreadID); 

            ///  
            /// 
            ///      Notify the active component that it has lost its active status because
            ///      the host or another component has become active.
            ///  
            [PreserveSig]
            void OnLoseActivation(); 
 
            /// 
            ///  
            ///      Notify component when a new object is being activated.
            ///      If pic is non-NULL, then it is the component that is being activated.
            ///      In this case, fSameComponent is TRUE if pic is the same component as
            ///      the callee of this method, and pcrinfo is the reg info of pic. 
            ///      If pic is NULL and fHostIsActivating is TRUE, then the host is the
            ///      object being activated, and pchostinfo is its host info. 
            ///      If pic is NULL and fHostIsActivating is FALSE, then there is no current 
            ///      active object.
            /// 
            ///      If pic is being activated and pcrinfo->grf has the
            ///      olecrfExclusiveBorderSpace bit set, component should hide its border
            ///      space tools (toolbars, status bars, etc.);
            ///      component should also do this if host is activating and 
            ///      pchostinfo->grfchostf has the olechostfExclusiveBorderSpace bit set.
            ///      In either of these cases, component should unhide its border space 
            ///      tools the next time it is activated. 
            ///
            ///      if pic is being activated and pcrinfo->grf has the 
            ///      olecrfExclusiveActivation bit is set, then pic is being activated in
            ///      "ExclusiveActive" mode.
            ///      Component should retrieve the top frame window that is hosting pic
            ///      (via pic->HwndGetWindow(olecWindowFrameToplevel, 0)). 
            ///      If this window is different from component's own top frame window,
            ///         component should disable its windows and do other things it would do 
            ///         when receiving OnEnterState(olecstateModal, TRUE) notification. 
            ///      Otherwise, if component is top-level,
            ///         it should refuse to have its window activated by appropriately 
            ///         processing WM_MOUSEACTIVATE (but see WM_MOUSEACTIVATE NOTE, above).
            ///      Component should remain in one of these states until the
            ///      ExclusiveActive mode ends, indicated by a future call to
            ///      OnActivationChange with ExclusiveActivation bit not set or with NULL 
            ///      pcrinfo.
            ///  
            [PreserveSig] 
            void OnActivationChange(
                IMsoComponent component, 
                bool fSameComponent,
                int pcrinfo,
                bool fHostIsActivating,
                int pchostinfo, 
                int dwReserved);
 
            ///  
            /// 
            ///      Give component a chance to do idle time tasks.  grfidlef is a group of 
            ///      bit flags taken from the enumeration of oleidlef values (above),
            ///      indicating the type of idle tasks to perform.
            ///      Component may periodically call IOleComponentManager::FContinueIdle;
            ///      if this method returns FALSE, component should terminate its idle 
            ///      time processing and return.
            ///      Return TRUE if more time is needed to perform the idle time tasks, 
            ///      FALSE otherwise. 
            ///      Note: If a component reaches a point where it has no idle tasks
            ///      and does not need FDoIdle calls, it should remove its idle task 
            ///      registration via IOleComponentManager::FUpdateComponentRegistration.
            ///      Note: If this method is called on while component is performing a
            ///      tracking operation, component should only perform idle time tasks that
            ///      it deems are appropriate to perform during tracking. 
            /// 
            [PreserveSig] 
            bool FDoIdle( 
                int grfidlef);
 

            /// 
            /// 
            ///      Called during each iteration of a message loop that the component 
            ///      pushed. uReason and pvLoopData are the reason and the component private
            ///      data that were passed to IOleComponentManager::FPushMessageLoop. 
            ///      This method is called after peeking the next message in the queue 
            ///      (via PeekMessage) but before the message is removed from the queue.
            ///      The peeked message is passed in the pMsgPeeked param (NULL if no 
            ///      message is in the queue).  This method may be additionally called when
            ///      the next message has already been removed from the queue, in which case
            ///      pMsgPeeked is passed as NULL.
            ///      Return TRUE if the message loop should continue, FALSE otherwise. 
            ///      If FALSE is returned, the component manager terminates the loop without
            ///      removing pMsgPeeked from the queue. 
            ///  
            [PreserveSig]
            bool FContinueMessageLoop( 
                int uReason,
                int pvLoopData,
                [MarshalAs(UnmanagedType.LPArray)] NativeMethods.MSG[] pMsgPeeked);
 

            ///  
            ///  
            ///      Called when component manager wishes to know if the component is in a
            ///      state in which it can terminate.  If fPromptUser is FALSE, component 
            ///      should simply return TRUE if it can terminate, FALSE otherwise.
            ///      If fPromptUser is TRUE, component should return TRUE if it can
            ///      terminate without prompting the user; otherwise it should prompt the
            ///      user, either 1.) asking user if it can terminate and returning TRUE 
            ///      or FALSE appropriately, or 2.) giving an indication as to why it
            ///      cannot terminate and returning FALSE. 
            ///  
            [PreserveSig]
            bool FQueryTerminate( 
                bool fPromptUser);

            /// 
            ///  
            ///      Called when component manager wishes to terminate the component's
            ///      registration.  Component should revoke its registration with component 
            ///      manager, release references to component manager and perform any 
            ///      necessary cleanup.
            ///  
            [PreserveSig]
            void Terminate();

            ///  
            /// 
            ///      Called to retrieve a window associated with the component, as specified 
            ///      by dwWhich, a olecWindowXXX value (see olecWindow, above). 
            ///      dwReserved is reserved for future use and should be zero.
            ///      Component should return the desired window or NULL if no such window 
            ///      exists.
            /// 

            [PreserveSig] 
            IntPtr HwndGetWindow(
                int dwWhich, 
                int dwReserved); 
        }
 
        [ComVisible(true), Guid("8CC497C0-A1DF-11ce-8098-00AA0047BE5D"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual),
        SuppressUnmanagedCodeSecurity()]
        public interface ITextDocument { 
            string GetName();
            object GetSelection(); 
            int GetStoryCount(); 
            object GetStoryRanges();
            int GetSaved(); 
            void SetSaved(int value);
            object GetDefaultTabStop();
            void SetDefaultTabStop(object value);
            void New(); 
            void Open(object pVar, int flags, int codePage);
            void Save(object pVar, int flags, int codePage); 
            int Freeze(); 
            int Unfreeze();
            void BeginEditCollection(); 
            void EndEditCollection();
            int Undo(int count);
            int Redo(int count);
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange Range(int cp1, int cp2); 
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange RangeFromPoint(int x, int y);
        }; 
 
        [ComVisible(true), Guid("8CC497C2-A1DF-11ce-8098-00AA0047BE5D"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual), 
        SuppressUnmanagedCodeSecurity()]
        public interface ITextRange {
            string GetText();
            void SetText(string text); 
            object GetChar();
            void SetChar(object ch); 
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange GetDuplicate(); 
            [return: MarshalAs(UnmanagedType.Interface)] ITextRange GetFormattedText();
            void SetFormattedText([In, MarshalAs(UnmanagedType.Interface)] ITextRange range); 
            int GetStart();
            void SetStart(int cpFirst);
            int GetEnd();
            void SetEnd(int cpLim); 
            object GetFont();
            void SetFont(object font); 
            object GetPara(); 
            void SetPara(object para);
            int GetStoryLength(); 
            int GetStoryType();
            void Collapse(int start);
            int Expand(int unit);
            int GetIndex(int unit); 
            void SetIndex(int unit, int index, int extend);
            void SetRange(int cpActive, int cpOther); 
            int InRange([In, MarshalAs(UnmanagedType.Interface)] ITextRange range); 
            int InStory([In, MarshalAs(UnmanagedType.Interface)] ITextRange range);
            int IsEqual([In, MarshalAs(UnmanagedType.Interface)] ITextRange range); 
            void Select();
            int StartOf(int unit, int extend);
            int EndOf(int unit, int extend);
            int Move(int unit, int count); 
            int MoveStart(int unit, int count);
            int MoveEnd(int unit, int count); 
            int MoveWhile(object cset, int count); 
            int MoveStartWhile(object cset, int count);
            int MoveEndWhile(object cset, int count); 
            int MoveUntil(object cset, int count);
            int MoveStartUntil(object cset, int count);
            int MoveEndUntil(object cset, int count);
            int FindText(string text, int cch, int flags); 
            int FindTextStart(string text, int cch, int flags);
            int FindTextEnd(string text, int cch, int flags); 
            int Delete(int unit, int count); 
            void Cut([Out] out object pVar);
            void Copy([Out] out object pVar); 
            void Paste(object pVar, int format);
            int CanPaste(object pVar, int format);
            int CanEdit();
            void ChangeCase(int type); 
            void GetPoint(int type, [Out] out int x, [Out] out int y);
            void SetPoint(int x, int y, int type, int extend); 
            void ScrollIntoView(int value); 
            object GetEmbeddedObject();
        }; 

        [ComImport(), Guid("00020D03-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IRichEditOleCallback {
            [PreserveSig] 
            int GetNewStorage(out IStorage ret);
 
            [PreserveSig] 
            int GetInPlaceContext(IntPtr lplpFrame, IntPtr lplpDoc, IntPtr lpFrameInfo);
 
            [PreserveSig]
            int ShowContainerUI(int fShow);

            [PreserveSig] 
            int QueryInsertObject(ref Guid lpclsid, IntPtr lpstg, int cp);
 
            [PreserveSig] 
            int DeleteObject(IntPtr lpoleobj);
 
            [PreserveSig]
            int QueryAcceptData(IComDataObject lpdataobj, /* CLIPFORMAT* */ IntPtr lpcfFormat, int reco, int fReally, IntPtr hMetaPict);

            [PreserveSig] 
            int ContextSensitiveHelp(int fEnterMode);
 
            [PreserveSig] 
            int GetClipboardData(NativeMethods.CHARRANGE lpchrg, int reco, IntPtr lplpdataobj);
 
            [PreserveSig]
            int GetDragDropEffect(bool fDrag, int grfKeyState, ref int pdwEffect);

            [PreserveSig] 
            int GetContextMenu(short seltype, IntPtr lpoleobj, NativeMethods.CHARRANGE lpchrg, out IntPtr hmenu);
        } 
 
        [ComImport(), Guid("00000115-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceUIWindow { 
             IntPtr GetWindow();

             [PreserveSig]
             int ContextSensitiveHelp( 

                     int fEnterMode); 
 

             [PreserveSig] 
             int GetBorder(
                    [Out]
                      NativeMethods.COMRECT lprectBorder);
 

             [PreserveSig] 
             int RequestBorderSpace( 
                    [In]
                      NativeMethods.COMRECT pborderwidths); 


             [PreserveSig]
             int SetBorderSpace( 
                    [In]
                      NativeMethods.COMRECT pborderwidths); 
 

             void SetActiveObject( 
                    [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IOleInPlaceActiveObject pActiveObject,
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string pszObjName); 

 
        } 
        [SuppressUnmanagedCodeSecurity, ComImport(),
        Guid("00000117-0000-0000-C000-000000000046"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceActiveObject {

             [PreserveSig] 
             int GetWindow( out IntPtr hwnd );
 
 
             void ContextSensitiveHelp(
 
                     int fEnterMode);


             [PreserveSig] 
             int TranslateAccelerator(
                    [In] 
                      ref NativeMethods.MSG lpmsg); 

 
             void OnFrameWindowActivate(

                     bool fActivate);
 

             void OnDocWindowActivate( 
 
                     int fActivate);
 

             void ResizeBorder(
                    [In]
                      NativeMethods.COMRECT prcBorder, 
                    [In]
                      UnsafeNativeMethods.IOleInPlaceUIWindow pUIWindow, 
 
                     bool fFrameWindow);
 

             void EnableModeless(

                     int fEnable); 

 
        } 
        [ComImport(), Guid("00000114-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleWindow { 

             [PreserveSig]
             int GetWindow( [Out]out IntPtr hwnd );
 

             void ContextSensitiveHelp( 
 
                     int fEnterMode);
        } 
        [SuppressUnmanagedCodeSecurity, ComImport(),
        Guid("00000113-0000-0000-C000-000000000046"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceObject { 

             [PreserveSig] 
             int GetWindow( [Out]out IntPtr hwnd ); 

 
             void ContextSensitiveHelp(

                     int fEnterMode);
 

             void InPlaceDeactivate(); 
 

             [PreserveSig] 
             int UIDeactivate();


             void SetObjectRects( 
                    [In]
                      NativeMethods.COMRECT lprcPosRect, 
                    [In] 
                      NativeMethods.COMRECT lprcClipRect);
 

             void ReactivateAndUndo();

 
        }
        [SuppressUnmanagedCodeSecurity, ComImport(), 
        Guid("00000112-0000-0000-C000-000000000046"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleObject { 

             [PreserveSig]
             int SetClientSite(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                      UnsafeNativeMethods.IOleClientSite pClientSite);
 
 
             UnsafeNativeMethods.IOleClientSite GetClientSite();
 
             [PreserveSig]
             int SetHostNames(
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string szContainerApp, 
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string szContainerObj); 
 
             [PreserveSig]
             int Close( 

                     int dwSaveOption);

             [PreserveSig] 
             int SetMoniker(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker, 
                    [In, MarshalAs(UnmanagedType.Interface)]
                     object pmk); 

              [PreserveSig]
              int GetMoniker(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwAssign,
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker, 
                    [Out, MarshalAs(UnmanagedType.Interface)]
                     out object moniker); 

             [PreserveSig]
             int InitFromData(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                     IComDataObject pDataObject,
 
                     int fCreation, 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwReserved); 

             [PreserveSig]
             int GetClipboardData(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwReserved,
                     out IComDataObject data); 
 
             [PreserveSig]
             int DoVerb( 

                     int iVerb,
                    [In]
                     IntPtr lpmsg, 
                    [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IOleClientSite pActiveSite, 
 
                     int lindex,
 
                     IntPtr hwndParent,
                    [In]
                     NativeMethods.COMRECT lprcPosRect);
 
             [PreserveSig]
             int EnumVerbs(out UnsafeNativeMethods.IEnumOLEVERB e); 
 
             [PreserveSig]
             int OleUpdate(); 

             [PreserveSig]
             int IsUpToDate();
 
             [PreserveSig]
             int GetUserClassID( 
                    [In, Out] 
                      ref Guid pClsid);
 
             [PreserveSig]
             int GetUserType(
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwFormOfType, 
                    [Out, MarshalAs(UnmanagedType.LPWStr)]
                     out string userType); 
 
             [PreserveSig]
             int SetExtent( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwDrawAspect,
                    [In]
                     NativeMethods.tagSIZEL pSizel); 

             [PreserveSig] 
             int GetExtent( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwDrawAspect, 
                    [Out]
                     NativeMethods.tagSIZEL pSizel);

             [PreserveSig] 
             int Advise(
                     IAdviseSink pAdvSink, 
                     out int cookie); 

             [PreserveSig] 
             int Unadvise(
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwConnection);
 
              [PreserveSig]
              int EnumAdvise(out IEnumSTATDATA e); 
 
             [PreserveSig]
             int GetMiscStatus( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwAspect,
                     out int misc);
 
             [PreserveSig]
             int SetColorScheme( 
                    [In] 
                      NativeMethods.tagLOGPALETTE pLogpal);
        } 

        [ComImport(), Guid("1C2056CC-5EF4-101B-8BC8-00AA003E3B29"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleInPlaceObjectWindowless {
 
             [PreserveSig]
             int SetClientSite( 
                    [In, MarshalAs(UnmanagedType.Interface)] 
                      UnsafeNativeMethods.IOleClientSite pClientSite);
 
             [PreserveSig]
             int GetClientSite(out UnsafeNativeMethods.IOleClientSite site);

             [PreserveSig] 
             int SetHostNames(
                    [In, MarshalAs(UnmanagedType.LPWStr)] 
                      string szContainerApp, 
                    [In, MarshalAs(UnmanagedType.LPWStr)]
                      string szContainerObj); 

             [PreserveSig]
             int Close(
 
                     int dwSaveOption);
 
             [PreserveSig] 
             int SetMoniker(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker,
                    [In, MarshalAs(UnmanagedType.Interface)]
                     object pmk);
 
              [PreserveSig]
              int GetMoniker( 
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwAssign,
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwWhichMoniker,
                    [Out, MarshalAs(UnmanagedType.Interface)]
                     out object moniker);
 
             [PreserveSig]
             int InitFromData( 
                    [In, MarshalAs(UnmanagedType.Interface)] 
                     IComDataObject pDataObject,
 
                     int fCreation,
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwReserved);
 
             [PreserveSig]
             int GetClipboardData( 
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwReserved,
                     out IComDataObject data); 

             [PreserveSig]
             int DoVerb(
 
                     int iVerb,
                    [In] 
                     IntPtr lpmsg, 
                    [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IOleClientSite pActiveSite, 

                     int lindex,

                     IntPtr hwndParent, 
                    [In]
                     NativeMethods.COMRECT lprcPosRect); 
 
             [PreserveSig]
             int EnumVerbs(out UnsafeNativeMethods.IEnumOLEVERB e); 

             [PreserveSig]
             int OleUpdate();
 
             [PreserveSig]
             int IsUpToDate(); 
 
             [PreserveSig]
             int GetUserClassID( 
                    [In, Out]
                      ref Guid pClsid);

             [PreserveSig] 
             int GetUserType(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwFormOfType, 
                    [Out, MarshalAs(UnmanagedType.LPWStr)]
                     out string userType); 

             [PreserveSig]
             int SetExtent(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwDrawAspect,
                    [In] 
                     NativeMethods.tagSIZEL pSizel); 

             [PreserveSig] 
             int GetExtent(
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwDrawAspect,
                    [Out] 
                     NativeMethods.tagSIZEL pSizel);
 
             [PreserveSig] 
             int Advise(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                     IAdviseSink pAdvSink,
                     out int cookie);

             [PreserveSig] 
             int Unadvise(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int dwConnection); 

              [PreserveSig] 
                  int EnumAdvise(out IEnumSTATDATA e);

             [PreserveSig]
             int GetMiscStatus( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int dwAspect, 
                     out int misc); 

             [PreserveSig] 
             int SetColorScheme(
                    [In]
                      NativeMethods.tagLOGPALETTE pLogpal);
 
             [PreserveSig]
             int OnWindowMessage( 
                [In, MarshalAs(UnmanagedType.U4)]  int msg, 
                [In, MarshalAs(UnmanagedType.U4)]  int wParam,
                [In, MarshalAs(UnmanagedType.U4)]  int lParam, 
                [Out, MarshalAs(UnmanagedType.U4)] int plResult);

             [PreserveSig]
             int GetDropTarget( 
                [Out, MarshalAs(UnmanagedType.Interface)] object ppDropTarget);
 
        }; 

 
        [SuppressUnmanagedCodeSecurity, ComImport(),
        Guid("B196B288-BAB4-101A-B69C-00AA00341D07"),
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleControl { 
             [PreserveSig]
             int GetControlInfo( 
                    [Out] 
                      NativeMethods.tagCONTROLINFO pCI);
 
             [PreserveSig]
             int OnMnemonic(
                    [In]
                      ref NativeMethods.MSG pMsg); 

             [PreserveSig] 
             int OnAmbientPropertyChange( 

                     int dispID); 

             [PreserveSig]
             int FreezeEvents(
 
                     int bFreeze);
 
        } 
        [ComImport(), Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleServiceProvider { 
             [PreserveSig]
             int QueryService(
                  [In]
                      ref Guid guidService, 
                  [In]
                  ref Guid riid, 
                  out IntPtr ppvObject); 
        }
        [ComImport(), Guid("0000010d-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IViewObject {
            [PreserveSig]
            int Draw(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,
 
                int lindex, 

                IntPtr pvAspect, 
                [In]
                NativeMethods.tagDVTARGETDEVICE ptd,

                IntPtr hdcTargetDev, 

                IntPtr hdcDraw, 
                [In] 
                NativeMethods.COMRECT lprcBounds,
                [In] 
                NativeMethods.COMRECT lprcWBounds,

                IntPtr pfnContinue,
                [In] 
                int dwContinue);
 
 
            [PreserveSig]
            int GetColorSet( 
                [In, MarshalAs(UnmanagedType.U4)]
                int dwDrawAspect,

                int lindex, 

                IntPtr pvAspect, 
                [In] 
                NativeMethods.tagDVTARGETDEVICE ptd,
 
                IntPtr hicTargetDev,
                [Out]
                NativeMethods.tagLOGPALETTE ppColorSet);
 
            [PreserveSig]
            int Freeze( 
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,
 
                int lindex,

                IntPtr pvAspect,
                [Out] 
                IntPtr pdwFreeze);
 
            [PreserveSig] 
            int Unfreeze(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwFreeze);


            void SetAdvise( 
                [In, MarshalAs(UnmanagedType.U4)]
                int aspects, 
                [In, MarshalAs(UnmanagedType.U4)] 
                int advf,
                [In, MarshalAs(UnmanagedType.Interface)] 
                IAdviseSink pAdvSink);


            void GetAdvise( 
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] paspects, 
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] advf,
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)]
                IAdviseSink[] pAdvSink); 
        }
        [ComImport(), Guid("00000127-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IViewObject2 /* : IViewObject */ { 
            void Draw(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,

                int lindex,
 
                IntPtr pvAspect,
                [In] 
                NativeMethods.tagDVTARGETDEVICE ptd, 

                IntPtr hdcTargetDev, 

                IntPtr hdcDraw,
                [In]
                NativeMethods.COMRECT lprcBounds, 
                [In]
                NativeMethods.COMRECT lprcWBounds, 
 
                IntPtr pfnContinue,
                [In] 
                int dwContinue);


            [PreserveSig] 
            int GetColorSet(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect, 

                int lindex, 

                IntPtr pvAspect,
                [In]
                NativeMethods.tagDVTARGETDEVICE ptd, 

                IntPtr hicTargetDev, 
                [Out] 
                NativeMethods.tagLOGPALETTE ppColorSet);
 

            [PreserveSig]
            int Freeze(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect,
 
                int lindex, 

                IntPtr pvAspect, 
                [Out]
                IntPtr pdwFreeze);

 
            [PreserveSig]
            int Unfreeze( 
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwFreeze);
 

            void SetAdvise(
                [In, MarshalAs(UnmanagedType.U4)]
                int aspects, 
                [In, MarshalAs(UnmanagedType.U4)]
                int advf, 
                [In, MarshalAs(UnmanagedType.Interface)] 
                IAdviseSink pAdvSink);
 

            void GetAdvise(
                // These can be NULL if caller doesn't want them
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] paspects,
                // These can be NULL if caller doesn't want them 
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                int[] advf,
                // These can be NULL if caller doesn't want them 
                [In, Out, MarshalAs(UnmanagedType.LPArray)]
                IAdviseSink[] pAdvSink);

 
            void GetExtent(
                [In, MarshalAs(UnmanagedType.U4)] 
                int dwDrawAspect, 

                int lindex, 
                [In]
                NativeMethods.tagDVTARGETDEVICE ptd,
                [Out]
                NativeMethods.tagSIZEL lpsizel); 
        }
 
        [ComImport(), Guid("0000010C-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IPersist {
 
            [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
            void GetClassID(
                           [Out]
                           out Guid pClassID); 
        }
 
        [ComImport(), Guid("37D84F60-42CB-11CE-8135-00AA004BB851"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IPersistPropertyBag {
            void GetClassID( 
                [Out]
                out Guid pClassID);

 
            void InitNew();
 
 
            void Load(
                [In, MarshalAs(UnmanagedType.Interface)] 
                IPropertyBag pPropBag,
                [In, MarshalAs(UnmanagedType.Interface)]
                IErrorLog pErrorLog);
 

            void Save( 
                [In, MarshalAs(UnmanagedType.Interface)] 
                IPropertyBag pPropBag,
                [In, MarshalAs(UnmanagedType.Bool)] 
                bool fClearDirty,
                [In, MarshalAs(UnmanagedType.Bool)]
                bool fSaveAllProperties);
        } 
        [
            ComImport(), 
        Guid("CF51ED10-62FE-11CF-BF86-00A0C9034836"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
        ] 
        public interface IQuickActivate {
            void QuickActivate(
                              [In]
                              UnsafeNativeMethods.tagQACONTAINER pQaContainer, 
                              [Out]
                              UnsafeNativeMethods.tagQACONTROL pQaControl); 
 

            void SetContentExtent( 
                                 [In]
                                 NativeMethods.tagSIZEL pSizel);

 
            void GetContentExtent(
                                 [Out] 
                                 NativeMethods.tagSIZEL pSizel); 

        } 

        [ComImport(), Guid("000C060B-0000-0000-C000-000000000046"),
            SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
        public class SMsoComponentManager 
        {
        } 
 
        [ComImport(), Guid("55272A00-42CB-11CE-8135-00AA004BB851"),
        InterfaceType(ComInterfaceType.InterfaceIsIUnknown) 
        ]
        public interface IPropertyBag {
            [PreserveSig]
            int Read( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszPropName, 
                [In, Out] 
                ref object pVar,
                [In] 
                IErrorLog pErrorLog);

            [PreserveSig]
            int Write( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                string pszPropName, 
                [In] 
                ref object pVar);
        } 

    [ComImport(), Guid("3127CA40-446E-11CE-8135-00AA004BB851"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
            public interface IErrorLog {
                     void AddError( 
                            [In, MarshalAs(UnmanagedType.LPWStr)]
                             string pszPropName_p0, 
                            [In, MarshalAs(UnmanagedType.Struct)] 
                              NativeMethods.tagEXCEPINFO pExcepInfo_p1);
 
            }

    [ComImport(), Guid("00000109-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPersistStream { 

         void GetClassID([Out] out Guid pClassId); 
 
         [PreserveSig]
         int IsDirty(); 


         void Load(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm);
 
 
         void Save(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm,
                [In, MarshalAs(UnmanagedType.Bool)]
                 bool fClearDirty);
 

         long GetSizeMax(); 
 

    } 

    [SuppressUnmanagedCodeSecurity, ComImport(),
    Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IPersistStreamInit {
         void GetClassID( 
                [Out] 
                  out Guid pClassID);
 

         [PreserveSig]
         int IsDirty();
 

         void Load( 
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm);
 

             void Save(
                    [In, MarshalAs(UnmanagedType.Interface)]
                      IStream pstm, 
                    [In, MarshalAs(UnmanagedType.Bool)]
                     bool fClearDirty); 
 

         void GetSizeMax( 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 long pcbSize);

 
         void InitNew();
 
 
    }
 
    [SuppressUnmanagedCodeSecurity, ComImport(),
    Guid("B196B286-BAB4-101A-B69C-00AA00341D07"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IConnectionPoint { 

        [PreserveSig] 
        int GetConnectionInterface(out Guid iid); 

 
        [PreserveSig]
        int GetConnectionPointContainer(
            [MarshalAs(UnmanagedType.Interface)]
            ref IConnectionPointContainer pContainer); 

 
         [PreserveSig] 
         int Advise(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  object pUnkSink,
              ref int cookie);

 
        [PreserveSig]
        int Unadvise( 
 
                 int cookie);
 
        [PreserveSig]
        int EnumConnections(out object pEnum);

    } 

    [ComImport(), Guid("0000010A-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IPersistStorage { 
         void GetClassID(
                [Out] 
                  out Guid pClassID);

         [PreserveSig]
         int IsDirty(); 

         void InitNew(IStorage pstg); 
 
         [PreserveSig]
         int Load(IStorage pstg); 

         void Save(IStorage pStgSave, bool fSameAsLoad);

         void SaveCompleted(IStorage pStgNew); 

         void HandsOffStorage(); 
    } 

    [ComImport(), Guid("00020404-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IEnumVariant {
         [PreserveSig]
         int Next(
                [In, MarshalAs(UnmanagedType.U4)] 
                 int celt,
                [In, Out] 
                 IntPtr rgvar, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] pceltFetched); 

         void Skip(
                [In, MarshalAs(UnmanagedType.U4)]
                 int celt); 

         void Reset(); 
 
         void Clone(
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.IEnumVariant[] ppenum);
    }

    [ComImport(), Guid("00000104-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IEnumOLEVERB {
 
 
         [PreserveSig]
         int Next( 
                [MarshalAs(UnmanagedType.U4)]
                int celt,
                [Out]
                NativeMethods.tagOLEVERB rgelt, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                int[] pceltFetched); 
 
         [PreserveSig]
         int Skip( 
                [In, MarshalAs(UnmanagedType.U4)]
                 int celt);

 
         void Reset();
 
 
         void Clone(
            out IEnumOLEVERB ppenum); 
    }

    // INTERFACE: IEnumACString
 
    // This interface was implemented to return autocomplete strings
    // into the caller's buffer (to reduce the number of memory allocations 
    // A sort index is also returned to control the order of items displayed 
    // by autocomplete.  The sort index should be set to zero if unused
    // The NextItem method increments the current index by one (similar to Next 
    // when one item is requested

    //public interface IEnumString
    //Do not declare IEnumString here -- use IEnumString from interopservices. 
    // even if it looks like it works, if you declaring the marshalling incorrectly, it will barf on appverifier.
 
 
    //-------------------------------------------------------------------------
    // IAutoComplete interface 
    // [Member functions]
    // IAutoComplete::Init(hwndEdit, punkACL, pwszRegKeyPath, pwszQuickComplete)
    // This function initializes an AutoComplete object, telling it
    // what control to subclass, and what list of strings to process. 
    // IAutoComplete::Enable(fEnable)
    // This function enables or disables the AutoComplete functionality. 
    //-------------------------------------------------------------------------- 

    [SuppressUnmanagedCodeSecurity, ComImport(), Guid("00bb2762-6a77-11d0-a535-00c04fd7d062"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IAutoComplete
    {

        int Init( 
                [In] HandleRef hwndEdit,          // hwnd of editbox or editbox deriviative.
                [In] System.Runtime.InteropServices.ComTypes.IEnumString punkACL,          // Pointer to object containing string to complete from. (IEnumString *) 
                [In] string pwszRegKeyPath,       // 
                [In] string pwszQuickComplete
                ); 
        void Enable([In] bool fEnable);            // Is it enabled?
    }

 
    [SuppressUnmanagedCodeSecurity, ComImport(), Guid("EAC04BC0-3791-11d2-BB95-0060977B464C"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
 
    public interface IAutoComplete2 
    {
        int Init( 
                [In] HandleRef hwndEdit,          // hwnd of editbox or editbox deriviative.
                [In] System.Runtime.InteropServices.ComTypes.IEnumString punkACL,          // Pointer to object containing string to complete from. (IEnumString *)
                [In] string pwszRegKeyPath,       //
                [In] string pwszQuickComplete 
                );
        void  Enable([In] bool fEnable);            // Is it enabled? 
 
        int  SetOptions([In] int dwFlag);
        void GetOptions([Out] IntPtr pdwFlag); 
    }

    [SuppressUnmanagedCodeSecurity, ComImport(), Guid("0000000C-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IStream { 

         int Read( 
 
                 IntPtr buf,
 
                 int len);


         int Write( 

                 IntPtr buf, 
 
                 int len);
 
        [return: MarshalAs(UnmanagedType.I8)]
         long Seek(
                [In, MarshalAs(UnmanagedType.I8)]
                 long dlibMove, 

                 int dwOrigin); 
 

         void SetSize( 
                [In, MarshalAs(UnmanagedType.I8)]
                 long libNewSize);

        [return: MarshalAs(UnmanagedType.I8)] 
         long CopyTo(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  UnsafeNativeMethods.IStream pstm, 
                [In, MarshalAs(UnmanagedType.I8)]
                 long cb, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 long[] pcbRead);

 
         void Commit(
 
                 int grfCommitFlags); 

 
         void Revert();


         void LockRegion( 
                [In, MarshalAs(UnmanagedType.I8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.I8)] 
                 long cb,
 
                 int dwLockType);


         void UnlockRegion( 
                [In, MarshalAs(UnmanagedType.I8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.I8)] 
                 long cb,
 
                 int dwLockType);


         void Stat( 
                 [Out]
                 NativeMethods.STATSTG pStatstg, 
                 int grfStatFlag); 

        [return: MarshalAs(UnmanagedType.Interface)] 
          UnsafeNativeMethods.IStream Clone();
    }

    public abstract class CharBuffer 
    {
 
        public static CharBuffer CreateBuffer(int size) 
        {
            if (Marshal.SystemDefaultCharSize == 1) 
            {
                return new AnsiCharBuffer(size);
            }
            return new UnicodeCharBuffer(size); 
        }
 
        public abstract IntPtr AllocCoTaskMem(); 
        public abstract string GetString();
        public abstract void PutCoTaskMem(IntPtr ptr); 
        public abstract void PutString(string s);
    }

    public class AnsiCharBuffer : CharBuffer 
    {
 
        internal byte[] buffer; 
        internal int offset;
 
        public AnsiCharBuffer(int size)
        {
            buffer = new byte[size];
        } 

        public override IntPtr AllocCoTaskMem() 
        { 
            IntPtr result = Marshal.AllocCoTaskMem(buffer.Length);
            Marshal.Copy(buffer, 0, result, buffer.Length); 
            return result;
        }

        public override string GetString() 
        {
            int i = offset; 
            while (i < buffer.Length && buffer[i] != 0) 
                i++;
            string result = Encoding.Default.GetString(buffer, offset, i - offset); 
            if (i < buffer.Length)
                i++;
            offset = i;
            return result; 
        }
 
        public override void PutCoTaskMem(IntPtr ptr) 
        {
            Marshal.Copy(ptr, buffer, 0, buffer.Length); 
            offset = 0;
        }

        public override void PutString(string s) 
        {
            byte[] bytes = Encoding.Default.GetBytes(s); 
            int count = Math.Min(bytes.Length, buffer.Length - offset); 
            Array.Copy(bytes, 0, buffer, offset, count);
            offset += count; 
            if (offset < buffer.Length) buffer[offset++] = 0;
        }
    }
 
    public class UnicodeCharBuffer : CharBuffer
    { 
 
        internal char[] buffer;
        internal int offset; 

        public UnicodeCharBuffer(int size)
        {
            buffer = new char[size]; 
        }
 
        public override IntPtr AllocCoTaskMem() 
        {
            IntPtr result = Marshal.AllocCoTaskMem(buffer.Length * 2); 
            Marshal.Copy(buffer, 0, result, buffer.Length);
            return result;
        }
 
        public override String GetString()
        { 
            int i = offset; 
            while (i < buffer.Length && buffer[i] != 0) i++;
            string result = new string(buffer, offset, i - offset); 
            if (i < buffer.Length) i++;
            offset = i;
            return result;
        } 

        public override void PutCoTaskMem(IntPtr ptr) 
        { 
            Marshal.Copy(ptr, buffer, 0, buffer.Length);
            offset = 0; 
        }

        public override void PutString(string s)
        { 
            int count = Math.Min(s.Length, buffer.Length - offset);
            s.CopyTo(0, buffer, offset, count); 
            offset += count; 
            if (offset < buffer.Length) buffer[offset++] = (char)0;
        } 
    }

    public class ComStreamFromDataStream : IStream {
        protected Stream dataStream; 

        // to support seeking ahead of the stream length... 
        private long virtualPosition = -1; 

 
        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        public ComStreamFromDataStream(Stream dataStream)
        {
            if (dataStream == null) throw new ArgumentNullException("dataStream"); 
            this.dataStream = dataStream;
        } 
 
        private void ActualizeVirtualPosition() {
            if (virtualPosition == -1) return; 

            if (virtualPosition > dataStream.Length)
                dataStream.SetLength(virtualPosition);
 
            dataStream.Position = virtualPosition;
 
            virtualPosition = -1; 
        }
 
        public IStream Clone() {
            NotImplemented();
            return null;
        } 

        public void Commit(int grfCommitFlags) { 
            dataStream.Flush(); 
            // Extend the length of the file if needed.
            ActualizeVirtualPosition(); 
        }

        public long CopyTo(IStream pstm, long cb, long[] pcbRead) {
            int bufsize = 4096; // one page 
            IntPtr buffer = Marshal.AllocHGlobal(bufsize);
            if (buffer == IntPtr.Zero) throw new OutOfMemoryException(); 
            long written = 0; 
            try {
                while (written < cb) { 
                    int toRead = bufsize;
                    if (written + toRead > cb) toRead  = (int) (cb - written);
                    int read = Read(buffer, toRead);
                    if (read == 0) break; 
                    if (pstm.Write(buffer, read) != read) {
                        throw EFail("Wrote an incorrect number of bytes"); 
                    } 
                    written += read;
                } 
            }
            finally {
                Marshal.FreeHGlobal(buffer);
            } 
            if (pcbRead != null && pcbRead.Length > 0) {
                pcbRead[0] = written; 
            } 

            return written; 
        }

        public Stream GetDataStream() {
            return dataStream; 
        }
 
        public void LockRegion(long libOffset, long cb, int dwLockType) { 
        }
 
        protected static ExternalException EFail(string msg) {
            ExternalException e = new ExternalException(msg, NativeMethods.E_FAIL);
            throw e;
        } 

        protected static void NotImplemented() { 
            ExternalException e = new ExternalException(SR.GetString(SR.UnsafeNativeMethodsNotImplemented), NativeMethods.E_NOTIMPL); 
            throw e;
        } 

        public int Read(IntPtr buf, /* cpr: int offset,*/  int length) {
            //        System.Text.Out.WriteLine("IStream::Read(" + length + ")");
            byte[] buffer = new byte[length]; 
            int count = Read(buffer, length);
            Marshal.Copy(buffer, 0, buf, count); 
            return count; 
        }
 
        public int Read(byte[] buffer, /* cpr: int offset,*/  int length) {
            ActualizeVirtualPosition();
            return dataStream.Read(buffer, 0, length);
        } 

        public void Revert() { 
            NotImplemented(); 
        }
 
        public long Seek(long offset, int origin) {
            // Console.WriteLine("IStream::Seek("+ offset + ", " + origin + ")");
            long pos = virtualPosition;
            if (virtualPosition == -1) { 
                pos = dataStream.Position;
            } 
            long len = dataStream.Length; 
            switch (origin) {
                case NativeMethods.STREAM_SEEK_SET: 
                    if (offset <= len) {
                        dataStream.Position = offset;
                        virtualPosition = -1;
                    } 
                    else {
                        virtualPosition = offset; 
                    } 
                    break;
                case NativeMethods.STREAM_SEEK_END: 
                    if (offset <= 0) {
                        dataStream.Position = len + offset;
                        virtualPosition = -1;
                    } 
                    else {
                        virtualPosition = len + offset; 
                    } 
                    break;
                case NativeMethods.STREAM_SEEK_CUR: 
                    if (offset+pos <= len) {
                        dataStream.Position = pos + offset;
                        virtualPosition = -1;
                    } 
                    else {
                        virtualPosition = offset + pos; 
                    } 
                    break;
            } 
            if (virtualPosition != -1) {
                return virtualPosition;
            }
            else { 
                return dataStream.Position;
            } 
        } 

        public void SetSize(long value) { 
            dataStream.SetLength(value);
        }

        public void Stat(NativeMethods.STATSTG pstatstg, int grfStatFlag) { 
            pstatstg.type = 2; // STGTY_STREAM
            pstatstg.cbSize = dataStream.Length; 
            pstatstg.grfLocksSupported = 2; //LOCK_EXCLUSIVE 
        }
 
        public void UnlockRegion(long libOffset, long cb, int dwLockType) {
        }

        public int Write(IntPtr buf, /* cpr: int offset,*/ int length) { 
            byte[] buffer = new byte[length];
            Marshal.Copy(buf, buffer, 0, length); 
            return Write(buffer, length); 
        }
 
        public int Write(byte[] buffer, /* cpr: int offset,*/ int length) {
            ActualizeVirtualPosition();
            dataStream.Write(buffer, 0, length);
            return length; 
        }
    } 
    [ComImport(), Guid("0000000B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IStorage {
 
        [return: MarshalAs(UnmanagedType.Interface)]
          UnsafeNativeMethods.IStream CreateStream(
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsName, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int grfMode, 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved1,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved2);

        [return: MarshalAs(UnmanagedType.Interface)]
          UnsafeNativeMethods.IStream OpenStream( 
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsName, 
 
                 IntPtr reserved1,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int grfMode,
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved2);
 
        [return: MarshalAs(UnmanagedType.Interface)]
          UnsafeNativeMethods.IStorage CreateStorage( 
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int grfMode,
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved1,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved2);
 
        [return: MarshalAs(UnmanagedType.Interface)] 
          UnsafeNativeMethods.IStorage OpenStorage(
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName,

                 IntPtr pstgPriority,   // must be null
                [In, MarshalAs(UnmanagedType.U4)] 
                 int grfMode,
 
                 IntPtr snbExclude, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved); 


         void CopyTo(
 
                 int ciidExclude,
                [In, MarshalAs(UnmanagedType.LPArray)] 
                 Guid[] pIIDExclude, 

                 IntPtr snbExclude, 
                [In, MarshalAs(UnmanagedType.Interface)]
                 UnsafeNativeMethods.IStorage stgDest);

 
         void MoveElementTo(
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName, 
                [In, MarshalAs(UnmanagedType.Interface)]
                 UnsafeNativeMethods.IStorage stgDest, 
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsNewName,
                [In, MarshalAs(UnmanagedType.U4)]
                 int grfFlags); 

 
         void Commit( 

                 int grfCommitFlags); 


         void Revert();
 

         void EnumElements( 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int reserved1,
                     // void * 
                 IntPtr reserved2,
                [In, MarshalAs(UnmanagedType.U4)]
                 int reserved3,
                [Out, MarshalAs(UnmanagedType.Interface)] 
                 out object ppVal);                     // IEnumSTATSTG
 
 
         void DestroyElement(
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsName);


         void RenameElement( 
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsOldName, 
                [In, MarshalAs(UnmanagedType.BStr)] 
                 string pwcsNewName);
 

         void SetElementTimes(
                [In, MarshalAs(UnmanagedType.BStr)]
                 string pwcsName, 
                [In]
                 NativeMethods.FILETIME pctime, 
                [In] 
                 NativeMethods.FILETIME patime,
                [In] 
                 NativeMethods.FILETIME pmtime);


         void SetClass( 
                [In]
                 ref Guid clsid); 
 

         void SetStateBits( 

                 int grfStateBits,

                 int grfMask); 

 
         void Stat( 
                [Out]
                 NativeMethods.STATSTG pStatStg, 
                 int grfStatFlag);
    }

    [ComImport(), Guid("B196B28F-BAB4-101A-B69C-00AA00341D07"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IClassFactory2 {
 
 
         void CreateInstance(
                [In, MarshalAs(UnmanagedType.Interface)] 
                  object unused,
                        [In]
                  ref Guid refiid,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  object[] ppunk);
 
 
         void LockServer(
 
                 int fLock);


         void GetLicInfo( 
                [Out]
                  NativeMethods.tagLICINFO licInfo); 
 

         void RequestLicKey( 
                [In, MarshalAs(UnmanagedType.U4)]
                 int dwReserved,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   string[] pBstrKey); 

 
         void CreateInstanceLic( 
                [In, MarshalAs(UnmanagedType.Interface)]
                  object pUnkOuter, 
                [In, MarshalAs(UnmanagedType.Interface)]
                  object pUnkReserved,
                        [In]
                  ref Guid riid, 
                [In, MarshalAs(UnmanagedType.BStr)]
                  string bstrKey, 
                [Out, MarshalAs(UnmanagedType.Interface)] 
                  out object ppVal);
    } 
    [SuppressUnmanagedCodeSecurity, ComImport(),
    Guid("B196B284-BAB4-101A-B69C-00AA00341D07"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IConnectionPointContainer { 

        [return: MarshalAs(UnmanagedType.Interface)] 
          object EnumConnectionPoints(); 

        [PreserveSig] 
        int FindConnectionPoint([In] ref Guid guid, [Out, MarshalAs(UnmanagedType.Interface)]out IConnectionPoint ppCP);

    }
 
    [ComImport(), Guid("B196B285-BAB4-101A-B69C-00AA00341D07"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IEnumConnectionPoints { 
        [PreserveSig] 
        int Next(int cConnections, out IConnectionPoint pCp, out int pcFetched);
 
        [PreserveSig]
        int Skip(int cSkip);

        void Reset(); 

        IEnumConnectionPoints Clone(); 
    } 

 
    [ComImport(), Guid("00020400-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IDispatch {
         int GetTypeInfoCount();
 
        [return: MarshalAs(UnmanagedType.Interface)]
         ITypeInfo GetTypeInfo( 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int iTInfo,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int lcid);


         [PreserveSig] 
         int GetIDsOfNames(
                [In] 
                 ref Guid riid, 
                [In, MarshalAs(UnmanagedType.LPArray)]
                 string[] rgszNames, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int cNames,
                [In, MarshalAs(UnmanagedType.U4)]
                 int lcid, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] rgDispId); 
 

         [PreserveSig] 
         int Invoke(

                 int dispIdMember,
                [In] 
                 ref Guid riid,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int lcid, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int dwFlags, 
                [Out, In]
                  NativeMethods.tagDISPPARAMS pDispParams,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  object[] pVarResult, 
                [Out, In]
                  NativeMethods.tagEXCEPINFO pExcepInfo, 
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  IntPtr [] pArgErr);
 
    }

    [ComImport(), Guid("00020401-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface  ITypeInfo { 
            [PreserveSig]
            int GetTypeAttr(ref IntPtr pTypeAttr); 
 

            [PreserveSig] 
            int GetTypeComp(
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                       UnsafeNativeMethods.ITypeComp[] ppTComp);
 

            [PreserveSig] 
            int GetFuncDesc( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int index, ref IntPtr pFuncDesc); 


             [PreserveSig]
             int GetVarDesc( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int index, ref IntPtr pVarDesc); 
 

             [PreserveSig] 
             int GetNames(

                     int memid,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      string[] rgBstrNames,
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int cMaxNames, 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      int[] pcNames); 


            [PreserveSig]
            int GetRefTypeOfImplType( 
                    [In, MarshalAs(UnmanagedType.U4)]
                     int index, 
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      int[] pRefType);
 

            [PreserveSig]
            int GetImplTypeFlags(
                    [In, MarshalAs(UnmanagedType.U4)] 
                     int index,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      int[] pImplTypeFlags); 

 
            [PreserveSig]
            int GetIDsOfNames(IntPtr rgszNames, int cNames, IntPtr pMemId);

 
            [PreserveSig]
            int Invoke(); 
 

            [PreserveSig] 
            int GetDocumentation(

                     int memid,
                      ref string pBstrName, 
                      ref string pBstrDocString,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      int[] pdwHelpContext, 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      string[] pBstrHelpFile); 


            [PreserveSig]
            int GetDllEntry( 

                     int memid, 
 
                      NativeMethods.tagINVOKEKIND invkind,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      string[] pBstrDllName,
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      string[] pBstrName,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                      short[] pwOrdinal);
 
 
             [PreserveSig]
             int GetRefTypeInfo( 

                     IntPtr hreftype,
                     ref ITypeInfo pTypeInfo);
 

            [PreserveSig] 
            int AddressOfMember(); 

 
            [PreserveSig]
            int CreateInstance(
                    [In]
                      ref Guid riid, 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      object[] ppvObj); 
 

             [PreserveSig] 
             int GetMops(

                     int memid,
                    [Out, MarshalAs(UnmanagedType.LPArray)] 
                     string[] pBstrMops);
 
 
            [PreserveSig]
            int GetContainingTypeLib( 
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                       UnsafeNativeMethods.ITypeLib[] ppTLib,
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                      int[] pIndex); 

             [PreserveSig] 
             void ReleaseTypeAttr(IntPtr typeAttr); 

             [PreserveSig] 
             void ReleaseFuncDesc(IntPtr funcDesc);

             [PreserveSig]
             void ReleaseVarDesc(IntPtr varDesc); 

    } 
    [ComImport(), Guid("00020403-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface  ITypeComp {
         void RemoteBind( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                 string szName,
                [In, MarshalAs(UnmanagedType.U4)]
                 int lHashVal, 
                [In, MarshalAs(UnmanagedType.U2)]
                 short wFlags, 
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  NativeMethods.tagDESCKIND[] pDescKind,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   NativeMethods.tagFUNCDESC[] ppFuncDesc,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   NativeMethods.tagVARDESC[] ppVarDesc,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeComp[] ppTypeComp, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  int[] pDummy); 


         void RemoteBindType(
                [In, MarshalAs(UnmanagedType.LPWStr)] 
                 string szName,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int lHashVal, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo); 

    }

    [ComImport(), Guid("00020402-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface  ITypeLib {
 
         void RemoteGetTypeInfoCount( 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  int[] pcTInfo); 


         void GetTypeInfo(
                [In, MarshalAs(UnmanagedType.U4)] 
                 int index,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo); 

 
         void GetTypeInfoType(
                [In, MarshalAs(UnmanagedType.U4)]
                 int index,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                  NativeMethods.tagTYPEKIND[] pTKind);
 
 
         void GetTypeInfoOfGuid(
                [In] 
                  ref Guid guid,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                   UnsafeNativeMethods.ITypeInfo[] ppTInfo);
 

         void RemoteGetLibAttr( 
                IntPtr ppTLibAttr, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                  int[] pDummy); 


         void GetTypeComp(
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                   UnsafeNativeMethods.ITypeComp[] ppTComp);
 
 
         void RemoteGetDocumentation(
 
                 int index,
                [In, MarshalAs(UnmanagedType.U4)]
                 int refPtrFlags,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 string[] pBstrName,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 string[] pBstrDocString, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] pdwHelpContext, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 string[] pBstrHelpFile);

 
         void RemoteIsName(
                [In, MarshalAs(UnmanagedType.LPWStr)] 
                 string szNameBuf, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int lHashVal, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 IntPtr [] pfName,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 string[] pBstrLibName); 

 
         void RemoteFindName( 
                [In, MarshalAs(UnmanagedType.LPWStr)]
                 string szNameBuf, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int lHashVal,
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 UnsafeNativeMethods.ITypeInfo[] ppTInfo, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] rgMemId, 
                [In, Out, MarshalAs(UnmanagedType.LPArray)] 
                 short[] pcFound,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 string[] pBstrLibName);


         void LocalReleaseTLibAttr(); 
    }
 
    [ComImport(), 
     Guid("DF0B3D60-548F-101B-8E65-08002B2BD119"),
     InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface ISupportErrorInfo {

        int InterfaceSupportsErrorInfo(
                [In] ref Guid riid); 

 
    } 

    [ComImport(), 
     Guid("1CF2B120-547D-101B-8E65-08002B2BD119"),
     InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IErrorInfo {
 
        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig] 
        int GetGUID( 
                   [Out]
                   out Guid pguid); 

        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig]
        int GetSource( 
                     [In, Out, MarshalAs(UnmanagedType.BStr)]
                     ref string pBstrSource); 
 
        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig] 
        int GetDescription(
                          [In, Out, MarshalAs(UnmanagedType.BStr)]
                          ref string pBstrDescription);
 
        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig] 
        int GetHelpFile( 
                       [In, Out, MarshalAs(UnmanagedType.BStr)]
                       ref string pBstrHelpFile); 

        [ System.Security.SuppressUnmanagedCodeSecurityAttribute()]
        [PreserveSig]
        int GetHelpContext( 
                          [In, Out, MarshalAs(UnmanagedType.U4)]
                          ref int pdwHelpContext); 
 
    }
 
    [StructLayout(LayoutKind.Sequential)]
    public sealed class tagQACONTAINER
    {
      [MarshalAs(UnmanagedType.U4)] 
      public int cbSize = Marshal.SizeOf(typeof(tagQACONTAINER));
 
      public UnsafeNativeMethods.IOleClientSite pClientSite; 

      [MarshalAs(UnmanagedType.Interface)] 
      public object pAdviseSink = null;

      public UnsafeNativeMethods.IPropertyNotifySink pPropertyNotifySink;
 
      [MarshalAs(UnmanagedType.Interface)]
      public object pUnkEventSink = null; 
 
      [MarshalAs(UnmanagedType.U4)]
      public int dwAmbientFlags; 

      [MarshalAs(UnmanagedType.U4)]
      public UInt32 colorFore;
 
      [MarshalAs(UnmanagedType.U4)]
      public UInt32 colorBack; 
 
      [MarshalAs(UnmanagedType.Interface)]
      public object pFont; 

      [MarshalAs(UnmanagedType.Interface)]
      public object pUndoMgr = null;
 
      [MarshalAs(UnmanagedType.U4)]
      public int dwAppearance; 
 
      public int lcid;
 
      public IntPtr hpal = IntPtr.Zero;

      [MarshalAs(UnmanagedType.Interface)]
      public object pBindHost = null; 

      // visual basic6 uses a old version of the struct that is missing these two fields. 
      // So, ActiveX sourcing does not work, with the EE trying to read off the 
      // end of the stack to get to these variables. If I do not define these,
      // Office or any of the other hosts will hopefully get nulls, otherwise they 
      // will crash.
      //
      //public UnsafeNativeMethods.IOleControlSite pControlSite;
 
      //public UnsafeNativeMethods.IOleServiceProvider pServiceProvider;
    } 
 
    [StructLayout(LayoutKind.Sequential)/*leftover(noAutoOffset)*/]
    public sealed class tagQACONTROL 
    {
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=0, cbSize)*/]
      public int cbSize = Marshal.SizeOf(typeof(tagQACONTROL));
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=4, dwMiscStatus)*/]
      public int dwMiscStatus = 0; 
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=8, dwViewStatus)*/]
      public int dwViewStatus = 0; 

      [MarshalAs(UnmanagedType.U4)/*leftover(offset=12, dwEventCookie)*/]
      public int dwEventCookie = 0;
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=16, dwPropNotifyCookie)*/]
      public int dwPropNotifyCookie = 0; 
 
      [MarshalAs(UnmanagedType.U4)/*leftover(offset=20, dwPointerActivationPolicy)*/]
      public int dwPointerActivationPolicy = 0; 

    }

    [ComImport(), Guid("0000000A-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface ILockBytes {
 
 
         void ReadAt(
                [In, MarshalAs(UnmanagedType.U8)] 
                 long ulOffset,
                [Out]
                 IntPtr pv,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int cb,
                [Out, MarshalAs(UnmanagedType.LPArray)] 
                 int[] pcbRead); 

 
         void WriteAt(
                [In, MarshalAs(UnmanagedType.U8)]
                 long ulOffset,
 
                 IntPtr pv,
                [In, MarshalAs(UnmanagedType.U4)] 
                 int cb, 
                [Out, MarshalAs(UnmanagedType.LPArray)]
                 int[] pcbWritten); 


         void Flush();
 

         void SetSize( 
                [In, MarshalAs(UnmanagedType.U8)] 
                 long cb);
 

         void LockRegion(
                [In, MarshalAs(UnmanagedType.U8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.U8)]
                 long cb, 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int dwLockType);
 

         void UnlockRegion(
                [In, MarshalAs(UnmanagedType.U8)]
                 long libOffset, 
                [In, MarshalAs(UnmanagedType.U8)]
                 long cb, 
                [In, MarshalAs(UnmanagedType.U4)] 
                 int dwLockType);
 

         void Stat(
                [Out]
                  NativeMethods.STATSTG pstatstg, 
                [In, MarshalAs(UnmanagedType.U4)]
                 int grfStatFlag); 
 
    }
 
    [StructLayout(LayoutKind.Sequential),
        SuppressUnmanagedCodeSecurity()]
    public class OFNOTIFY
    { 
        // hdr was a by-value NMHDR structure
        public IntPtr hdr_hwndFrom = IntPtr.Zero; 
        public IntPtr hdr_idFrom = IntPtr.Zero; 
        public int  hdr_code = 0;
 
        public IntPtr lpOFN = IntPtr.Zero;
        public IntPtr pszFile = IntPtr.Zero;
    }
 
    internal static bool IsComObject(object o)
    { 
        return Marshal.IsComObject(o); 
    }
 
    internal static int ReleaseComObject(object objToRelease)
    {
        return Marshal.ReleaseComObject(objToRelease);
    } 

    [ReflectionPermission(SecurityAction.Assert, Unrestricted=true)] 
    public static object PtrToStructure(IntPtr lparam, Type cls) { 
        return Marshal.PtrToStructure(lparam, cls);
    } 

    [ReflectionPermission(SecurityAction.Assert, Unrestricted=true)]
    public static void PtrToStructure(IntPtr lparam, object data) {
        Marshal.PtrToStructure(lparam, data); 
    }
 
        internal static int SizeOf(Type t) 
        {
            return Marshal.SizeOf(t); 
        }

        internal static void ThrowExceptionForHR(int errorCode)
        { 
            Marshal.ThrowExceptionForHR(errorCode);
        } 
 

        public delegate int BrowseCallbackProc( 
            IntPtr hwnd,
            int msg,
            IntPtr lParam,
            IntPtr lpData); 

        [Flags] 
        public enum BrowseInfos 
        {
            NewDialogStyle      = 0x0040,   // Use the new dialog layout with the ability to resize 
            HideNewFolderButton = 0x0200    // Don't display the 'New Folder' button
        }

        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] 
        public class BROWSEINFO
        { 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            public IntPtr hwndOwner; //HWND hwndOwner; // HWND of the owner for the dialog
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            public IntPtr pidlRoot; //LPCITEMIDLIST pidlRoot; // Root ITEMIDLIST

            // For interop purposes, send over a buffer of MAX_PATH size.
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            public IntPtr pszDisplayName; //LPWSTR pszDisplayName; // Return display name of item selected.
 
            public string lpszTitle; //LPCWSTR lpszTitle; // text to go in the banner over the tree. 
            public int ulFlags; //UINT ulFlags; // Flags that control the return stuff
            public BrowseCallbackProc lpfn; //BFFCALLBACK lpfn; // Call back pointer 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
            public IntPtr lParam; //LPARAM lParam; // extra info that's passed back in callbacks
            public int iImage; //int iImage; // output var: where to return the Image index.
        } 

        [SuppressUnmanagedCodeSecurity(), 
            SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")] 
        internal class Shell32
        { 
            [DllImport(ExternDll.Shell32)]
            public static extern int SHGetSpecialFolderLocation(IntPtr hwnd, int csidl, ref IntPtr ppidl);
            //SHSTDAPI SHGetSpecialFolderLocation(HWND hwnd, int csidl, LPITEMIDLIST *ppidl);
 
            [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)]
            public static extern bool SHGetPathFromIDList(IntPtr pidl, IntPtr pszPath); 
            //SHSTDAPI_(BOOL) SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath); 

            [DllImport(ExternDll.Shell32, CharSet=CharSet.Auto)] 
            public static extern IntPtr SHBrowseForFolder([In] BROWSEINFO lpbi);
            //SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderW(LPBROWSEINFOW lpbi);

            [DllImport(ExternDll.Shell32)] 
            public static extern int SHGetMalloc([Out, MarshalAs(UnmanagedType.LPArray)] UnsafeNativeMethods.IMalloc[] ppMalloc);
            //SHSTDAPI SHGetMalloc(LPMALLOC * ppMalloc); 
 
            [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
            [DllImport(ExternDll.Shell32, PreserveSig = true, EntryPoint = "SHGetFolderPathEx")] 
            private static extern int SHGetFolderPathExPrivate(ref Guid rfid, uint dwFlags, IntPtr hToken, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszPath, uint cchPath);

            public static int SHGetFolderPathEx(ref Guid rfid, uint dwFlags, IntPtr hToken, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszPath, uint cchPath)
            { 
                if (IsVista)
                { 
                    return SHGetFolderPathExPrivate(ref rfid, dwFlags, hToken, pszPath, cchPath); 
                }
                throw new NotSupportedException(); 
            }

            [DllImport(ExternDll.Shell32, PreserveSig = true)]
            public static extern int SHCreateShellItem(IntPtr pidlParent, IntPtr psfParent, IntPtr pidl, out FileDialogNative.IShellItem ppsi); 

            [DllImport(ExternDll.Shell32, PreserveSig = true)] 
            public static extern int SHILCreateFromPath([MarshalAs(UnmanagedType.LPWStr)]string pszPath, out IntPtr ppIdl, ref uint rgflnOut); 
        }
 
        [
        ComImport(),
        Guid("00000002-0000-0000-c000-000000000046"),
        System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown), 
        SuppressUnmanagedCodeSecurity()
        ] 
        public interface IMalloc 
        {
            [PreserveSig] 
            IntPtr Alloc(int cb);

            [PreserveSig]
            IntPtr Realloc(IntPtr pv, int cb); 

            [PreserveSig] 
            void Free(IntPtr pv); 

            [PreserveSig] 
            int GetSize(IntPtr pv);

            [PreserveSig]
            int DidAlloc(IntPtr pv); 

            [PreserveSig] 
            void HeapMinimize(); 
        }
 
          [
          ComImport,
          Guid("00000126-0000-0000-C000-000000000046"),
          InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
          ]
          public interface IRunnableObject 
          { 
               void GetRunningClass(out Guid guid);
 
               [PreserveSig]
               int Run(IntPtr lpBindContext);
               bool IsRunning();
               void LockRunning(bool fLock, bool fLastUnlockCloses); 
               void SetContainedObject(bool fContained);
          } 
 
        [ComVisible(true), ComImport(), Guid("B722BCC7-4E68-101B-A2BC-00AA00404770"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
               public interface IOleDocumentSite 
          {

               [return: MarshalAs(UnmanagedType.I4)]
               [PreserveSig] 
               int ActivateMe(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                    IOleDocumentView pViewToActivate); 

          } 

          [ComVisible(true), Guid("B722BCC6-4E68-101B-A2BC-00AA00404770"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
               public interface IOleDocumentView
          { 

               void SetInPlaceSite( 
                    [In, MarshalAs(UnmanagedType.Interface)] 
                    IOleInPlaceSite pIPSite);
 
               [return: MarshalAs(UnmanagedType.Interface)]
               IOleInPlaceSite GetInPlaceSite();

               [return: MarshalAs(UnmanagedType.Interface)] 
               object GetDocument();
 
 
               void SetRect(
                    [In] 
                    ref NativeMethods.RECT prcView);


               void GetRect( 
                    [In, Out]
                    ref NativeMethods.RECT prcView); 
 

               void SetRectComplex( 
                    [In]
                    NativeMethods.RECT prcView,
                    [In]
                    NativeMethods.RECT prcHScroll, 
                    [In]
                    NativeMethods.RECT prcVScroll, 
                    [In] 
                    NativeMethods.RECT prcSizeBox);
 

               void Show(bool fShow);

 
               [PreserveSig]
               int UIActivate(bool fUIActivate); 
 

               void Open(); 

               [PreserveSig]
               int Close(
                    [In, MarshalAs(UnmanagedType.U4)] 
                    int dwReserved);
 
 
               void SaveViewState(
                    [In, MarshalAs(UnmanagedType.Interface)] 
                    IStream pstm);


               void ApplyViewState( 
                    [In, MarshalAs(UnmanagedType.Interface)]
                    IStream pstm); 
 

               void Clone( 
                    [In, MarshalAs(UnmanagedType.Interface)]
                    IOleInPlaceSite pIPSiteNew,
                    [Out, MarshalAs(UnmanagedType.LPArray)]
                    IOleDocumentView[] ppViewNew); 

 
          } 

        [ 
          ComImport,
          Guid("b722bcc5-4e68-101b-a2bc-00aa00404770"),
          InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)
          ] 
          public interface IOleDocument
          { 
 
               [PreserveSig]
               int CreateView(IOleInPlaceSite pIPSite, 
                                   IStream pstm,
                                             int dwReserved,
                                             out IOleDocumentView ppView);
 
               [PreserveSig]
               int GetDocMiscStatus( 
                    out int pdwStatus); 

               int EnumViews( 
                    out object ppEnum,
                    out IOleDocumentView ppView);
          }
 
        [
            Guid("0000011e-0000-0000-C000-000000000046"),  ComImport, InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
        ] 
        public interface IOleCache
        { 
            int Cache(ref FORMATETC pformatetc,int advf);

            void Uncache(int  dwConnection);
 
            object EnumCache(/*[out] IEnumSTATDATA **ppenumSTATDATA*/);
 
            void InitCache(IComDataObject pDataObject); 

            void SetData(ref FORMATETC pformatetc, ref STGMEDIUM pmedium, bool fRelease); 
        }


 

 
        [ComImport, 
         TypeLibType(0x1050),
         Guid("618736E0-3C3D-11CF-810C-00AA00389B71"), 
        ]
        public interface IAccessibleInternal {
            [return: MarshalAs(UnmanagedType.IDispatch)]
            [DispId(unchecked((int)0xFFFFEC78))] 
            [TypeLibFunc(0x0040)]
            object get_accParent(); 
 
            [DispId(unchecked((int)0xFFFFEC77))]
            [TypeLibFunc(0x0040)] 
            int get_accChildCount();

            [return: MarshalAs(UnmanagedType.IDispatch)]
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC76))]
            object get_accChild([In][MarshalAs(UnmanagedType.Struct)] object varChild); 
 
            [return: MarshalAs(UnmanagedType.BStr)]
            [DispId(unchecked((int)0xFFFFEC75))] 
            [TypeLibFunc(0x0040)]
            string get_accName([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);

            [return: MarshalAs(UnmanagedType.BStr)] 
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC74))] 
            string get_accValue([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [return: MarshalAs(UnmanagedType.BStr)] 
            [DispId(unchecked((int)0xFFFFEC73))]
            [TypeLibFunc(0x0040)]
            string get_accDescription([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [DispId(unchecked((int)0xFFFFEC72))] 
            [TypeLibFunc(0x0040)] 
            object get_accRole([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC71))]
            object get_accState([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [return: MarshalAs(UnmanagedType.BStr)] 
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC70))]
            string get_accHelp([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [DispId(unchecked((int)0xFFFFEC6F))]
            [TypeLibFunc(0x0040)]
            int get_accHelpTopic([Out][MarshalAs(UnmanagedType.BStr)] out string pszHelpFile, 
                                                        [In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [return: MarshalAs(UnmanagedType.BStr)] 
            [DispId(unchecked((int)0xFFFFEC6E))]
            [TypeLibFunc(0x0040)] 
            string get_accKeyboardShortcut([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);

            [return: MarshalAs(UnmanagedType.Struct)]
            [DispId(unchecked((int)0xFFFFEC6D))] 
            [TypeLibFunc(0x0040)]
            object get_accFocus(); 
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [DispId(unchecked((int)0xFFFFEC6C))] 
            [TypeLibFunc(0x0040)]
            object get_accSelection();

            [return: MarshalAs(UnmanagedType.BStr)] 
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC6B))] 
            string get_accDefaultAction([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [DispId(unchecked((int)0xFFFFEC6A))] 
            [TypeLibFunc(0x0040)]
            void accSelect([In] int flagsSelect,
                           [In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);
 
            [DispId(unchecked((int)0xFFFFEC69))]
            [TypeLibFunc(0x0040)] 
            void accLocation([Out] out int pxLeft, 
                             [Out] out int pyTop,
                             [Out] out int pcxWidth, 
                             [Out] out int pcyHeight,
                             [In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild);

            [return: MarshalAs(UnmanagedType.Struct)] 
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC68))] 
            object accNavigate([In] int navDir, 
                               [In][Optional][MarshalAs(UnmanagedType.Struct)] object varStart);
 
            [return: MarshalAs(UnmanagedType.Struct)]
            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC67))]
            object accHitTest([In] int xLeft, 
                              [In] int yTop);
 
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC66))]
            void accDoDefaultAction([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild); 

            [TypeLibFunc(0x0040)]
            [DispId(unchecked((int)0xFFFFEC75))]
            void set_accName([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild, 
                                 [In][MarshalAs(UnmanagedType.BStr)] string pszName);
 
            [TypeLibFunc(0x0040)] 
            [DispId(unchecked((int)0xFFFFEC74))]
            void set_accValue([In][Optional][MarshalAs(UnmanagedType.Struct)] object varChild, 
                              [In][MarshalAs(UnmanagedType.BStr)] string pszValue);
        }

        [ 
        ComImport(),
        Guid("BEF6E002-A874-101A-8BBA-00AA00300CAB"), 
        System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)] 
        public interface IFont
        { 

            [return: MarshalAs(UnmanagedType.BStr)]
            string GetName();
 
            void SetName(
                   [In, MarshalAs(UnmanagedType.BStr)] 
                      string pname); 

            [return: MarshalAs(UnmanagedType.U8)] 
            long GetSize();

            void SetSize(
                   [In, MarshalAs(UnmanagedType.U8)] 
                     long psize);
 
            [return: MarshalAs(UnmanagedType.Bool)] 
            bool GetBold();
 
            void SetBold(
                   [In, MarshalAs(UnmanagedType.Bool)]
                     bool pbold);
 
            [return: MarshalAs(UnmanagedType.Bool)]
            bool GetItalic(); 
 
            void SetItalic(
                   [In, MarshalAs(UnmanagedType.Bool)] 
                     bool pitalic);

            [return: MarshalAs(UnmanagedType.Bool)]
            bool GetUnderline(); 

            void SetUnderline( 
                   [In, MarshalAs(UnmanagedType.Bool)] 
                     bool punderline);
 
            [return: MarshalAs(UnmanagedType.Bool)]
            bool GetStrikethrough();

            void SetStrikethrough( 
                   [In, MarshalAs(UnmanagedType.Bool)]
                     bool pstrikethrough); 
 
            [return: MarshalAs(UnmanagedType.I2)]
            short GetWeight(); 

            void SetWeight(
                   [In, MarshalAs(UnmanagedType.I2)]
                     short pweight); 

            [return: MarshalAs(UnmanagedType.I2)] 
            short GetCharset(); 

            void SetCharset( 
                   [In, MarshalAs(UnmanagedType.I2)]
                     short pcharset);

            IntPtr GetHFont(); 

            void Clone( 
                      out UnsafeNativeMethods.IFont ppfont); 

            [System.Runtime.InteropServices.PreserveSig] 
            int IsEqual(
                   [In, MarshalAs(UnmanagedType.Interface)]
                      UnsafeNativeMethods.IFont pfontOther);
 
            void SetRatio(
                    int cyLogical, 
                    int cyHimetric); 

            void QueryTextMetrics(out IntPtr ptm); 

            void AddRefHfont(
                    IntPtr hFont);
 
            void ReleaseHfont(
                    IntPtr hFont); 
 
            void SetHdc(
                    IntPtr hdc); 
        }

        [ComImport(), Guid("7BF80980-BF32-101A-8BBB-00AA00300CAB"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)]
        public interface IPicture 
        {
            IntPtr GetHandle(); 
 
            IntPtr GetHPal();
 
            [return: MarshalAs(UnmanagedType.I2)]
            short GetPictureType();

            int GetWidth(); 

            int GetHeight(); 
 
            void Render(
               IntPtr hDC, 
               int x,
               int y,
               int cx,
               int cy, 
               int xSrc,
               int ySrc, 
               int cxSrc, 
               int cySrc,
               IntPtr rcBounds 
               );

            void SetHPal(
                    IntPtr phpal); 

            IntPtr GetCurDC(); 
 
            void SelectPicture(
                    IntPtr hdcIn, 
                   [Out, MarshalAs(UnmanagedType.LPArray)]
                     IntPtr[] phdcOut,
                   [Out, MarshalAs(UnmanagedType.LPArray)]
                     IntPtr[] phbmpOut); 

            [return: MarshalAs(UnmanagedType.Bool)] 
            bool GetKeepOriginalFormat(); 

            void SetKeepOriginalFormat( 
                   [In, MarshalAs(UnmanagedType.Bool)]
                     bool pfkeep);

            void PictureChanged(); 

            [PreserveSig] 
            int SaveAsFile( 
                   [In, MarshalAs(UnmanagedType.Interface)]
                     UnsafeNativeMethods.IStream pstm, 

                    int fSaveMemCopy,
                   [Out]
                     out int pcbSize); 

            int GetAttributes(); 
        } 

        [ComImport(), Guid("7BF80981-BF32-101A-8BBB-00AA00300CAB"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIDispatch)] 
        public interface IPictureDisp
        {
            IntPtr Handle { get;}
 
            IntPtr HPal { get;}
 
            short PictureType { get;} 

            int Width { get;} 

            int Height { get;}

            void Render( 
                    IntPtr hdc,
                    int x, 
                    int y, 
                    int cx,
                    int cy, 
                    int xSrc,
                    int ySrc,
                    int cxSrc,
                    int cySrc); 
        }
 
        ///  
        /// 
        /// This class provides static methods to create, activate and deactivate the theming scope. 
        /// 
        [SuppressUnmanagedCodeSecurity]
        internal class ThemingScope
        { 
            private static ACTCTX enableThemingActivationContext;
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            private static IntPtr hActCtx; 
            private static bool contextCreationSucceeded;
 
            /// 
            /// We now use explicitactivate everywhere and use this method to determine if we
            /// really need to activate the activationcontext.  This should be pretty fast.
            ///  
            private static bool IsContextActive()
            { 
                IntPtr current = IntPtr.Zero; 

                if (contextCreationSucceeded && GetCurrentActCtx(out current)) 
                {
                    return current == hActCtx;
                }
                return false; 
            }
 
            ///  
            ///     Activate() does nothing if a theming context is already active on the current thread, which is good
            ///     for perf reasons. However, in some cases, like in the Timer callback, we need to put another context 
            ///     on the stack even if one is already present. In such cases, this method helps - you get to manage
            ///     the cookie yourself though.
            /// 
            public static IntPtr Activate() 
            {
                IntPtr userCookie = IntPtr.Zero; 
 
                if (Application.UseVisualStyles && contextCreationSucceeded && OSFeature.Feature.IsPresent(OSFeature.Themes))
                { 
                    if (!IsContextActive())
                    {
                        if (!ActivateActCtx(hActCtx, out userCookie))
                        { 
                            // Be sure cookie always zero if activation failed
                            userCookie = IntPtr.Zero; 
                        } 
                    }
                } 

                return userCookie;
            }
 
            /// 
            ///     Use this to deactivate a context activated by calling ExplicitActivate. 
            ///  
            public static IntPtr Deactivate(IntPtr userCookie)
            { 
                if (userCookie != IntPtr.Zero && OSFeature.Feature.IsPresent(OSFeature.Themes))
                {
                    if (DeactivateActCtx(0, userCookie))
                    { 
                        // deactivation succeeded...
                        userCookie = IntPtr.Zero; 
                    } 
                }
 
                return userCookie;
            }

            [ 
                // Ok to suppress because WinForms apps cannot bleed accross different AppDomains
                // and ThemingScope class is not public so external code can't lock on typeof(ThemingScope). 
                System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2002:DoNotLockOnObjectsWithWeakIdentity") 
            ]
            public static bool CreateActivationContext(string dllPath, int nativeResourceManifestID) 
            {
                lock (typeof(ThemingScope))
                {
                    if (!contextCreationSucceeded && OSFeature.Feature.IsPresent(OSFeature.Themes)) 
                    {
 
                        enableThemingActivationContext = new ACTCTX(); 

                        enableThemingActivationContext.cbSize = Marshal.SizeOf(typeof(ACTCTX)); 
                        enableThemingActivationContext.lpSource = dllPath;
                        enableThemingActivationContext.lpResourceName = (IntPtr)nativeResourceManifestID;
                        enableThemingActivationContext.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
 
                        hActCtx = CreateActCtx(ref enableThemingActivationContext);
                        contextCreationSucceeded = (hActCtx != new IntPtr(-1)); 
                    } 

                    return contextCreationSucceeded; 
                }
            }

            // All the pinvoke goo... 
            [DllImport(ExternDll.Kernel32)]
            private extern static IntPtr CreateActCtx(ref ACTCTX actctx); 
            [DllImport(ExternDll.Kernel32)] 
            private extern static bool ActivateActCtx(IntPtr hActCtx, out IntPtr lpCookie);
            [DllImport(ExternDll.Kernel32)] 
            private extern static bool DeactivateActCtx(int dwFlags, IntPtr lpCookie);
            [DllImport(ExternDll.Kernel32)]
            private extern static bool GetCurrentActCtx(out IntPtr handle);
 
            private const int ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x004;
            private const int ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x008; 
 
            [SuppressMessage("Microsoft.Design", "CA1049:TypesThatOwnNativeResourcesShouldBeDisposable")]
            private struct ACTCTX 
            {
                public int cbSize;
                public uint dwFlags;
                public string lpSource; 
                public ushort wProcessorArchitecture;
                public ushort wLangId; 
                public string lpAssemblyDirectory; 
                [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
                public IntPtr lpResourceName; 
                public string lpApplicationName;
            }
        }
 
        // ClickOnce related interop
        [ 
            StructLayout(LayoutKind.Sequential), 
            System.Security.SuppressUnmanagedCodeSecurityAttribute()
        ] 
        internal class PROCESS_INFORMATION
        {
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
            public IntPtr hProcess = IntPtr.Zero; 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
            public IntPtr hThread = IntPtr.Zero; 
            public int dwProcessId = 0; 
            public int dwThreadId = 0;
 
            // Note this will guarantee we will always free the handles
            // so unless you duplicate the handles from PROCESS_INFORMATION class
            // do not close those handles.
            ~PROCESS_INFORMATION() 
            {
                Close(); 
            } 

            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] 
            internal void Close()
            {
                if (hProcess != (IntPtr)0 && hProcess != (IntPtr)INVALID_HANDLE_VALUE)
                { 
                    CloseHandle(new HandleRef(this, hProcess));
                    hProcess = INVALID_HANDLE_VALUE; 
                } 

                if (hThread != (IntPtr)0 && hThread != (IntPtr)INVALID_HANDLE_VALUE) 
                {
                    CloseHandle(new HandleRef(this, hThread));
                    hThread = INVALID_HANDLE_VALUE;
                } 
            }
 
            [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] 
            private static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
 
            [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
            private static extern bool CloseHandle(HandleRef handle);
        }
 
        [DllImport(ExternDll.Mscorwks, CharSet=CharSet.Unicode, PreserveSig=false, SetLastError=false, BestFitMapping=false, ExactSpelling=true)]
        internal static extern void CorLaunchApplication(UInt32 hostType, 
            string applicationFullName, 
            int manifestPathsCount,
            string[] manifestPaths, 
            int activationDataCount,
            string[] activationData,
            PROCESS_INFORMATION processInformation);
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK