Now available at http://EmpowermentZone.com/saysetup.exe Over the past few years, I have gained experience with various programming languages and screen reader interfaces. This package consolidates routines I developed that enable a Windows program to speak messages beyond what a screen reader will say automatically via default speech. Direct speech messages, smartly placed, can significantly increase the nonvisual usability of an application. I hope this contribution makes it easier for interested developers to incorporate such functionality in their software. Jamal SayTools Version 1.0 June 5, 2008 Copyright 2008 by Jamal Mazrui LGPL license Contents Description Installation Operation Development Notes ---------- Description SayTools is a collection of software, provided in both source code and executable forms, for developers to conveniently add speech to an application. It is able to detect whether the JAWS, System Access, or Window-Eyes screen reader is running, and speak through the relevant API if found. It can also use the default SAPI speech on the computer. ---------- Installation The installation program for SayTools is called saysetup.exe. When executed, it prompts for a program folder, defaulting to C:\Program Files\SayTools The files jfwapi.dll and saapi32.dll are also copied to the Windows System folder to ensure they are on the Windows search path. The installer creates a program group for SayTools on the Windows start menu, containing choices to read Documentation, explore the program folder, or uninstall the package. If an update becomes available, it may be safely installed over this version -- unless otherwise specified. A SayTools subfolder contains "Hello world" samples in the following programming languages: AutoIt, C#, JScript, Perl, PowerBASIC, Python, Ruby, VBScript, Visual Basic .NET, and WinBatch. These demonstrate how SayTools may be used to provide speech messages that enhance the usability of an application for people who are operating nonvisually. ---------- Operation Once SayTools is installed on a computer, a COM client may use the string "Say.Tools" as the ProgID (program identifier) for creating an object with speech related methods. These methods are as follows: IsJAWSActive() -- Test whether JAWS is active in memory IsSAActive() -- Test whether System Access is active in memory IsWEActive() -- Test whether Window-Eyes is active in memory UseSAPI(bState) -- Determine whether SAPI speech is used if no screen reader is found, passing a Boolean parameter of 1 for True or 0 for False JAWSSay(sText) -- Say a string of text via JAWS SASay(sText) -- Say a string of text via System Access SAPISay(sText) -- Say a string of text via SAPI WESay(sText) -- Say a string of text via Window-Eyes Say(sText) -- Say a string of text via JAWS, System Access, or Window-Eyes if found, or SAPI if that has been set as the last resort (default is False) The command-line utilities are as follows: SayLine.exe sLine -- Say a line of text, passed as a parameter on the command line, using a screen reader if found, or SAPI if not SayFile.exe sFile -- Say a text file, passed as a complete path on the command line, using a screen reader if found, or SAPI if not RunScript.exe sScript -- Run an active JAWS script, either global default or application specific, passed as a complete path on the command line ---------- Development Notes I developed SayTools with the Python language, freely available at http://python.org The COM server is created using py2exe from http://py2exe.org The command-line utilities are written in PowerBASIC, commercially available at http://PowerBASIC.com I wrote code with the EdSharp editor, freely available at http://EmpowermentZone.com/edsetup.exe I welcome feedback, which helps SayTools improve over time. When reporting a problem, the more specifics the better, including steps to reproduce it, if possible. The latest version of SayTools is available at the same URL, http://EmpowermentZone.com/saysetup.exe Jamal Mazrui empower@xxxxxxxxx ---------- End of Document ** To leave the list, click on the immediately-following link:- ** [mailto:guispeak-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** guispeak-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:guispeak-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** guispeak-request@xxxxxxxxxxxxx with the Subject:- faq