StartDownloadsServiceBeispieleWorkshopsKontakt DeutschEnglish
 
Beispiele
Allgemein
Outlook®
 
Awarded by
Microsoft since 2005:
mvp logo
VBOffice Info
Besucher1388599
Aufrufe5085879
Links
Impressum
Datenschutz
Kontakt
Win32: Fenster anhand des Titels finden
Autor: Michael BauerHomepage
Datum: 05.02.2006Zugriffe: 21377
  
Beschreibung

Das Beispiel ermittelt eine Fensterzugriffsnummer (Handle) anhand des Fenstertitels (Caption-Eigenschaft) unterhalb eines angegebenen Fensters.

Wenn Sie ein Fenster auf der obersten Ebene suchen wollen, dann rufen Sie zuerst die Funktion GetDesktopWindow auf und übergeben das Ergebnis der Funktion FindChildWindowText im Argument lHnd. Sie können aber auch das Handle jedes beliebigen anderen Fensters übergeben, unterhalb dessen Sie suchen möchten.

Groß-/Kleinschreibung wird nicht unterschieden; Sie können in sFind den exakten Titel übergeben oder einen Teilstring mit Asterisk (*).

' <modFindWindowText>
Option Explicit
Private Declare Function GetWindow Lib "user32" _
  (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowTextA Lib "user32" _
  (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetDesktopWindowA Lib "user32" _
  Alias "GetDesktopWindow" () As Long

Const GW_HWNDNEXT = 2
Const GW_CHILD = 5

Public Function GetDesktopWindow() As Long
  GetDesktopWindow = GetDesktopWindowA
End Function

Public Function FindChildWindowText(ByVal lHwnd As Long, _
  sFind As String _
) As Long
  Dim lRes As Long
  Dim sFindLC As String

  lRes = GetWindow(lHwnd, GW_CHILD)
  If lRes Then
    sFindLC = LCase$(sFind)
    Select Case InStr(sFindLC, "*")
    Case Is > 0
      Do
        If LCase$(GetWindowText(lRes)) Like sFindLC Then
          FindChildWindowText = lRes
          Exit Function
        End If
        lRes = GetWindow(lRes, GW_HWNDNEXT)
      Loop While lRes <> 0

    Case Else
      Do
        If LCase$(GetWindowText(lRes)) = sFindLC Then
          FindChildWindowText = lRes
          Exit Function
        End If
        lRes = GetWindow(lRes, GW_HWNDNEXT)
      Loop While lRes <> 0
    End Select
  End If
End Function

Private Function GetWindowText(ByVal lHwnd As Long) As String
  Const STR_SIZE As Long = 256
  Dim sBuffer As String * STR_SIZE
  Dim lSize As Long

  sBuffer = String$(STR_SIZE, vbNullChar)
  lSize = GetWindowTextA(lHwnd, sBuffer, STR_SIZE)
  If lSize > 0 Then
    GetWindowText = left$(sBuffer, lSize)
  End If
End Function
' </modFindWindowText>

 
 

ReplyAll warnt Sie, bevor Sie unbeabsichtigt allen Empfängern einer E-Mail antworten oder wenn Sie ein vertraulicher BCC-Empfänger der E-Mail ... [weiter]

 

Blitzschneller Zugriff auf die Hauptkategorienliste, gemeinsame Kategorien im Netzwerk, eine Erinnerungsfunktion ... [weiter]

 

SAM legt automatisch Absender, Signatur und Speicherort für gesendete Mails fest, z.B. anhand der ... [weiter]

 

OLKeeper verhindert zuverlässig, dass Mitarbeiter Outlook schließen und dadurch Termine oder E-Mails ... [weiter]

So entgeht Ihnen kein Auftrag mehr:
Telefonservice und Sekretariatsservice