![]() |
|
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: [ 2526 ]
|
|
|