If you want to monitor just other visual basic applications, you could indeed use findwindowex. Every visual basic application has a hidden window with the same classname, so findwindowex wont fail. If you find all these windows, you have all applications running from visual basic. The only problem is that the different versions of visual basic have different classnames. The classname for visual basic 6 is "ThunderRT6Main". So if you want to print all the applications currently running compiled from Visual Basic 6 you would have something like this:
[tt]
Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Sub Form_Load()
Dim hWnd As Long
Dim sBuffer As String
Dim lReturn As Long
Form1.Show
Do
hWnd = FindWindowEx(0, hWnd, "ThunderRT6Main", vbNullString)
If hWnd = 0 Then Exit Do
sBuffer = Space$(255)
lReturn = GetWindowText(hWnd, sBuffer, Len(sBuffer))
Print Left$(sBuffer, lReturn)
Loop
End Sub
[/tt]