@mikekaganski , thank you for your comment.
Version 2.
' lang:en
' Returns the value of accessible property propName of obj object or Empty.
Function GetAccessibleProperty(ByVal obj As Object, ByVal propName As String)
If Not HasUnoInterfaces(obj, "com.sun.star.accessibility.XAccessibleContext") Then
If HasUnoInterfaces(obj, "com.sun.star.accessibility.XAccessible") Then
obj = obj.AccessibleContext
Else
Exit Function
End If
End If
On Error GoTo ErrLabel
GetAccessibleProperty=CallByName(obj, propName, 2)
ErrLabel:
End Function
' lang: en
' Finds the top-level window by value of AccessibleID property.
Function GetDialogWindowByID(ByVal AccessibleId As String) As Object
Dim oToolkit as Object
Dim k As Long
Dim oWin as Object
oToolkit = Stardesktop.ActiveFrame.ContainerWindow.Toolkit
For k = 0 To oToolkit.TopWindowCount - 1
oWin = oToolkit.getTopWindow(k)
If HasUnoInterfaces(oWin, "com.sun.star.awt.XDialog") Then
If GetAccessibleProperty(oWin, "AccessibleId") = AccessibleId Then
GetDialogWindowByID=oWin
Exit Function
End If
End If
Next k
End Function
Sub Test
Dim oWin as Object
oWin = GetDialogWindowByID("SpellingDialog") ' Or "OptionsDialog", "FindReplaceDialog", ...
If Not (oWin is Nothing) Then
Msgbox "Found dialog with title: " & oWin.Title & Chr(10) & _
"Description:" & Chr(10) & GetAccessibleProperty(oWin, "AccessibleDescription")
Else
Msgbox "Dialog not found"
End If
End Sub