Jag skulle behöva en kod som kollar vilka program som körs och då BARA de som visas i aktivitetsfältet. INTE alla processor på datorn. Den koden var bra och den hade jag nytta av, men jag behöver nåt sätt att bara se de som ligger i aktivitetsfältet. Det borde finnas nåt lätt sätt. Hej igen Här är du ju något du kan titta på. Vissar hur man kan använda FindWindowEx istället för EnumWindows. Vilket gör den lite långsammare. Men enklare och stabilare att arbeta med. Hej igen ****************************************Program som körs...
Nån som har kod?
Helst vill jag veta deras hWnd, men det går ju oxå om man har Titeln...
/ACSv: Program som körs...
EnumWindows listar cirka 150 st hWnd, varav kanske 2-6 är de som ligger i aktivitetsfältet och så är ca hälften av alla ej namngivna.
/ACSv: Program som körs...
En första enkel filtrering av EnumWindows skulle du kunna
göra så här.Sedan kan du kanske bygga på filtret efter dina behov.
If sSave <> "" Then _
Form1.List1.AddItem " Hwnd " & Str$(hwnd) & " " & sSave
mvh
SvenSv: Program som körs...
Visar oxå hur man hämtar texten.
<code>
Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
Dim lReturn As Long
Dim lpString As String
Dim hwndChild As Long
Dim nMaxCount As Long
hwndChild = FindWindowEx(0, 0, vbNullString, vbNullString)
Do While hwndChild
If IsWindowVisible(hwndChild) Then
nMaxCount = GetWindowTextLength(hwndChild)
lpString = String(nMaxCount, 0)
lReturn = GetWindowText(hwndChild, lpString, nMaxCount)
List1.AddItem lpString
End If
hwndChild = FindWindowEx(0, hwndChild, vbNullString, vbNullString)
Loop
End Sub
</code>Sv: Program som körs...
En annan typ av filter man skulle kunna tänka sig är
om du vet hur rubriken på fönsterna börjar.
Här exempel på fönster som börjar på S
If sSave Like "S*" Then _
Form1.List1.AddItem " Hwnd " & Str$(hwnd) & " " & sSave
DSSv: Program som körs...
DIN KOD
**************************************
Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
Dim lReturn As Long
Dim lpString As String
Dim hwndChild As Long
Dim nMaxCount As Long
hwndChild = FindWindowEx(0, 0, vbNullString, vbNullString)
Do While hwndChild
If IsWindowVisible(hwndChild) Then
nMaxCount = GetWindowTextLength(hwndChild)
lpString = String(nMaxCount, 0)
lReturn = GetWindowText(hwndChild, lpString, nMaxCount)
List1.AddItem lpString
End If
hwndChild = FindWindowEx(0, hwndChild, vbNullString, vbNullString)
Loop
End Sub
******************************************************
nMaxCount är en bokstav för kort, dvs att namnen i listan saknar sista bokstaven, om man skriver "nMaxCount+1" på raden ovan list1.additem så kommer sista med. Men detta visste väl du?
Tack för koden i övrigt.