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 原文链接:https://www.f2er.com/vb/258674.html