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
Toi nyt kylläkin listaa kaikkea muuta kuin "käynnissä olevat ohjelmat"
Saiskohan toho mitenkää lisättyy sellast hommaa jol vois sulkee noit prosessei?
lainaus:
Saiskohan toho mitenkää lisättyy sellast hommaa jol vois sulkee noit prosessei?
mäki haluaisin tietää
niin mäkin
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
saaks tohon mitenkään WM_DESTROY
Aihe on jo aika vanha, joten et voi enää vastata siihen.