How to trap URL in mozilla Tabs

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

How to trap URL in mozilla Tabs

anandnirbhay4u
Hi,
I am writting a application that requires trapping of urls ( In
Address Bar of mozilla tabs).
Here is what i did

I picked the handle of the browser and using IAccessible interface
enumerated the child windows to get the Url. in this i found that when
we add or remove any tool bar the position of the child window gets
changed which has the url so i cant access it through the child count.
Please let me know the way to get the url from the address bar.

please find the code bellow:

public void GetmozillaUrl(IntPtr hWnd)
        {
            int childCount = 0;
            string Url = null;
            IAccessible accessibleWindow = null;
            int returnVal = AccessibleObjectFromWindow(hWnd, 0,
IID_IAccessible.ToByteArray(),
 
ref accessibleWindow);
            if (returnVal == 0)
            {
                try
                {
                    int numberOfChield =
accessibleWindow.accChildCount;

                    object[] arrChield = new object[numberOfChield];

                    int success =AccessibleChildren(accessibleWindow,
0, numberOfChield, arrChield, out childCount);

                    if (success == 0)
                    {
                        if (arrChield.Length >= 4)
                        {
                            accessibleWindow = arrChield[3] as
IAccessible;
                            numberOfChield =
accessibleWindow.accChildCount;
                            arrChield = new object[numberOfChield];
                            success = AccessibleChildren
(accessibleWindow, 0, numberOfChield, arrChield, out childCount);
                            if (success == 0)
                            {
                                if (arrChield.Length >= 4)
                                {
                                    accessibleWindow = arrChield[15]
as IAccessible;
                                    if (accessibleWindow.accChildCount
>= 5)
                                    {
                                        numberOfChield =
accessibleWindow.accChildCount;
                                        arrChield = new object
[numberOfChield];
                                        success = AccessibleChildren
(accessibleWindow, 0, numberOfChield, arrChield, out childCount);
                                    }
                                    else
                                        success = -1;

                                    if (success == 0)
                                    {
                                        if (arrChield.Length >= 5)
                                        {

                                            accessibleWindow =
arrChield[6] as IAccessible;
                                            numberOfChield =
accessibleWindow.accChildCount;
                                            arrChield = new object
[numberOfChield];

                                            success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);


                                            if (arrChield.Length >= 1)
                                            {
                                                accessibleWindow =
arrChield[1] as IAccessible;
                                                Url =
accessibleWindow.get_accValue(0);
                                                textBox1.Text = Url;

                                                //success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);
                                                //numberOfChield =
accessibleWindow.accChildCount;
                                                //arrChield = new
object[numberOfChield];
                                            }
                                            //accessibleWindow =
arrChield[1] as IAccessible;
                                            //buddyId =
accessibleWindow.get_accValue(0);
                                        }
                                    }
                                    else
                                    {
                                        if (arrChield.Length >= 4)
                                        {
                                            accessibleWindow =
arrChield[16] as IAccessible;
                                            numberOfChield =
accessibleWindow.accChildCount;
                                            arrChield = new object
[numberOfChield];
                                            success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);

                                            if (success == 0)
                                            {
                                                if (arrChield.Length
>= 5)
                                                {

                                                    accessibleWindow =
arrChield[6] as IAccessible;
                                                    numberOfChield =
accessibleWindow.accChildCount;
                                                    arrChield = new
object[numberOfChield];
                                                    success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);


                                                    if
(arrChield.Length >= 1)
                                                    {
 
accessibleWindow = arrChield[1] as IAccessible;
                                                        Url =
accessibleWindow.get_accValue(0);
                                                        textBox1.Text
= Url;

                                                        //success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);
                                                        //
numberOfChield = accessibleWindow.accChildCount;
                                                        //arrChield =
new object[numberOfChield];
                                                    }
                                                    //accessibleWindow
= arrChield[1] as IAccessible;
                                                    //buddyId =
accessibleWindow.get_accValue(0);
                                                }
                                            }

                                        }


                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    ex = null;
                }
            }

        }

Regards
Nirbhay Anand
_______________________________________________
dev-accessibility mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-accessibility
sbq
Reply | Threaded
Open this post in threaded view
|

RE: How to trap URL in mozilla Tabs

sbq
You can use Accessibility_getAttributes() to get the HTML attributes
Firefox makes available to AT.

I dumped the AT tree for Firefox and looked at the URL box.  Here's what
looked promising to me:

1. Here's the text box itself.  Note attributes 2/3 and 3/3.  Those two
attributes make this child unique among its siblings.

child 2/8 (n:Location,d:,r:entry) Box[326,111,413,17] [actions:
activate] [subs: Action Component EditableText Text ] (children: 0)
child 2/8   - [states: editable, enabled, focusable, horizontal, opaque,
sensitive, showing, single_line, visible, supports_autocompletion]
child 2/8   - Text(len: 23): "http://www.weather.com/"
child 2/8   - attr 1/3 haspopup:true
child 2/8   - attr 2/3 class:autocomplete-textbox textbox-input
child 2/8   - attr 3/3 tag:html:input


2. The parent node of the URL box has an id attribute: id:urlbar.
"urlbar" is a unique id as far as I can tell.

child 7/8 (n:Location,d:,r:autocomplete) Box[295,106,513,27] [actions:
open] [subs: Action Component ] (children: 8)
child 7/8   - [states: enabled, expandable, focusable, horizontal,
opaque, sensitive, showing, visible]
child 7/8   - attr 1/3 haspopup:true
child 7/8   - attr 2/3 tag:textbox
child 7/8   - attr 3/3 id:urlbar

Conclusion: look for an (n:Location, r:autocomplete) Accessible with
attribute id:urlbar.  Then look for the child of that node that
is(n:Location, r:entry), and has tag:html:input.  You could further
require class:autocomplete-textbox textbox-input.  That should be a
winner for now.  Keep in mind that Firefox could change anything you
depend on in a future release.

-Sam

-----Original Message-----
From:
dev-accessibility-bounces+sam.quiring=[hidden email]
[mailto:dev-accessibility-bounces+sam.quiring=[hidden email]
a.org] On Behalf Of [hidden email]
Sent: Wednesday, January 21, 2009 3:58 AM
To: [hidden email]
Subject: How to trap URL in mozilla Tabs

Hi,
I am writting a application that requires trapping of urls ( In Address
Bar of mozilla tabs).
Here is what i did

I picked the handle of the browser and using IAccessible interface
enumerated the child windows to get the Url. in this i found that when
we add or remove any tool bar the position of the child window gets
changed which has the url so i cant access it through the child count.
Please let me know the way to get the url from the address bar.

please find the code bellow:

public void GetmozillaUrl(IntPtr hWnd)
        {
            int childCount = 0;
            string Url = null;
            IAccessible accessibleWindow = null;
            int returnVal = AccessibleObjectFromWindow(hWnd, 0,
IID_IAccessible.ToByteArray(),
 
ref accessibleWindow);
            if (returnVal == 0)
            {
                try
                {
                    int numberOfChield = accessibleWindow.accChildCount;

                    object[] arrChield = new object[numberOfChield];

                    int success =AccessibleChildren(accessibleWindow,
0, numberOfChield, arrChield, out childCount);

                    if (success == 0)
                    {
                        if (arrChield.Length >= 4)
                        {
                            accessibleWindow = arrChield[3] as
IAccessible;
                            numberOfChield =
accessibleWindow.accChildCount;
                            arrChield = new object[numberOfChield];
                            success = AccessibleChildren
(accessibleWindow, 0, numberOfChield, arrChield, out childCount);
                            if (success == 0)
                            {
                                if (arrChield.Length >= 4)
                                {
                                    accessibleWindow = arrChield[15] as
IAccessible;
                                    if (accessibleWindow.accChildCount
>= 5)
                                    {
                                        numberOfChield =
accessibleWindow.accChildCount;
                                        arrChield = new object
[numberOfChield];
                                        success = AccessibleChildren
(accessibleWindow, 0, numberOfChield, arrChield, out childCount);
                                    }
                                    else
                                        success = -1;

                                    if (success == 0)
                                    {
                                        if (arrChield.Length >= 5)
                                        {

                                            accessibleWindow =
arrChield[6] as IAccessible;
                                            numberOfChield =
accessibleWindow.accChildCount;
                                            arrChield = new object
[numberOfChield];

                                            success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);


                                            if (arrChield.Length >= 1)
                                            {
                                                accessibleWindow =
arrChield[1] as IAccessible;
                                                Url =
accessibleWindow.get_accValue(0);
                                                textBox1.Text = Url;

                                                //success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);
                                                //numberOfChield =
accessibleWindow.accChildCount;
                                                //arrChield = new
object[numberOfChield];
                                            }
                                            //accessibleWindow =
arrChield[1] as IAccessible;
                                            //buddyId =
accessibleWindow.get_accValue(0);
                                        }
                                    }
                                    else
                                    {
                                        if (arrChield.Length >= 4)
                                        {
                                            accessibleWindow =
arrChield[16] as IAccessible;
                                            numberOfChield =
accessibleWindow.accChildCount;
                                            arrChield = new object
[numberOfChield];
                                            success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);

                                            if (success == 0)
                                            {
                                                if (arrChield.Length
>= 5)
                                                {

                                                    accessibleWindow =
arrChield[6] as IAccessible;
                                                    numberOfChield =
accessibleWindow.accChildCount;
                                                    arrChield = new
object[numberOfChield];
                                                    success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);


                                                    if (arrChield.Length
>= 1)
                                                    {
 
accessibleWindow = arrChield[1] as IAccessible;
                                                        Url =
accessibleWindow.get_accValue(0);
                                                        textBox1.Text =
Url;

                                                        //success =
AccessibleChildren(accessibleWindow, 0, numberOfChield, arrChield, out
childCount);
                                                        //
numberOfChield = accessibleWindow.accChildCount;
                                                        //arrChield =
new object[numberOfChield];
                                                    }
                                                    //accessibleWindow =
arrChield[1] as IAccessible;
                                                    //buddyId =
accessibleWindow.get_accValue(0);
                                                }
                                            }

                                        }


                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    ex = null;
                }
            }

        }

Regards
Nirbhay Anand
_______________________________________________
dev-accessibility mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-accessibility
_______________________________________________
dev-accessibility mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-accessibility