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