[b]Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As System.IntPtr) As Integer[/b]
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
[b]Dim VisibleWindowsByWindowHandle As New ArrayList[/b]
Dim InvisibleWindowsByWindowHandle As New ArrayList
Dim VisibleWindowsByProcessHandle As New ArrayList
Dim InvisibleWindowsByProcessHandle As New ArrayList
Dim IsVisibleByProcess As Boolean
[b]Dim IsVisibleByWindow As Boolean[/b]
Dim a As Integer
Dim processes() As Process = System.Diagnostics.Process.GetProcesses
Dim nl As String = Environment.NewLine
TextBox1.Text = "Total Processes found: " + processes.Length.ToString + nl
TextBox1.Text += "------------------------------------" + nl + nl
TextBox1.Text += "Errors" + nl
TextBox1.Text += "=====================================" + nl
[b]For Each p As Process In processes
Try
p.Refresh() 'Not necessary, but can't hurt[/b]
IsVisibleByProcess = CBool(IsWindowVisible(p.Handle))
[b]IsVisibleByWindow = CBool(IsWindowVisible(p.MainWindowHandle))[/b]
If IsVisibleByProcess Then
VisibleWindowsByProcessHandle.Add(p.ProcessName + " ==> " + p.MainWindowTitle)
Else
InvisibleWindowsByProcessHandle.Add(p.ProcessName)
End If
[b]If IsVisibleByWindow Then
If p.ProcessName = "explorer" AndAlso p.MainWindowTitle = "" Then
VisibleWindowsByWindowHandle.Add(p.ProcessName + " ==> " + "<Windows Desktop>")
Else
VisibleWindowsByWindowHandle.Add(p.ProcessName + " ==> " + p.MainWindowTitle)
End If[/b]
Else
InvisibleWindowsByWindowHandle.Add(p.MainWindowTitle + " (" + p.ProcessName + ")")
[b]End If[/b]
[b]Catch[/b]
TextBox1.Text += p.ProcessName + nl
[b]End Try[/b]
[b]Next[/b]
TextBox1.Text += "------------------------" + nl + nl
TextBox1.Text += "Visible Windows By Process Handle (" + _
VisibleWindowsByProcessHandle.Count.ToString + ")" + nl
TextBox1.Text += "====================================" + nl
For a = 0 To VisibleWindowsByProcessHandle.Count - 1
TextBox1.Text += VisibleWindowsByProcessHandle(a).ToString + nl
Next
TextBox1.Text += "-----------------------------------" + nl
TextBox1.Text += nl
TextBox1.Text += "Invisible Windows By Process Handle (" + _
InvisibleWindowsByProcessHandle.Count.ToString + ")" + nl
TextBox1.Text += "====================================" + nl
For a = 0 To InvisibleWindowsByProcessHandle.Count - 1
TextBox1.Text += InvisibleWindowsByProcessHandle(a).ToString + nl
Next
TextBox1.Text += "-----------------------------------" + nl
TextBox1.Text += nl
TextBox1.Text += "Visible Windows By Window Handle (" + _
VisibleWindowsByWindowHandle.Count.ToString + ")" + nl
TextBox1.Text += "====================================" + nl
For a = 0 To VisibleWindowsByWindowHandle.Count - 1
TextBox1.Text += VisibleWindowsByWindowHandle(a).ToString + nl
Next
TextBox1.Text += "-----------------------------------" + nl
TextBox1.Text += nl
TextBox1.Text += "Invisible Windows By Window Handle (" + _
InvisibleWindowsByWindowHandle.Count.ToString + ")" + nl
TextBox1.Text += "====================================" + nl
For a = 0 To InvisibleWindowsByWindowHandle.Count - 1
TextBox1.Text += InvisibleWindowsByWindowHandle(a).ToString + nl
Next
TextBox1.Text += "-----------------------------------" + nl
TextBox1.Text += nl
VisibleWindowsByWindowHandle = Nothing
InvisibleWindowsByWindowHandle = Nothing
VisibleWindowsByProcessHandle = Nothing
InvisibleWindowsByProcessHandle = Nothing
End Sub