| |

VB.NET - Ein- und UmsteigerRe: Alle Fenster auflisten, die mit TEXT beginnen | |  | Autor: Drapondur | Datum: 14.08.06 20:32 |
| Hi,
hier gibt's Code (der für einen Anfänger vllt ein bißchen schwierig ein dürfte)
Imports System.Runtime.InteropServices
Public Class Form1
#Region "Api-Deklarationen"
Private Delegate Function EnumWindowsProcDele( _
ByVal hwnd As IntPtr, _
ByVal lParam As IntPtr) As Boolean
Private Declare Function EnumWindows Lib "user32.dll" ( _
ByVal lpEnumFunc As EnumWindowsProcDele, _
ByVal lParam As IntPtr) As Boolean
Private Declare Function GetDesktopWindow Lib "user32.dll" () As IntPtr
Private Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" ( _
ByVal hwnd As IntPtr, _
ByVal lpString As System.Text.StringBuilder, _
ByVal cch As Int32) As Int32
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias _
"GetWindowTextLengthA" ( _
ByVal hwnd As IntPtr) As Int32
#End Region
'Klasse, um sich Infos zu Fenstern zu merken
Private Class EnumWindowsInfo
Public Match As String 'Gibt an, welche Fenster gefunden
' werden sollen
Public [Handles] As IntPtr() 'Gibt die Handles der Fenster zurück
Public Text As String() 'Gibt den Titel der Fenster zurück
End Class
Private Sub cmdFindWindows_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) _
Handles cmdFindWindows.Click
Try
'Neue Info-Klasse machen
Dim info As New EnumWindowsInfo
'...und Member initialisieren
info.Handles = New IntPtr() {}
info.Match = "F*"
info.Text = New String() {}
'Die Klasse pinnen, damit sie vom GC nicht verschoben wird
Dim gch As GCHandle = GCHandle.Alloc(info, GCHandleType.Normal)
Try
'Das GCHandle als IntPtr holen, weil die API-Funktion das
' braucht
Dim lParam As IntPtr = GCHandle.ToIntPtr(gch)
Dim d As New EnumWindowsProcDele(AddressOf EnumWindowsProc)
Dim hwndDeskTop As IntPtr = GetDesktopWindow
'Fenster enummerieren lassen
EnumWindows(d, lParam)
Debug.WriteLine("ERGEBNIS:")
For idx As Integer = 0 To info.Handles.Length - 1
Debug.WriteLine("Fensterhandle: " & info.Handles( _
idx).ToString & _
"; Text: " & info.Text(idx))
Next
Catch ex As Exception
Debug.WriteLine(ex.ToString)
Finally
gch.Free()
End Try
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Function EnumWindowsProc(ByVal hwnd As IntPtr, ByVal lParam As _
IntPtr) As Boolean
Try
Debug.Write("In EnumWindowsProc ")
Dim ret As Integer
'Die Länge des Fenstertitels holen
ret = GetWindowTextLength(hwnd)
If ret > 0 Then
'Den Titeltext des Fensters holen
Dim sb As New System.Text.StringBuilder(ret)
ret = GetWindowText(hwnd, sb, ret)
Dim txt As String = sb.ToString
'Das GCHandle zurückholen
Dim gch As GCHandle = GCHandle.FromIntPtr(lParam)
'Jetzt das im GCHandle allozierte Objekt holen
Dim info As EnumWindowsInfo = CType(gch.Target, EnumWindowsInfo)
Debug.WriteLine("Fenster mit Text " & txt)
'Vergleich, ob der Text dem Gesuchten entspricht und ggf. merken
If txt Like info.Match Then
ReDim Preserve info.Handles(info.Handles.Length)
info.Handles(info.Handles.Length - 1) = hwnd
ReDim Preserve info.Text(info.Text.Length)
info.Text(info.Text.Length - 1) = txt
End If
Else
Debug.WriteLine("Fenster ohne Text")
End If
Return True
Catch ex As Exception
Debug.WriteLine(ex.ToString)
End Try
End Function
End Class Ciao
D. |  |
 Alle Fenster auflisten, die mit TEXT beginnen | 1.708 | M$ | 14.08.06 18:31 |   Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.215 | Visual Basic Fan | 14.08.06 18:38 |    Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.435 | M$ | 14.08.06 18:42 |     Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.254 | Visual Basic Fan | 14.08.06 18:44 |      Code posten | 1.177 | Visual Basic Fan | 14.08.06 18:45 |       Re: Code posten | 1.194 | M$ | 14.08.06 18:50 |     Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.111 | Visual Basic Fan | 14.08.06 18:49 |      Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.176 | M$ | 14.08.06 18:52 |       Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.129 | Visual Basic Fan | 14.08.06 19:49 |        Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.184 | M$ | 14.08.06 19:54 |   Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.197 | Drapondur | 14.08.06 20:32 |    Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.057 | M$ | 14.08.06 20:42 |     Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.095 | Drapondur | 14.08.06 21:04 |      Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.076 | M$ | 14.08.06 21:28 |   Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.135 | M$ | 14.08.06 21:29 |    Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.257 | Iced-T | 14.08.06 22:20 |     Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.060 | M$ | 14.08.06 22:57 |      Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.064 | Iced-T | 15.08.06 01:10 |       Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.069 | M$ | 15.08.06 09:57 |        Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.128 | WmS | 15.08.06 13:49 |     Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.054 | Drapondur | 15.08.06 14:39 |      Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.163 | M$ | 15.08.06 15:57 |       Re: Alle Fenster auflisten, die mit TEXT beginnen | 1.069 | M$ | 18.10.06 13:02 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|