[thunder] Re: Thunder enhancements was: Re: Re: Thunder and Uac.

  • From: Alasdair King <alasdairking@xxxxxxxxx>
  • To: thunder@xxxxxxxxxxxxx
  • Date: Wed, 5 Aug 2009 07:51:09 +0100

Dear Serge, Roger and All,

I've developed a scripting component for Thunder that permits some of
the API and MSAA access that Serge has requested. At the moment it's a
standalone install, but if we can all agree its features I'll build it
into the Thunder installer so you can be sure it's available to
Thunder scripts. I've called it AccessScripting. The documentation is
at the end of this email, and there is sample code in the component
installation folder.

I've also updated and corrected the Thunder scripting manual.

You can download the scripting component here:
http://download.webbie.org.uk/AccessScripting.msi
And the manual:
http://download.webbie.org.uk/Thunder%20Scripting%20Manual%202009%20July%2031.doc

Instructions follow. Best wishes, Alasdair King (Skype Alasdairking)

http://download.webbie.org.uk/AccessScripting.msi

AccessScripting DLL 1.0
31 July 2009
Alasdair King
alasdair@xxxxxxxxxxxxx

This allows you to call the Windows API for MSAA and other
accessiblity information from VBScript. You can also include it as a
reference in VB6 programs to provide a convenient way to call these
functions. This document will assume you're using VBScript (i.e. that
you're scripting the Thunder screenreader.)

The functions are all the standard Microsoft functions, so their
purpose and operation is not detailed here. Look at MSDN. Some of them
are amended for operation from VB Script.

There are two VB Script files in this distribution: check those out
for examples of how to use the DLL. They are CurrentWindowTitle.vbs
and WhatIsAtPosition.vbs.

INSTALLATION

You must register AccessScripting.dll using regsvr32 or use Windows
installer to make the appropriate registry entries.

USAGE

Dim acc
Set acc = CreateObject("AccessScripting.AccessObj")

You can then use the AccessObj functions detailed below. Most wrap the
usual Windows API function with the same name, like
GetForegroundWindow: it returns the window handle using the
GetForegroundWindow API call and returns you the value. However,
because VBScript is not strongly typed, any function that takes
arguments, like AccessibleObjectFromWindow, can't use the usual
declaration. For these functions I have provided a "VBS" version,
which will work slightly differently from the API norm.

COMPLETE LIST OF FUNCTIONS

Some of these work fine from VB Script as-is. The exceptions have
VBScript versions, see below.

AccessibleObjectFromPoint
AccessibleObjectFromWindow
FindWindowEx
GetClassName
GetDesktopWindow
GetFocus
GetForegroundWindow
GetRoleText
GetWindowText
PostMessage
SendMessage
SetFocus

VBSCRIPT VERSIONS OF FUNCTIONS

Where a VBScript version exists, it has the same name as the normal
API function with the three letters VBS appended to it. Some of the
arguments are different, however.

AccessibleObjectFromPointVBS (x,y)
Returns the IAccessible object (if available) from the point provided
in x and y. There is no way to get the child variant at present.

AccessibleObjectFromWindowVBS (hWnd)
Returns the IAccessible object (if available) from the window provided
in hWnd. There is no way to get the child variant at present.

FindWindowExVBS (hwndParent, hwndChildAfter, lpszClass, lpszWindow)
As normal.

GetClassNameVBS (hWnd)
Returns the ClassName (e.g. "Notepad" for notepad.exe) specified by
the window handle.

PostMessageVBS (hWnd, wMsg, wParam, lParam)
As normal.

SendMessageVBS (hWnd, wMsg, wParam, lParam)
As normal.

DEBUGGING

There is one non-Windows function to help with debugging:

DebugPrint (s)
Writes string s to a text file on your desktop called
accessscript.log. Creates if necessary, appends otherwise.

-- 
Alasdair King
--
Thunder Screen Reader e-mail list.
To find out more about Thunder Screen Reader:- 
<http://www.screenreader.net/>
To unscubscribe from the list, click on the link below:-
[mailto:thunder-request@xxxxxxxxxxxxx?subject=unsubscribe]
If the above link doesn't work, send a blank message to:- 
<thunder-request@xxxxxxxxxxxxx>
With unsubscribe in the subject field.
The list Archives can be found at:- <//www.freelists.org/archives/thunder/>
To e-mail the moderators send a message to: <thunder-moderators@xxxxxxxxxxxxx>



Other related posts: