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>