列举正在运行的所有应用程序

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 Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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 SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const SW_SHOW = 5
Public Const SW_RESTORE = 9
Public Const GW_OWNER = 4
Public Const GWL_HWNDPARENT = (-8)
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_TOOLWINDOW = &H80
Public Const WS_EX_APPWINDOW = &H40000
Public Const LB_ADDSTRING = &H180
Public Const LB_SETITEMDATA = &H19A
Public Const EWX_FORCE = 4
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
Const MAX_PATH& = 260
Private Const SW_HIDE = 0
Private Const WM_CLOSE = &H10
Public HHWnd As Long

Public Function WhichWindowsCallBack(ByVal hwnd As Long, ByVal lParam As Long) As Long
    Dim lReturn     As Long
    Dim lExStyle    As Long
    Dim bNoOwner    As Boolean
    Dim sWindowText As String

    If hwnd <> Form1.hwnd Then
        If IsWindowVisible(hwnd) Then
            If GetParent(hwnd) = 0 Then
                bNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
                lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)

                If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bNoOwner) Or _
                   ((lExStyle And WS_EX_APPWINDOW) And Not bNoOwner) Then

                    sWindowText = Space$(256)
                    lReturn = GetWindowText(hwnd, sWindowText, Len(sWindowText))
                    If lReturn Then

                        sWindowText = Left$(sWindowText, lReturn)
                        lReturn = SendMessage(lParam, LB_ADDSTRING, 0, ByVal sWindowText)
                        Call SendMessage(lParam, LB_SETITEMDATA, lReturn, ByVal hwnd)
                    End If
                End If
            End If
        End If
    End If
    HHWnd = hwnd
    WhichWindowsCallBack = True
End Function

Public Function fEnumWindows(lst As ListBox) As Long
    With lst
        .Clear
        Call EnumWindows(AddressOf WhichWindowsCallBack, .hwnd)
        fEnumWindows = .ListCount
    End With
End Function
Private Sub Form_Load()
    Call fEnumWindows(List1)
End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值