vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: 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 Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Alle Fenster auflisten, die mit TEXT beginnen1.708M$14.08.06 18:31
Re: Alle Fenster auflisten, die mit TEXT beginnen1.215Visual Basic Fan14.08.06 18:38
Re: Alle Fenster auflisten, die mit TEXT beginnen1.435M$14.08.06 18:42
Re: Alle Fenster auflisten, die mit TEXT beginnen1.254Visual Basic Fan14.08.06 18:44
Code posten1.177Visual Basic Fan14.08.06 18:45
Re: Code posten1.194M$14.08.06 18:50
Re: Alle Fenster auflisten, die mit TEXT beginnen1.111Visual Basic Fan14.08.06 18:49
Re: Alle Fenster auflisten, die mit TEXT beginnen1.176M$14.08.06 18:52
Re: Alle Fenster auflisten, die mit TEXT beginnen1.129Visual Basic Fan14.08.06 19:49
Re: Alle Fenster auflisten, die mit TEXT beginnen1.184M$14.08.06 19:54
Re: Alle Fenster auflisten, die mit TEXT beginnen1.197Drapondur14.08.06 20:32
Re: Alle Fenster auflisten, die mit TEXT beginnen1.057M$14.08.06 20:42
Re: Alle Fenster auflisten, die mit TEXT beginnen1.095Drapondur14.08.06 21:04
Re: Alle Fenster auflisten, die mit TEXT beginnen1.076M$14.08.06 21:28
Re: Alle Fenster auflisten, die mit TEXT beginnen1.135M$14.08.06 21:29
Re: Alle Fenster auflisten, die mit TEXT beginnen1.257Iced-T14.08.06 22:20
Re: Alle Fenster auflisten, die mit TEXT beginnen1.060M$14.08.06 22:57
Re: Alle Fenster auflisten, die mit TEXT beginnen1.064Iced-T15.08.06 01:10
Re: Alle Fenster auflisten, die mit TEXT beginnen1.069M$15.08.06 09:57
Re: Alle Fenster auflisten, die mit TEXT beginnen1.128WmS15.08.06 13:49
Re: Alle Fenster auflisten, die mit TEXT beginnen1.054Drapondur15.08.06 14:39
Re: Alle Fenster auflisten, die mit TEXT beginnen1.163M$15.08.06 15:57
Re: Alle Fenster auflisten, die mit TEXT beginnen1.069M$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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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