Thanks for the explanation,
It explains me how it all works.
I’m just trying to summarize your explanation to solidify my understanding.
1. Every window control is represented by NVDAObject
2. To create NVDAObject, window handle is obtain from the application
3. This window handle is passed to the accessibility api (JAB MSAA etc)
4. The accessibility api expose the window by different methods/properties
5. The accessibility client receives information and creates object (in this case NVDAObject.IAccessible etc )
Another thing an API class must have is a way to talk to the control in question via accessibility API. Each API class includes a reference to the control as seen by accessibility API. For MSAA/IAccessible, it is object.IAccessibleObject; for UIA, it is object.UIAElement.
I’m bit confused here. Do you mean the accessibility API can provide mechanism to modify source object (the real application window?
Please correct me if I misunderstood something.