Also, ich habe das Programm nun umgeschrieben.
Trotzdem kommt folgende FM:
[ERROR] ListChildWindows.pb (Line 20): "Class.s = Space(#BufferSize)"
[ERROR] Invalid Memory access.
Was mache ich falsch?
Code: Alles auswählen
#BufferSize = 2048
Procedure.s GetClassName(handle.l)
Class.s = Space(#BufferSize)
GetClassName_(handle, @Class, Len(Class))
ProcedureReturn Left(Class, Len(Class))
EndProcedure
Procedure.s GetTitle(handle)
Name.s = Space(#BufferSize)
GetWindowText_(handle, @Name, Len(Name))
ProcedureReturn
EndProcedure
Procedure ListChildWindows (window, parameter)
GetClassName_ (window, ReAllocateMemory (0, 255), 255)
;class$ = PeekS (MemoryID ())
class$ = GetClassName(window)
GetWindowText_ (window, ReAllocateMemory (0, 255), 255)
AllocateMemory(DerzweiteParameter)
;title$ = PeekS (MemoryID ())
title$ = GetTitle(window)
FreeMemory (0)
For a = 1 To parameter
sub$ = sub$ + "--------"
Next
Debug sub$ + ">" + Chr (34) + title$ + Chr (34) + " / Class: " + class$
EnumChildWindows_ (window, @ListChildWindows (), parameter + 1)
ProcedureReturn #True
EndProcedure
; List top-level windows...
Procedure ListWindows (window, parameter)
GetClassName_ (window, ReAllocateMemory (0, 255), 255)
;class$ = PeekS (MemoryID ())
class$ = GetClassName(window)
GetWindowText_ (window, ReAllocateMemory (0, 255), 255)
;title$ = PeekS (MemoryID ())
title$ = GetTitle(window)
FreeMemory (0)
Debug ""
Debug "------------------------------------------------------------------------"
Debug Chr (34) + title$ + Chr (34) + " / Class: " + class$
Debug "------------------------------------------------------------------------"
EnumChildWindows_ (window, @ListChildWindows (), 1)
ProcedureReturn #True
EndProcedure
EnumWindows_ (@ListWindows (), 0)