[program-l] Re: JAWS Visual Studio Script Query

  • From: "Pranav Lal" <pranav.lal@xxxxxxxxx>
  • To: <program-l@xxxxxxxxxxxxx>
  • Date: Fri, 1 May 2009 06:50:18 +0530

Hi David and Justin,

Jamal has already answered the question on the bx toolbox. Be warned, it
takes some time getting used to all the different keystrokes in that tool. I
have not used it extensively but plan to do so since I may be forced to do
some Jaws scripting.

Pranav

-----Original Message-----
From: program-l-bounce@xxxxxxxxxxxxx [mailto:program-l-bounce@xxxxxxxxxxxxx]
On Behalf Of David Lant
Sent: Friday, May 01, 2009 12:32 AM
To: program-l@xxxxxxxxxxxxx
Subject: [program-l] Re: JAWS Visual Studio Script Query

Hi Pranav,

No, I've not tried the bx toolbox as I've never heard of it. <smile>  What
is it and where can one get it?

All the best,

David

-----Original Message-----
From: program-l-bounce@xxxxxxxxxxxxx [mailto:program-l-bounce@xxxxxxxxxxxxx]
On Behalf Of Pranav Lal
Sent: 30 April 2009 02:10
To: program-l@xxxxxxxxxxxxx
Subject: [program-l] Re: JAWS Visual Studio Script Query

Hi David,

Have you tried the bx toolbox?

Pranav

-----Original Message-----
From: program-l-bounce@xxxxxxxxxxxxx [mailto:program-l-bounce@xxxxxxxxxxxxx]
On Behalf Of David Lant
Sent: Thursday, April 30, 2009 2:29 AM
To: program-l@xxxxxxxxxxxxx
Subject: [program-l] Re: JAWS Visual Studio Script Query

Hi Jamal,

Thanks for the suggestion.  I tried it and it caused MSAA.EXE to stop
working.  I'm running Vista, and as WinDig was written in 2005, I suspect
it's not geared up for Vista as it stands.  I had to run it as an
administrator because it wouldn't allow the DLL to write to the default
location in C:\Program Files otherwise.

I did manage to get a complete output though, but it didn't reveal anything
new.  WinDig didn't recognise the objects in the designer at all and was
only able to recognise that there were a number of nested windows around the
designer, which I'd gathered already using the JAWS home row.   It certainly
didn't display any of the descriptive information that JAWS is announcing
when the workflow designer gets focus.  Either this means it's not MSAA
information, or it's being exposed in an arcane way.  I get the same
behaviour from JAWS on my XP SP2 machine, so I don't think it's anything to
do with UIA.  *shrug* 

All the best,

David

-----Original Message-----
From: program-l-bounce@xxxxxxxxxxxxx [mailto:program-l-bounce@xxxxxxxxxxxxx]
On Behalf Of Jamal Mazrui
Sent: 29 April 2009 19:49
To: program-l@xxxxxxxxxxxxx
Subject: [program-l] Re: JAWS Visual Studio Script Query

Hi David,
Perhaps it's worth trying a utility I wrote a few years ago called
WinDig, which tries to extract all available information, including MSAA
properties, from an application window.
http://EmpowermentZone.com/wdsetup.exe

Hope this helps,
Jamal
On Wed, 29 Apr 2009, David Lant
wrote:

