List Active Applications (Windows Task Manager)

I'm looking for the API call and its implimentation to list active windows applications similar to Windows Task Manager
LVL 1
raybeamAsked:
Who is Participating?
 
andysalihConnect With a Mentor Commented:
this does exactly what you want

http://www.planetsourcecode.com/xq/ASP/txtCodeId.14899/lngWId.1/qx/vb/scripts/ShowCode.htm

you can also build of the code

hope this helps

cheers
andy

0
 
andysalihCommented:
http://www.planetsourcecode.com/xq/ASP/txtCodeId.9704/lngWId.1/qx/vb/scripts/ShowCode.htm


Declare Function ShowWindow Lib "User" _
    (ByVal hWnd As Integer, ByVal flgs As Integer) _
    As Integer


Declare Function GetWindow Lib "User" _
    (ByVal hWnd As Integer, ByVal wCmd As Integer) _
    As Integer


Declare Function GetWindowWord Lib "User" _
    (ByVal hWnd As Integer, ByVal wIndx As Integer) _
    As Integer


Declare Function GetWindowLong Lib "User" _
    (ByVal hWnd As Integer, ByVal wIndx As Integer) As Long


Declare Function GetWindowText Lib "User" _
    (ByVal hWnd As Integer, ByVal lpSting As String, _
    ByVal nMaxCount As Integer) As Integer


Declare Function GetWindowTextLength Lib "User" _
    (ByVal hWnd As Integer) As Integer


Declare Function SetWindowPos Lib "User" _
    (ByVal hWnd As Integer, ByVal insaft As Integer, _
    ByVal x%, ByVal y%, ByVal cx%, ByVal cy%, _
    ByVal flgs As Integer) As Integer
    Const WS_MINIMIZE = &H20000000 ' Style bit 'is minimized'
    Const HWND_TOP = 0 ' Move to top of z-order
    Const SWP_NOSIZE = &H1 ' Do not re-size window
    Const SWP_NOMOVE = &H2 ' Do not reposition window
    Const SWP_SHOWWINDOW = &H40 ' Make window visible/active
    Const GW_HWNDFIRST = 0 ' Get first Window handle
    Const GW_HWNDNEXT = 2 ' Get next window handle
    Const GWL_STYLE = (-16) ' Get Window's style bits
    Const SW_RESTORE = 9 ' Restore window
    Dim IsTask As Long ' Style bits for normal task
    ' The following bits will be combined to
    '     define properties
    ' of a 'normal' task top-level window. A
    '     ny window with ' these set will be
    included in the list:
    Const WS_VISIBLE = &H10000000 ' Window is not hidden
    Const WS_BORDER = &H800000 ' Window has a border
    ' Other bits that are normally set inclu
    '     de:
    Const WS_CLIPSIBLINGS = &H4000000 ' can clip windows
    Const WS_THICKFRAME = &H40000 ' Window has thick border
    Const WS_GROUP = &H20000 ' Window is top of group
    Const WS_TABSTOP = &H10000 ' Window has tabstop


    For VB4 32-bit change the function defintions to the following:


Private Declare Function ShowWindow Lib "User32" _
    (ByVal hWnd As Long, ByVal flgs As Long) As Long


Private Declare Function GetWindow Lib "User32" _
    (ByVal hWnd As Long, ByVal wCmd As Long) As Long


Private Declare Function GetWindowWord Lib "User32" _
    (ByVal hWnd As Long, ByVal wIndx As Long) As Long


Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, ByVal wIndx As Long) As Long


Private Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" _
    (ByVal hWnd As Long, ByVal lpSting As String, ByVal nMaxCount As Long) As
    Long


Private Declare Function GetWindowTextLength Lib "User32" Alias
    "GetWindowTextLengthA" _
    (ByVal hWnd As Long) As Long


Private Declare Function SetWindowPos Lib "User32" (ByVal hWnd As Long, _
    ByVal insaft As Long, ByVal x%, ByVal y%, ByVal cx%, ByVal cy%, _
    ByVal flgs As Long) As Long
