-
MODULE CODE
Code:
Public Function EnumWinProc2(ByVal hwnd As Long, ByVal lParam As Long) As Long
On Error Resume Next
Dim lRet As Long
Dim strBuffer As String
If IsWindowVisible(hwnd) Then
strBuffer = Space(MAX_LEN)
lRet = GetWindowText(hwnd, strBuffer, Len(strBuffer))
If lRet Then
If left(strBuffer, lRet) = "Program Manager" Or left(strBuffer, lRet) = "TracerOS2000" Then
GoTo iNext
Else
With fForm
Set itmX = .lstTemp.ListItems.Add(, , left(strBuffer, lRet))
lComponent = FindWindow(vbNullString, left(strBuffer, lRet))
itmX.SubItems(1) = lComponent
Load .picForm(.picForm.Count)
GetWindowRect lComponent, rRect
.picForm(.picForm.Count - 1).Width = (rRect.Right - rRect.left)
.picForm(.picForm.Count - 1).Height = (rRect.Bottom - rRect.tOp)
.picForm(.picForm.Count - 1).tOp = rRect.tOp
.picForm(.picForm.Count - 1).left = rRect.left
.picForm(.picForm.Count - 1).Tag = lComponent
.picForm(.picForm.Count - 1).Visible = True
End With
iNext: End If
End If
End If
EnumWinProc2 = 1
End Function
Then I just use:
Code:
fForm.lstTemp.ListItems.Clear
Call EnumWindows(AddressOf EnumWinProc2, 0)
-
Now.....
The problem is, when I set this in a timer, every time the timer updates, all programs is stopped, but then started again..
What I want to do is I want my program to update only when a new program is opened or closed.