vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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

Visual-Basic Einsteiger
Re: Titelzeilen aller Fensters auslesen 
Autor: RalfH
Datum: 05.12.03 15:00

Servus,

na klar, so gehts:

Einfach neues Projekt erstellen und auf die Form 3 Checkboxen (Check1, Check2, Check3) und 1 Listbox (List1) platzieren. Die Checkboxen und die Listbox werden automatisch beim Starten angepasst

Option Explicit
 
' ermittelt das Handle eines Fenster durch Klasse oder Titel
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
' ermittelt die Beschriftung/Titel eines Fenster
Private Declare Function GetWindowText Lib "user32" Alias _
  "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, _
  ByVal cch As Long) As Long
 
' ermittelt das nachfolgende Fenster (mit GW_HWNDNEXT)
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
  ByVal wCmd As Long) As Long
 
' Fensterstile ermitteln
Private Declare Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" (ByVal hwnd As Long, _
  ByVal wIndx As Long) As Long
 
' ermittelt den Fenster-Besitzer
Private Declare Function GetParent Lib "user32" ( _
   ByVal hwnd As Long) As Long
 
' Wert für den wCmd-Parameter von GetWindow
Private Const GW_HWNDNEXT = 2     ' liefert das nächste Fenster
 
' Wert für den wIndx-Parameter von GetWindowLong
Private Const GWL_STYLE = (-16)   ' liefert die Fensterstile
 
Private Const WS_VISIBLE = &H10000000
Private Const WS_BORDER = &H800000
 
Private Const STR_BUF_SIZE = 1280
 
 
' ermittelt die Fenstertitel
Private Sub GetWindowTitle()
 
  Dim tbuf As String, lRet As Long, Handle As Long, lStyle As Long
 
  Dim bParent As Boolean, bVisible As Boolean, bBorder As Boolean
 
  ' Handle des ersten Fensters ermitteln
  Handle = FindWindow(vbNullString, vbNullString)
 
  List1.Clear
  Do Until Handle = 0
 
    ' Fensterstile des Fensters ermitteln
    lStyle = GetWindowLong(Handle, GWL_STYLE)
 
    ' Status Fensterbesitzer ermitteln
    bParent = (GetParent(Handle) = 0) Or (Check1.Value = 0)
    ' Status "Fenster sichtbar" ermitteln
    bVisible = ((lStyle And WS_VISIBLE) <> 0) Or (Check2.Value = 0)
    ' Status "Fenster hat Rahmen" ermitteln
    bBorder = ((lStyle And WS_BORDER) <> 0) Or (Check3.Value = 0)
 
    ' wenn alles stimmt, dann hier weiter
    If bParent And bVisible And bBorder Then
 
      tbuf = Space(STR_BUF_SIZE)
 
      ' Fenstertitel ermitteln
      lRet = GetWindowText(Handle, tbuf, Len(tbuf))
 
      ' wenn ein Fenstertitel existiert, dann in Liste einfügen
      If lRet > 0 Then
        tbuf = UCase(Left(tbuf, lRet))
        List1.AddItem tbuf
      End If
 
    End If
 
    ' Handle des nächsten Fensters ermitteln
    Handle = GetWindow(Handle, GW_HWNDNEXT)
  Loop
 
  Me.Caption = CStr(List1.ListCount) & " Fenstertitel"
End Sub
 
' Nur elternlose Fenster
Private Sub Check1_Click()
  GetWindowTitle
End Sub
 
' Nur sichtbare Fenster
Private Sub Check2_Click()
  GetWindowTitle
End Sub
 
' Nur Fenster mit Rahmen
Private Sub Check3_Click()
  GetWindowTitle
End Sub
 
Private Sub Form_Load()
  On Error Resume Next
 
  With Check1
    .Caption = "Nur elternlose Fenster"
    .Top = 60
    .Left = 60
    .Width = 2355
    .Height = 315
    .Value = 1
  End With
 
  With Check2
    .Caption = "Nur sichtbare Fenster"
    .Top = 60
    .Left = 2460
    .Width = 2355
    .Height = 315
    .Value = 1
  End With
 
  With Check3
    .Caption = "Nur Fenster mit Rahmen"
    .Top = 60
    .Left = 4860
    .Width = 2355
    .Height = 315
    .Value = 1
  End With
 
  With List1
    .Top = 420
    .Left = 0
  End With
 
  GetWindowTitle
End Sub
 
Private Sub Form_Resize()
  On Error Resume Next
 
  With List1
    .Width = Me.ScaleWidth
    .Height = Me.ScaleHeight - .Top
  End With
 
End Sub

Viel Spass,
R@lf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Titelzeilen aller Fensters auslesen377$hark05.12.03 14:20
Re: Titelzeilen aller Fensters auslesen256RalfH05.12.03 15:00
Danke !!!251$hark05.12.03 21:42

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