I got bored, so wrote it. It'll retrieve the list of tabs of the running firefox. I tested it with Firefox v3.0.7 in XPSP3.
NEED Accessibility Standard Library.
Chronological Order
Code:
ACC_Init()
MsgBox % FF_TabList()
ACC_Term()
FF_TabList()
{
DetectHiddenWindows, On
If Not hWnd := WinExist("ahk_class MozillaUIWindowClass")
Return
Loop, % COM_Invoke(pacc:=ACC_AccessibleObjectFromWindow(hWnd),"accChildCount")
If COM_Invoke(pacc,"accChild[" A_Index "].accRole[0]")=0x14
{
paccChild := COM_Invoke(pacc,"accChild",A_Index)
Break
}
COM_Release(pacc)
If Not pacc := paccChild
Return
idx := 0
Loop, % COM_Invoke(pacc,"accChildCount")
If COM_Invoke(pacc,"accChild[" A_Index "].accRole[0]")=0x26
sTabs .= "[TAB" (++idx) (COM_Invoke(pacc,"accChild[" A_Index "].accState[0]")&0x18000 ? "]`t":"]*`t") COM_Invoke(pacc,"accChild[" A_Index "].accChild[1].accChild[1].accName[0]") "`n`t" COM_Invoke(pacc,"accChild[" A_Index "].accChild[1].accChild[1].accValue[0]") "`n"
COM_Release(pacc)
Return sTabs
}
TabBar OrderCode:
ACC_Init()
MsgBox % FF_TabList()
ACC_Term()
FF_TabList()
{
DetectHiddenWindows, On
If Not hWnd := WinExist("ahk_class MozillaUIWindowClass")
Return
Loop, % COM_Invoke(pacc:=ACC_AccessibleObjectFromWindow(hWnd),"accChildCount")
If COM_Invoke(pacc,"accChild[" A_Index "].accRole[0]")=0x14
{
paccChild := COM_Invoke(pacc,"accChild",A_Index)
Break
}
COM_Release(pacc)
If Not pacc := paccChild
Return
paccChild:=0, COM_Invoke(pdic:=COM_CreateObject("Scripting.Dictionary"),"CompareMode",1)
Loop, % COM_Invoke(pacc,"accChildCount")
If (nRole:=COM_Invoke(pacc,"accChild[" A_Index "].accRole[0]"))=0x26
COM_Invoke(pdic,"Item",COM_Invoke(pacc,"accChild[" A_Index "].accChild[1].accChild[1].accName[0]"),COM_Invoke(pacc,"accChild[" A_Index "].accChild[1].accChild[1].accValue[0]"))
Else If (nRole=0x3C)
paccChild := COM_Invoke(pacc,"accChild",A_Index)
COM_Release(pacc)
If Not pacc := paccChild
Return COM_Release(pdic)
idx := 0
Loop, % COM_Invoke(pacc,"accChildCount")
If COM_Invoke(pacc,"accChild[" A_Index "].accRole[0]")=0x25
sTabs .= "[TAB" (++idx) (COM_Invoke(pacc,"accChild[" A_Index "].accState[0]")&2 ? "]*`t":"]`t") (sName:=COM_Invoke(pacc,"accChild[" A_Index "].accName[0]")) "`n`t" COM_Invoke(pdic,"Item",sName) "`n"
COM_Release(pacc)
COM_Release(pdic)
Return sTabs
}