タスクトレイ(タスクバーの通知領域)のアイコンのことでしょうかね?
タスクトレイであれば、↓のような感じです・・・。
Public Class Form1
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Integer, ByVal hwndChildAfter As Integer, ByVal lpszClass As String, ByVal lpszWindow As String) As Integer
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal MSG As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const TB_BUTTONCOUNT = &H418
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim count As Integer
count = GetTaskTrayIconCount()
MessageBox.Show(count.ToString(), Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Function GetTaskTrayIconCount() As Integer
Dim hwnd As Integer = 0
hwnd = FindWindowEx(0, 0, "Shell_TrayWnd", vbNullString)
If hwnd Then
hwnd = FindWindowEx(hwnd, 0, "TrayNotifyWnd", vbNullString)
If hwnd Then
hwnd = FindWindowEx(hwnd, 0, "SysPager", vbNullString)
If hwnd Then
hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)
If hwnd Then
Return SendMessage(hwnd, TB_BUTTONCOUNT, 0, 0)
End If
End If
End If
End If
Return 0
End Function
End Class
タスクトレイじゃなくて、最小化したウィンドウが並ぶところだと、ちょっと面倒みたいです。
グループ化しているのとしていないのとで、数え方が変わるみたいですし、さらに、XP と Win7 とでは
ウィンドウのクラスも違っているので、Windows のバージョンによってやり方をかえなきゃならないです。
補足
タスクバーアイコンと書いてしまいましたが、ボタンの数です。 タスクバーに表示されているウィンドウの有無を調べられたらと思っています。 ちなみに、Windows API の知識は皆無です。