> Date: Wed, 29 Apr 2009 19:39:03 +0100
> From: David Lant <david.lant1@xxxxxxxxxxxxxx>
> Reply-To: program-l@xxxxxxxxxxxxx
> To: program-l@xxxxxxxxxxxxx
> Subject: [program-l] Re: JAWS Visual Studio Script Query
>
> Hi Jamal,
>
> I'm not sure that using the number of controls is any kind of way to
> identify a specific designer.  By definition the number of controls in any
> designer is going to vary according to what you're designing at the time.
> E.g. a forms designer could have anything from no controls to several
dozen.
> As far as I can determine, there are no controls other than the design
> surface itself that are integral to the workflow designer, which I imagine
> is no different to the forms designer or any other designer in the IDE.
>
> The status line on the Workflow designer is just the bog standard status
> line you see for the general Visual Studio IDE.  It doesn't add any useful
> information as the forms designer does.
>
> Using the home row, I've gone through all the available information and
none
> of it is usable to identify the workflow designer.  However, there must be
> MSAA information there because JAWS is speaking some information which
> sounds like an MSAA description when the designer gets focus, which is not
> visible on the screen.  Yet using the home row to query the MSAA
description
> yields nothing at all.
>
> I've also looked into the object model for Visual Studio extensibility and
> automation.  Sadly, this doesn't give you anything you can use to identify
> whether a particular window is a designer or not.  This is very
frustrating
> because there is actually a vsWindowType enumeration that defines the
> various window types, such as tool window, text editor, designer and
> document layout, to mention a few.  It just isn't available to query on an
> existing window.  You can only use it when creating your own window in
code.
> Or at least, if there is a way, I can't find it.
>
> I did use the StringContains JAWS function to identify if a window in the
> hierarchy contained the text "[Design]" and this successfully activated
the
> scripts for the forms designer.  Unfortunately they didn't achieve
anything
> at all, as it is becoming evident that the Workflow designer just doesn't
> expose the same information.
>
> Over to some more experienced JAWS scripters for suggestions...
>
> All the best,
>
> David
>
> -----Original Message-----
> From: program-l-bounce@xxxxxxxxxxxxx
[mailto:program-l-bounce@xxxxxxxxxxxxx]
> On Behalf Of Jamal Mazrui
> Sent: 29 April 2009 16:58
> To: program-l@xxxxxxxxxxxxx
> Subject: [program-l] Re: JAWS Visual Studio Script Query
>
> Yes, and if the other designer does not have a unique window name, look
> for something else that could distinguish it, e.g., the number or types
> of controls it contains, what it displays on the status line, etc.
>
> Jamal
>
> On Wed,
> 29 Apr 2009, Justin Daubenmire wrote:
>
> > Date: Wed, 29 Apr 2009 06:55:10 -0400
> > From: Justin Daubenmire <justind@xxxxxxxxx>
> > Reply-To: program-l@xxxxxxxxxxxxx
> > To: program-l@xxxxxxxxxxxxx
> > Subject: [program-l] Re: JAWS Visual Studio Script Query
> >
> > David,
> >
> > I have not looked at the scripts, but at a high level the concept is
> this...
> >
> > Open up the script file for vs 2008 and look for any windows forms
> designer
> > or movement type scripts such as move control left, move control right,
> > items like that.
> >
> > Note: you can press ctrl+l to get a list of scripts in the vs 2008 jaws
> > script file and read down them.
> >
> > In any windows form designer  related scripts and any events scripted to
> > support the windows form designer, add a test like this:
> >
> > if (*original test for windows form designer* || WPF Designer) then
> >
> > The || is the "or" for the script language. This way, if you adjust
maybe
> > one or two windows form designer scripts to also test for the WPF
Designer
> > window they will activate and let you test some to see if they work.
> > Let me know how you get on...
> >
> > /Justin
> >
> > ----- Original Message -----
> > From: "David Lant" <david.lant1@xxxxxxxxxxxxxx>
> > To: <program-l@xxxxxxxxxxxxx>
> > Sent: Tuesday, April 28, 2009 4:45 PM
> > Subject: [program-l] Re: JAWS Visual Studio Script Query
> >
> >
> > > Correction to my previous post....
> > >
> > > It seems that not all designers have the text "[Design]" in the window
> > > title.  The WPF designer doesn't.  However, the WPF designer does have
> > > more
> > > MSAA information than the others.  Indeed, the designer window has an
> MSAA
> > > Name of "WPF Designer".  This distinguishes between the designer pane
> and
> > > the XAML pane, which doesn't have the aforementioned MSAA name.
> > >
> > > So, window titles don't seem to be a reliable way to decide if JAWS is
> in
> > > a
> > > designer or not.  Shame MS couldn't have been a little more consistent
> in
> > > their implementation.
> > >
> > > So I'm still floundering as to how I can get JAWS to recognise that
it's
> > > in
> > > the Workflow designer and treat it like a forms designer.  Mind you,
> > > that's
> > > no guarantee that JAWS will be able to do anything with that knowledge
> as
> > > the Workflow designer doesn't seem to be natively giving out anything
> like
> > > as much MSAA information as the others.  Of course it could be that
I'm
> > > not
> > > looking in the right way, but that shouldn't be a prerequisite for
> finding
> > > such information.
> > >
> > > All the best,
> > >
> > > David
> > >
> > >
> > > -----Original Message-----
> > > From: program-l-bounce@xxxxxxxxxxxxx
> > > [mailto:program-l-bounce@xxxxxxxxxxxxx]
> > > On Behalf Of David Lant
> > > Sent: 28 April 2009 21:17
> > > To: program-l@xxxxxxxxxxxxx
> > > Subject: [program-l] Re: JAWS Visual Studio Script Query
> > >
> > > Hi again,
> > >
> > > Well, it appears that none of the hidden windows have a title that
could
> > > be
> > > used to identify the designer in the case of the Workflow designer.
> > >
> > > However, having said that, I'm wondering why the original scripts
didn't
> > > use
> > > the visible title with the text "[Design]" in it.  All of the
designers
> > > have
> > > this text in their window title and that would have seemed to be the
> more
> > > obvious way to identify one.
> > >
> > > Would it be possible to use a wildcard comparison or pattern matching
> for
> > > the window title to look for such a parent window?
> > >
> > > All the best,
> > >
> > > David
> > >
> > > -----Original Message-----
> > > From: program-l-bounce@xxxxxxxxxxxxx
> > > [mailto:program-l-bounce@xxxxxxxxxxxxx]
> > > On Behalf Of David Lant
> > > Sent: 28 April 2009 20:04
> > > To: program-l@xxxxxxxxxxxxx
> > > Subject: [program-l] Re: JAWS Visual Studio Script Query
> > >
> > > Thanks Jamal.  I'll give that a go.  I'm not sure which window I'll
need
> > > to
> > > look for, but hopefully it'll make itself clear.
> > >
> > > I haven't got around to WPF yet, but once I've finished my
> familiarisation
> > > with WF and WCF, then I'll move on to WPF.  My only reason for leaving
> > > that
> > > until last is that my workplace won't be adopting Vista for some time
> (if
> > > at
> > > all), so WPF is a very low priority.
> > >
> > > All the best,
> > >
> > > David
> > >
> > > -----Original Message-----
> > > From: program-l-bounce@xxxxxxxxxxxxx
> > > [mailto:program-l-bounce@xxxxxxxxxxxxx]
> > > On Behalf Of Jamal Mazrui
> > > Sent: 27 April 2009 17:54
> > > To: program-l@xxxxxxxxxxxxx
> > > Subject: [program-l] Re: JAWS Visual Studio Script Query
> > >
> > > Hi David,
> > > I did not write that part of the script code, but upon investigation,
do
> > > find that the script is looking for a parent window with that name.
> > > That name is, indeed, hidden, but may be found with the JAWS HomeRow
> > > utilities.  For example, press JAWSKey+Space to enter HomeRow mode.
> > > Rotor the F3 key until it says "window name."  Press F1 to hear that
> > > property of the current window.  Then press Shift+F2 and F1 again to
go
> > > up the window tree until you hear the window with the title of
> > > interest.
> > >
> > > If you are able to make some script improvements for WPF, I'll be glad
> > > to incorporate them in the distribution.
> > >
> > > Jamal
> > >
> > > On Mon, 27 Apr 2009, David Lant
> > > wrote:
> > >
> > >> Date: Mon, 27 Apr 2009 16:23:49 +0100
> > >> From: David Lant <david.lant1@xxxxxxxxxxxxxx>
> > >> Reply-To: program-l@xxxxxxxxxxxxx
> > >> To: program-l@xxxxxxxxxxxxx
> > >> Subject: [program-l] JAWS Visual Studio Script Query
> > >>
> > >> Hi folks,
> > >>
> > >> I'm going through some tutorials on using Windows Workflow Foundation
> > >> with
> > >> Visual Studio 2008, and was looking at whether I could adapt the JAWS
> > >> scripts to work properly with the workflow designer.
> > >>
> > >> Unfortunately I'm not following the scripts very well because it
isn't
> > > clear
> > >> at various points exactly what the process is doing.  What I can't
get
> my
> > >> head around is how the scripts know that they are in a designer. I've
> > > looked
> > >> at the below code, but can't find where it gets the idea to look for
> > >> "DesignerFrame" as the window title.  I've never seen any designer
with
> > > that
> > >> title, so I'm sure it can't be referring to the visible window title.
> > >>
> > >> Int Function inDesignView (Int iPCCursor)
> > >> var
> > >> handle hTemp,
> > >> string sTemp,
> > >> int iDesignFound;
> > >>
> > >> If !iLayoutAnnounce Then Return EndIf
> > >> Let iDesignFound=VS_False
> > >> Let hTemp=GetFocus()
> > >>
> > >> While ((hTemp) && (iDesignFound==VS_False))
> > >> Let sTemp=GetWindowName(hTemp)
> > >> if sTemp=="DesignerFrame" then
> > >> Let iDesignFound=VS_True
> > >> Else
> > >> Let hTemp=GetParent(hTemp)
> > >> EndIf
> > >> EndWhile
> > >> Return (iDesignFound) && (!iPCCursor || (IsPcCursor() &&
> > >> !IsVirtualPCCursor()))
> > >> EndFunction
> > >>
> > >> The script help says that the GetWindowName function returns the
window
> > >> title if any.  But as I mentioned, I don't see any windows with a
title
> > >> of
> > >> "DesignerFrame", including that of the forms designer.  So can anyone
> > >> tell
> > >> me where this "DesignerFrame" value has come from?
> > >>
> > >> Any pointers would be gratefully received.
> > >>
> > >> All the best,
> > >>
> > >> David
> > >>
> > >>
> > >>
> > > ** To leave the list, click on the immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> > > ** If this link doesn't work then send a message to:
> > > ** program-l-request@xxxxxxxxxxxxx
> > > ** and in the Subject line type
> > > ** unsubscribe
> > > ** For other list commands such as vacation mode, click on the
> > > ** immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> > > ** or send a message, to
> > > ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
> > >
> > > ** To leave the list, click on the immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> > > ** If this link doesn't work then send a message to:
> > > ** program-l-request@xxxxxxxxxxxxx
> > > ** and in the Subject line type
> > > ** unsubscribe
> > > ** For other list commands such as vacation mode, click on the
> > > ** immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> > > ** or send a message, to
> > > ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
> > >
> > > ** To leave the list, click on the immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> > > ** If this link doesn't work then send a message to:
> > > ** program-l-request@xxxxxxxxxxxxx
> > > ** and in the Subject line type
> > > ** unsubscribe
> > > ** For other list commands such as vacation mode, click on the
> > > ** immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> > > ** or send a message, to
> > > ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
> > >
> > > ** To leave the list, click on the immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> > > ** If this link doesn't work then send a message to:
> > > ** program-l-request@xxxxxxxxxxxxx
> > > ** and in the Subject line type
> > > ** unsubscribe
> > > ** For other list commands such as vacation mode, click on the
> > > ** immediately-following link:-
> > > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> > > ** or send a message, to
> > > ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
> >
> > ** To leave the list, click on the immediately-following link:-
> > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> > ** If this link doesn't work then send a message to:
> > ** program-l-request@xxxxxxxxxxxxx
> > ** and in the Subject line type
> > ** unsubscribe
> > ** For other list commands such as vacation mode, click on the
> > ** immediately-following link:-
> > ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> > ** or send a message, to
> > ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
> >
> ** To leave the list, click on the immediately-following link:-
> ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> ** If this link doesn't work then send a message to:
> ** program-l-request@xxxxxxxxxxxxx
> ** and in the Subject line type
> ** unsubscribe
> ** For other list commands such as vacation mode, click on the
> ** immediately-following link:-
> ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> ** or send a message, to
> ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
>
> ** To leave the list, click on the immediately-following link:-
> ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
> ** If this link doesn't work then send a message to:
> ** program-l-request@xxxxxxxxxxxxx
> ** and in the Subject line type
> ** unsubscribe
> ** For other list commands such as vacation mode, click on the
> ** immediately-following link:-
> ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
> ** or send a message, to
> ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
>
** To leave the list, click on the immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
** If this link doesn't work then send a message to:
** program-l-request@xxxxxxxxxxxxx
** and in the Subject line type
** unsubscribe
** For other list commands such as vacation mode, click on the
** immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
** or send a message, to
** program-l-request@xxxxxxxxxxxxx with the Subject:- faq

