I'm doing a lot of experiences with part of original code by Luis.
Code: Select all
;port by luis
;http://www.purebasic.fr/english/viewtopic.php?f=17&t=51303
;PB 4.61
;EnableExplicit
Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
CompilerIf Defined(Name, #PB_Variable)
If SizeOf(Name) = SizeOf(GUID)
Name\Data1 = l
Name\Data2 = w1
Name\Data3 = w2
Name\Data4[0] = b1
Name\Data4[1] = b2
Name\Data4[2] = b3
Name\Data4[3] = b4
Name\Data4[4] = b5
Name\Data4[5] = b6
Name\Data4[6] = b7
Name\Data4[7] = b8
EndIf
CompilerEndIf
EndMacro
Global IID_IAccessible.GUID
DEFINE_GUID(IID_IAccessible, $618736e0, $3c3d, $11cf, $81, $0c, $00, $aa, $00, $38, $9b, $71)
;DEFINE_GUID(IID_IAccessible, $00020404, $0000, $0000, $c0, $00, $00, $00, $00, $00, $00, $46)
Prototype.l ProtoAccessibleObjectFromWindow(hwnd.i,dwObjectID.l, riid, *ppvObject)
Global AccessibleObjectFromWindow.ProtoAccessibleObjectFromWindow
Prototype.l ProtoAccessibleChildren(*paccContainer,iChildStart.l,cChildren.l,*rgvarChildren,*pcObtained)
Global AccessibleChildren.ProtoAccessibleChildren
Define hdll
Define *Accessible.IAccessible
CoInitialize_(0)
hdll=OpenLibrary(#PB_Any,"Oleacc.dll")
AccessibleObjectFromWindow = GetFunction(hdll,"AccessibleObjectFromWindow")
Procedure DisplayInfo (*aAccessible.IAccessible, aOffset$ )
Protected count, iObtained
Protected BSTR_wsText
Protected vt.VARIANT, i, err
Protected *enum.IEnumVARIANT
vt\vt = #VT_I4
vt\lVal = 0
If *aAccessible
BSTR_wsText = SysAllocString_("")
;*BSTR_wsText=AllocateMemory(1024)
If *aAccessible\get_accChildCount(@count) = #S_OK And count > 0
For i = 0 To count
If *aAccessible\get_accName(vt+i, @BSTR_wsText) = #S_OK
Debug PeekS(@BSTR_wsText,-1,#PB_Ascii)
EndIf
Next
EndIf
EndIf
EndProcedure
listbox = $000402DE
#OBJID_WINDOW=0
#OBJID_CLIENT=$FFFFFFFC
If listbox
If AccessibleObjectFromWindow(listbox, #OBJID_WINDOW, @IID_IAccessible, @*Accessible) = #S_OK
DisplayInfo(*Accessible, "")
EndIf
EndIf
Still not working...