From one of my old codes (I just tested on Windows 10, it still works...) =>
Public Enum HRESULT As Integer
S_OK = 0
S_FALSE = 1
E_NOINTERFACE = &H80004002
E_NOTIMPL = &H80004001
E_FAIL = &H80004005
E_UNEXPECTED = &H8000FFFF
E_OUTOFMEMORY = &H8007000E
End Enum
<InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("85CB6900-4D95-11CF-960C-0080C7F4EE85")>
Private Interface IShellWindows
#Region "<IDispatch>"
Function GetTypeInfoCount(<[Out]()> ByRef pctinfo As UInteger) As HRESULT
Function GetTypeInfo(iTInfo As UInteger, lcid As UInteger, <[Out]()> ByRef ppTInfo As IntPtr) As HRESULT
Function GetIDsOfNames(ByRef riid As Guid, <[In], MarshalAs(UnmanagedType.LPArray)> rgszNames As String(),
<[In], MarshalAs(UnmanagedType.U4)> cNames As Integer,
<[In], MarshalAs(UnmanagedType.U4)> lcid As UInteger,
<Out, MarshalAs(UnmanagedType.LPArray)> ByRef rgDispId As Integer()) As HRESULT
Function Invoke(dispIdMember As Integer, ByRef riid As Guid, <[In], MarshalAs(UnmanagedType.U4)> lcid As Integer,
<[In], MarshalAs(UnmanagedType.U4)> dwFlags As Integer,
<Out, [In]> ByRef pDispParams As System.Runtime.InteropServices.ComTypes.DISPPARAMS,
<Out> ByRef pVarResult As Object, <Out, [In]> ByRef pExcepInfo As System.Runtime.InteropServices.ComTypes.EXCEPINFO,
<Out, MarshalAs(UnmanagedType.LPArray)> ByRef pArgErr As IntPtr()) As HRESULT
#End Region
Function get_Count(<[Out]()> ByRef phwnd As Integer) As HRESULT
Function Item(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef index As Object,
<[Out](), MarshalAs(UnmanagedType.IDispatch)> ByRef Folder As Object) As HRESULT
Function _NewEnum(<[Out](), MarshalAs(UnmanagedType.IUnknown)> ByRef Folder As Object) As HRESULT
Function Register(<[In](), MarshalAs(UnmanagedType.IDispatch)> ByRef pid As Object,
hwnd As Integer, swClass As Integer, <[Out]()> ByRef plCookie As Integer) As HRESULT
Function RegisterPending(lThreadId As Integer,
<[In](), MarshalAs(UnmanagedType.Struct)> ByRef pvarLoc As Object,
<[In](), MarshalAs(UnmanagedType.Struct)> ByRef pvarLocRoot As Object,
swClass As Integer, <[Out]()> ByRef plCookie As Integer) As HRESULT
Function Revoke(lCookie As Integer) As HRESULT
Function OnNavigate(lCookie As Integer, <[In](), MarshalAs(UnmanagedType.Struct)> ByRef pvarLoc As Object) As HRESULT
Function OnActivated(lCookie As Integer, <[In](), MarshalAs(UnmanagedType.Struct)> ByRef fActive As Object) As HRESULT
Function FindWindowSW(
<[In](), MarshalAs(UnmanagedType.Struct)> ByRef pvarLoc As Object,
<[In](), MarshalAs(UnmanagedType.Struct)> ByRef pvarLocRoot As Object,
swClass As Integer,
<[Out]()> ByRef phwnd As Integer,
swfwOptions As Integer,
<[Out](), MarshalAs(UnmanagedType.IDispatch)> ByRef ppdispOut As Object) As HRESULT
Function OnCreated(phwnd As Integer) As HRESULT
Function ProcessAttachDetach(phwnd As Integer) As HRESULT
End Interface