** To leave the list, click on the immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
** If this link doesn't work then send a message to:
** program-l-request@xxxxxxxxxxxxx
** and in the Subject line type
** unsubscribe
** For other list commands such as vacation mode, click on the
** immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
** or send a message, to
** program-l-request@xxxxxxxxxxxxx with the Subject:- faq

** To leave the list, click on the immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
** If this link doesn't work then send a message to:
** program-l-request@xxxxxxxxxxxxx
** and in the Subject line type
** unsubscribe
** For other list commands such as vacation mode, click on the
** immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
** or send a message, to
** program-l-request@xxxxxxxxxxxxx with the Subject:- faq

** To leave the list, click on the immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
** If this link doesn't work then send a message to:
** program-l-request@xxxxxxxxxxxxx
** and in the Subject line type
** unsubscribe
** For other list commands such as vacation mode, click on the
** immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
** or send a message, to
** program-l-request@xxxxxxxxxxxxx with the Subject:- faq

** To leave the list, click on the immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]
** If this link doesn't work then send a message to:
** program-l-request@xxxxxxxxxxxxx
** and in the Subject line type
** unsubscribe
** For other list commands such as vacation mode, click on the
** immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]
** or send a message, to
** program-l-request@xxxxxxxxxxxxx with the Subject:- faq

Other related posts: