![]() |
Tipp 0099
|
Childfenster von Fremdanwendungen überwachen
|
 |
|
Autor/Einsender: Datum: |
|
Elmar Leinen 12.07.2001 |
|
Entwicklungsumgebung: |
|
VB 5 |
|
|
Mit FindWindow, z.B. in Kombination mit GetWindowText ist es möglich, Informationen über das (Haupt-)Fenster von Fremd-Programmen zu bekommen.
|
Möchte man jedoch ein Childfenster (z.B. anhand seines Klassennamens) überwachen und evtl. Text-Inhalte dieses Fensters ermitteln, ist es nötig, auf
EnumChildWindows zu zugreifen. Der Klassenname des
Childfensters/Hauptfensters muss allerdings vorher mit einem ClasSpy-Programm bestimmt werden, also bekannt sein.
|
Mit dem folgenden Beispiel kann man die Statusleiste (Klassenname = "msctls_statusbar32"!) im MS-Internet Explorer (IE Klassenname =
"IEFrame") überwachen. So erfährt man den momentanen Status des Internet Explorers - z. B. über welchem Link momentan der Mauszeiger steht, ob die Seite fertiggeladen wurde, usw.
|
|
Code im Codebereich des Moduls |
|
|
Option Explicit
Declare Function EnumChildWindows Lib "user32" (ByVal _
hWndParent As Long, ByVal lpEnumFunc As Long, ByVal _
lParam As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam _
As Long, lParam As Any) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
(ByVal hwnd As Long, ByVal lpClassName As String, ByVal _
nMaxCount As Long) As Long
Const WM_GETTEXT = &HD
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam _
As Long) As Long
Dim a As String, b As String, g As String, l As Long
a = Space$(128)
l = GetClassName(hwnd, a, 128)
g = Left(a, l)
l = SendMessage(hwnd, WM_GETTEXT, 128, ByVal a)
If g = "msctls_statusbar32" Then _
Form1.Label1.Caption = Left(a, l)
EnumChildProc = 1
End Function
|
|
|
Code im Codebereich der Form |
|
|
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Dim F As Long
Private Sub Form_Load()
Me.AutoRedraw = True
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
F = FindWindow("IEFrame", vbNullString)
Label2.Caption = Str$(F)
EnumChildWindows F, AddressOf EnumChildProc, ByVal 0&
End Sub
|
|
|
|
|
|
Um dieses Beispiel ausführen zu können muss der Microsoft
Internet Explorer ab Version 4 installiert sein.
|
|
Windows-Version |
95 |
 |
|
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
VB-Version |
VBA 5 |
 |
|
VBA 6 |
 |
|
VB 4/16 |
 |
|
VB 4/32 |
 |
|
VB 5 |
 |
|
VB 6 |
 |
|
|
|
Download (3,2 kB)
|
Downloads bisher: [ 2493 ]
|
|
|