Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Päällä olevat ohjelmat

Antti Laaksonen [08.05.2002 15:48:20]

#

Tämä ohjelma listaa kaikki Windowsissa käynnissä olevat ohjelmat. Lista sisältää myös ne ohjelmat, joita ei näy tehtäväpalkissa, joten ainakin minulla ohjelmia oli kaikkiaan yli sata. Alkuun päästään FindWindow- ja GetWindow-funktioilla, sitten listaa kelataan GetNextWindow-funktiolla ja ohjelmien nimet haetaan funktiolla GetWindowText.

Formilla on luonnollisesti oltava ListBox, jonka nimi on List1. Haku käynnistyy Formista painamalla.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) 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

Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

Private Sub Form_Click()
    Dim uwnd As Long, onimi As String * 256
    Dim s1 As String, s2 As String
    Dim num As Long, yht As Integer
    uwnd = FindWindow(s1, s2)
    uwnd = GetWindow(uwnd, GW_HWNDFIRST)
    Do While uwnd <> 0
        num = GetWindowText(uwnd, onimi, 256)
        If num > 0 Then
            List1.AddItem onimi
            yht = yht + 1
        End If
        uwnd = GetNextWindow(uwnd, GW_HWNDNEXT)
    Loop
    Caption = "Yhteensä: " & yht
End Sub

(nimetön) [19.06.2002 01:00:42]

#

Toi nyt kylläkin listaa kaikkea muuta kuin "käynnissä olevat ohjelmat"

Monkkats [24.09.2003 17:58:41]

#

Saiskohan toho mitenkää lisättyy sellast hommaa jol vois sulkee noit prosessei?

pipopää [18.06.2004 20:29:24]

#

lainaus:

Saiskohan toho mitenkää lisättyy sellast hommaa jol vois sulkee noit prosessei?

mäki haluaisin tietää

theman [03.08.2004 13:00:02]

#

niin mäkin

BadSource [04.08.2004 09:49:11]

#

En nyt rupea kommentoimaan miten typerää tämä on, sillä jos/kun et tiedä mitä olet tekemässä, niin luultavasti kaadat tai sammutat koko Windowssisi tällä, mutta olkaapa hyvät...

Jos haluaa poistaa käynnissä olevia prosesseja, niin muuttakaapa Laaksosen koodia seuraavasti...

Private Sub Form_Click()
    Dim uwnd As Long, onimi As String * 256
    Dim s1 As String, s2 As String
    Dim num As Long, yht As Integer
    uwnd = FindWindow(s1, s2)
    uwnd = GetWindow(uwnd, GW_HWNDFIRST)
    Do While uwnd <> 0
        num = GetWindowText(uwnd, onimi, 256)
        If num > 0 Then
            List1.AddItem onimi
            'Otetaan talteen prosessin kahva. Tärkeä!
            [b]List1.ItemData(List1.NewIndex) = uwnd[/b]
            yht = yht + 1
        End If
        uwnd = GetNextWindow(uwnd, GW_HWNDNEXT)
    Loop
    Caption = "Yhteensä: " & yht
End Sub

Lisätkää siis tuo boldattu koodinpätkä, formille uusi nappula(cmdDelProsess) ja sille seuraava koodi. (Huom. Lisätkää myös se SendMessagen API formin alkuun muiden APIen joukkoon sekä vakio Const WM_CLOSE = &H10)

Private Sub cmdDelProsess_Click()
    Dim RetVal As Integer

    With List1
        If .ListIndex > -1 Then
            RetVal = SendMessage(.ItemData(.ListIndex), WM_CLOSE, 0, 0&)
        End If
    End With
End Sub

theman [04.08.2004 10:10:44]

#

saaks tohon mitenkään WM_DESTROY

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta