VB.NET 通过窗口句柄,获取webbrowser控件HTML内容

VB.NET通过窗口句柄,获取webbrowser控件HTML内容

通过Sendmessage获取IE浏览器内容 webbrowser控件内容获取

Class Win32API

<DllImport("user32.dll",EntryPoint:="FindWindow")> _ Public Shared Function FindWindow(ByVal lpClassName As String,ByVal lpWindowName As String) As IntPtr End Function <DllImport("user32.dll",EntryPoint:="findwindowex")> _ Public Shared Function findwindowex(ByVal hwndParent As IntPtr,ByVal hwndChildAfter As IntPtr,ByVal lpszClass As String,ByVal lpszWindow As String) As IntPtr End Function <DllImport("user32.dll",SetLastError:=True,CharSet:=CharSet.Auto)> _ Public Shared Function RegisterWindowMessage(ByVal lpString As String) As UInteger End Function <DllImport("oleacc.dll",PreserveSig:=False)> _ Public Shared Function ObjectFromLresult(ByVal lResult As UIntPtr,<MarshalAs(UnmanagedType.LPStruct)> ByVal refiid As Guid,ByVal wParam As IntPtr) As <MarshalAs(UnmanagedType.[Interface])> Object End Function <DllImport("user32.dll",CharSet:=CharSet.Auto)> _ Public Shared Function SendMessageTimeout(ByVal hWnd As IntPtr,ByVal Msg As UInteger,ByVal wParam As UIntPtr,ByVal lParam As IntPtr,ByVal fuFlags As SendMessageTimeoutFlags,ByVal uTimeout As UInteger,_ ByRef lpdwResult As UIntPtr) As IntPtr End Function Public Enum SendMessageTimeoutFlags As UInteger SMTO_norMAL = &H0 SMTO_BLOCK = &H1 SMTO_ABORTIFHUNG = &H2 SMTO_NOTIMEOUTIFNOTHUNG = &H8 End Enum End Class Public Class IEWindow Public Shared Function GetIEWindowDocument2(ByVal editHWnd5 As IntPtr) As HTMLDocumentClass Dim lRes As New UIntPtr() Dim app2_GenerateEvent As UInteger = Win32API.RegisterWindowMessage("WM_HTML_GetoBJECT") Win32API.SendMessageTimeout(editHWnd5,app2_GenerateEvent,UIntPtr.Zero,IntPtr.Zero,Win32API.SendMessageTimeoutFlags.SMTO_NOTIMEOUTIFNOTHUNG,1000,_ lRes) Dim obj As HTMLDocumentClass = DirectCast(Win32API.ObjectFromLresult(lRes,GetType(IHTMLDocument).GUID,IntPtr.Zero),HTMLDocumentClass) Return obj End Function Public Shared Function GetIEWindowDocument(ByVal windowName As String) As HTMLDocumentClass Dim lRes As New UIntPtr() Dim parentHWnd As IntPtr = Win32API.FindWindow(nothing,windowName) MessageBox.Show(parentHWnd.ToString()) Dim editHWnd As IntPtr = Win32API.findwindowex(parentHWnd,"SplitterBar","") '需要查找的子窗口的类名,也就是输入框 MessageBox.Show(editHWnd.ToString()) Dim editHWnd1 As IntPtr = Win32API.findwindowex(editHWnd,"StandardWindow","") '需要查找的子窗口的类名,也就是输入框 MessageBox.Show(editHWnd1.ToString()) Dim editHWnd2 As IntPtr = Win32API.findwindowex(editHWnd1,"Simplebrowser","") '需要查找的子窗口的类名,也就是输入框 Dim editHWnd3 As IntPtr = Win32API.findwindowex(editHWnd2,"Shell Embedding","") '需要查找的子窗口的类名,也就是输入框 Dim editHWnd4 As IntPtr = Win32API.findwindowex(editHWnd3,"Shell DocObject View","") '需要查找的子窗口的类名,也就是输入框 MessageBox.Show("Shell DocObject View" & editHWnd2.ToString()) Dim editHWnd5 As IntPtr = Win32API.findwindowex(editHWnd4,"Internet Explorer_Server","") '需要查找的子窗口的类名,也就是输入框 MessageBox.Show(editHWnd3.ToString()) Dim app2_GenerateEvent As UInteger = Win32API.RegisterWindowMessage("WM_HTML_GetoBJECT") Win32API.SendMessageTimeout(editHWnd5,HTMLDocumentClass) Return obj End Function End Class

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...