Um ein Control innerhalb eines Fensters zu deaktivieren, musst du auch nach solchen ChildWindows suchen.
Wenn du mit Hilfe der Anwendung "WinSpy" auf den Button zeigst, dann siehst du in der Liste eine Baumstruktur. Genau so, wie es angezeigt wird, musst du Schritt für Schritt die Handle-Nummer der Childs ermitteln. Wenn du die Handle-Nummer des Buttons hast, dann kannst du es deaktivieren.
Beispiel:
Wir möchten gerne einen bestimmten Button in der Anwendung "ShoWin" deaktivieren. Schauen wir mal bei WinSpy, was er sagt:
Wir ermitteln also zuerst das Fenster und anschließend den Button.
Einfaches Beispiel mit FindWindow_() und FindWindowEx_():
Code: Alles auswählen
EnableExplicit
Define Handle
Handle = FindWindow_(#Null, "ShoWin 2.00");1. Schritt
Handle = FindWindowEx_(Handle, #Null, "Button", "Copy");2. Schritt
If Handle
EnableWindow_(Handle, #False)
Debug "Wurde deaktiviert"
Else
Debug "Nicht gefunden"
EndIf
Wenn es mehrere Child-Bereiche gibt, dann müssen wir diese ebenfalls einzeln mit FindWindowEx_() finden, um die Handle-Nummer zu bekommen. Anderes Beispiel mit zwei Childs:
Code: Alles auswählen
EnableExplicit
Define Handle
Handle = FindWindow_("Shell_TrayWnd", 0);1. Schritt
Handle = FindWindowEx_(Handle, 0, "ReBarWindow32", 0);2. Schritt
Handle = FindWindowEx_(Handle, 0, "MSTaskSwWClass", 0);3. Schritt
If Handle
;EnableWindow_(Handle, #False)
Debug "Wurde deaktiviert"
Else
Debug "Nicht gefunden"
EndIf
Nach dem Ausführen des Codes wurde der Button "Copy" deaktiviert:
Ich hoffe, du hast es einigermaßen verstanden und kannst selber die einzelnen Childs herausfinden und im Code schrittweise die jeweilige Handle-Nummer ermitteln.