title image


Smiley Re: hast du dazu einen Code-schnipsel?
Hallo Wastl,



GetWindowText: Titelleistentext ermitteln

[Private|Public] Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _

(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Funktionswert: Länge des Titelleistentextes

Besitzt das Fenster einen Titelleistentext, so wird dessen Länge zurückgegeben. Besitzt es keinen Titelleistentext, wird »0« zurückgegeben. Zum Beispiel »24« für "Microsoft Excel - Mappe1".

Parameter1: hwnd (Fensterhandle)

Das Fensterhandle muss vorher mit FindWindow ermittelt werden.

Parameter2: lpString (Zeiger auf die Pufferadresse des Titelleistentextes)

Bei "lpString" handelt es sich um einen Zeiger, der auf die Adresse zeigt, worin der von GetWindowText ermittelte Titelleistentext gespeichert ist. Um auf diesen Adresswert zuzugreifen, muss eine Variable fester Länge deklariert und der Funktion übergeben werden. Diese Variable enthält dann den Titelleistentext.

Parameter3: cch (Anzahl der Zeichen, die der Puffer aufnehmen soll)

In der VBA Entwicklungsumgebung sieht das dann zum Beispiel folgendermaßen aus:

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _

(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Sub Test()

Dim vWinHandle As Long

Dim vWindowCaption As String * 50

Dim vLength As Long

vWinHandle = FindWindow("XLMAIN", vbNullString) 'Excel

vLength = GetWindowText(vWinHandle, vWindowCaption, 51)

Debug.Print vLength

Debug.Print "#" & vWindowCaption & "#"

Debug.Print "#" & Left$(vWindowCaption , vLength) & "#"

End Sub

Beachten Sie, dass "vWindowCaption" die feste Länge 50 Zeichen hat. Sie müssen daher den eigentlichen Titelleistentext daraus noch ermitteln. Da wir wissen, wie lang der Titelleistentext ("vLength") ist, ist das auch kein Problem.

Fensterinformationen ermitteln

Wenn sie Fensterinformationen ermitteln möchten, so geht das relativ einfach über eine Schleife. Beachten sie, dass das Debugfenster nur 200 Zeilen aufnimmt.

Option Explicit

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _

(ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _

(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Sub Test()

Dim vClassName As String * 20

Dim vWindowCaption As String * 50

Dim vLength1 As Long, vLength2 As Long, i As Long

For i = 1 To 10000

vClassName = ""

vWindowCaption = ""

vLength1 = GetClassName(i, vClassName, 21)

vLength2 = GetWindowText(i, vWindowCaption, 51)

If vLength1 > 0 Then Debug.Print i, Left$(vClassName, vLength1), Left$(vWindowCaption, vLength2)

Next i

End Sub





Ich kann Dir je nur so auf die Schnelle einen Ausschnitt kopieren, weil das ganze Thema in der Bearbeitung steckt.



Gruß Uwe

Gruß Uwe

amolip.de



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: