Hey guys
I have had some previos help from Half on this topic but i tried my own idea and i have some problems.
I need to find a child in internet explorer which is a popup window. The project contains a listbox named listbox1 and a button named button1.
Problem: I cant find the child window.
Example:
When you log in the router a window comes up requesting your username and password.
I need to find that window knowing only the first word.
Tnx
Code:Imports System.Runtime.InteropServices Imports System.Text Public Class Form1 <DllImport("User32.dll")> _ Private Shared Function EnumChildWindows _ (ByVal WindowHandle As IntPtr, ByVal Callback As EnumWindowProcess, _ ByVal lParam As IntPtr) As Boolean End Function <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function GetWindowText(ByVal hwnd As IntPtr, _ ByVal lpString As StringBuilder, _ ByVal cch As Integer) As Integer End Function <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer End Function Public Delegate Function EnumWindowProcess(ByVal Handle As IntPtr, ByVal Parameter As IntPtr) As Boolean Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer Public Function GetChildWindows(ByVal ParentHandle As IntPtr) As IntPtr() Dim ChildrenList As New List(Of IntPtr) Dim ListHandle As GCHandle = GCHandle.Alloc(ChildrenList) Try EnumChildWindows(ParentHandle, AddressOf EnumWindow, GCHandle.ToIntPtr(ListHandle)) Finally If ListHandle.IsAllocated Then ListHandle.Free() End Try Return ChildrenList.ToArray End Function Private Function EnumWindow(ByVal Handle As IntPtr, ByVal Parameter As IntPtr) As Boolean Dim ChildrenList As List(Of IntPtr) = GCHandle.FromIntPtr(Parameter).Target If ChildrenList Is Nothing Then Throw New Exception("GCHandle Target could not be cast as List(Of IntPtr)") ChildrenList.Add(Handle) ListBox1.Items.Add(Handle) Return True End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim iHwnd As Long = 0 iHwnd = FindWindow(vbNullString, "Internet Explorer cannot display the webpage - Windows Internet Explorer") GetChildWindows(iHwnd) End Sub Public Function GetText(ByVal hWnd As IntPtr) As String Dim length As Integer If hWnd.ToInt32 <= 0 Then Return Nothing End If length = GetWindowTextLength(hWnd) If length = 0 Then Return Nothing End If Dim sb As New System.Text.StringBuilder("", length + 1) GetWindowText(hWnd, sb, sb.Capacity) Me.Text = sb.ToString Return sb.ToString() End Function Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged GetText(ListBox1.SelectedItem) End Sub End Class




Reply With Quote