'**************************************
' Name: Simulating the task manager func
'     tion from VB
' Description:Here's a simple applicatio
'     n to function like the Windows Task Mana
'     ger...
' By: Sams Beta
'
'
' Inputs:None
'
' Returns:None
'
'Assumes:Start a new project and add the
'     following controls to the form:
Control Name Caption
----------------------------------------------------------
commandbutton cmdRefresh Refresh
commandbutton cmdSwitch Switch
commandbutton cmdExitExit
listboxlstApp
'
'Side Effects:None
'This code is copyrighted and has limite
'     d warranties.
'Please see http://www.Planet-Source-Cod
'     e.com/xq/ASP/txtCodeId.235/lngWId.1/qx/v
'     b/scripts/ShowCode.htm
'for details.
'**************************************



Sub cmdExit_Click ()
    Unload Me ' Get me out of here!
    Set activate = Nothing ' Kill Form reference for good measure
End Sub


Sub cmdRefresh_Click ()
    FindAllApps ' Update list of tasks
End Sub


Sub cmdSwitch_Click ()
    Dim hWnd As Long ' handle to window
    Dim x As Long ' work area
    Dim lngWW As Long ' Window Style bits
    If lstApp.ListIndex < 0 Then Beep: Exit Sub
    ' Get window handle from listbox array
    hWnd = lstApp.ItemData(lstApp.ListIndex)
    ' Get style bits for window
    lngWW = GetWindowLong(hWnd, GWL_STYLE)
    ' If minimized do a restore
    If lngWW And WS_MINIMIZE Then
    x = ShowWindow(hWnd, SW_RESTORE)
End If
' Move window to top of z-order/activate
'     ; no move/resize
x = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, _
SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)
End Sub


Sub FindAllApps ()
    Dim hwCurr As Long
    Dim intLen As Long
    Dim strTitle As String
    ' process all top-level windows in maste
    '     r window list
    lstApp.Clear
    hwCurr = GetWindow(Me.hWnd, GW_HWNDFIRST) ' get first window


    Do While hwCurr ' repeat for all windows


        If hwCurr Me.hWnd And TaskWindow(hwCurr) Then
            intLen = GetWindowTextLength(hwCurr) + 1 ' Get length
            strTitle = Space$(intLen) ' Get caption
            intLen = GetWindowText(hwCurr, strTitle, intLen)


            If intLen > 0 Then ' If we have anything, add it
                lstApp.AddItem strTitle
                ' and let's save the window handle in th
                '     e itemdata array
                lstApp.ItemData(lstApp.NewIndex) = hwCurr
            End If
        End If
        hwCurr = GetWindow(hwCurr, GW_HWNDNEXT)
    Loop
End Sub


Sub Form_Load ()
    IsTask = WS_VISIBLE Or WS_BORDER ' Define bits for normal task
    FindAllApps ' Update list
End Sub


Sub Form_Paint ()
    FindAllApps ' Update List
End Sub


Sub Label1_Click ()
    FindAllApps ' Update list
End Sub


Sub lstApp_DblClick ()
    cmdSwitch.Value = True
End Sub


Function TaskWindow (hwCurr As Long) As Long
    Dim lngStyle As Long
    lngStyle = GetWindowLong(hwCurr, GWL_STYLE)
    If (lngStyle And IsTask) = IsTask Then TaskWindow = True
End Function
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
andysalihCommented:
the best on ive seen, have graphical representation is :-
http://www.planetsourcecode.com/xq/ASP/txtCodeId.21195/lngWId.1/qx/vb/scripts/ShowCode.htm

all these threads you can download the actaul source code and build of them

hope this helps

andy
0
 
Ryan ChongCommented:
Hi raybeam, try this:

Obtaining a List of Running Processes:

http://www.mvps.org/vbnet/code/system/toolhelpprocesses.htm

'Hope will help.
0
 
glass_cookieCommented:
Hi!

Here's one:

Download...
http://www.vb-helper.com/Howto/listtask.zip

Description: List top-level tasks (3K)

It gives ONLY the windows that are running.  Not the ones at the background.

To use, type:

FindTopLevelWindows Me

That's it!

glass cookie : )
0
 
raybeamAuthor Commented:
Thanx guys, all comments were valuable information but the 1st was andy, but I still have a problem, it won't create the hsnap object under Win NT 4

regards to all

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.