微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/vb/258674.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