Как вывести список всех запущенных программ

Сделать это можно двумя способами.
Первый способ:
Поместите на форму список (ListBox) и кнопку. Введите

Private Sub Command1_Click()
' Эта функция будет циклично вызывать функцию EnumWindowsProc
' до тех пор, пока не будут перечислены все окна
EnumWindows AddressOf EnumWindowsProc, 0
End Sub
Добавьте модуль кода и введите следующий код
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lpData As Long) As Long
Dim text As String
Dim l As Long
text = Space(144)
' Получаем заголовок окна
l = GetWindowText(hwnd, text, 144)
' Добавляем в список заголовок окна плюс его описатель
Form1.List1.AddItem Left$(text, l) + "   hwnd=" + Str$(hwnd)
' Перед тем, как добавлять в список очередную программу,
' можно проверить видна ли она на экране
' If  IsWindowVisible(hwnd) <> 0 Then
' Form1.List1.AddItem Left$(text, l) + "   hwnd=" + Str$(hwnd)
' End If
EnumWindowsProc = 1
End Function
Второй способ:
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) 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 Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2

Private Sub Command1_Click()
Dim hwnd As Long
' Получаем описатель рабочего стола
hwnd = GetDesktopWindow
' Получаем описатель первого дочернего окна
hwnd = GetWindow(hwnd, GW_CHILD)
' Добавляем в список название окна и его описатель
List1.AddItem TextFromhwnd(hwnd) + "   hwnd=" + Str$(hwnd)
Do
' Получаем описатель следующего окна
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
' Добавляем в список название окна и его описатель
List1.AddItem TextFromhwnd(hwnd) + "   hwnd=" + Str$(hwnd)
Loop While hwnd <> 0
End Sub

' Функция, возвращающая название окна по его описателю
Private Function TextFromhwnd(ByVal hwnd As Long) As String
Dim text As String
Dim l As Long
text = Space(144)
l = GetWindowText(hwnd, text, 144)
TextFromhwnd = Left$(text, l)
End Function
Hosted by uCoz