[AI] say announcing tool

firoz firojjee at gmail.com
Sat Jun 7 00:22:00 EDT 2008

hope this will help some one


Subject: Announcing SayTools

Now available at

Over the past few years, I have gained experience with various
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
easier for interested developers to incorporate such functionality in
their software.


Version 1.0
June 5, 2008
Copyright 2008 by Jamal Mazrui
LGPL license


Development Notes


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
if found.  It can also use the default SAPI speech on the computer.


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
folder to ensure they are on the Windows search path.  The installer
creates a program group for SayTools on the Windows start menu,
choices to read Documentation, explore the program folder, or uninstall
the package.  If an update becomes available, it may be safely
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
of an application for people who are operating nonvisually.


Once SayTools is installed on a computer, a COM client may use the
"Say.Tools" as the ProgID (program identifier) for creating an object
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

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
if found, or SAPI if that has been set as the last resort (default is

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
or application specific, passed as a complete path on the command line

Development Notes

I developed SayTools with the Python  language, freely available at

The COM server is created using py2exe from

The command-line utilities are written in PowerBASIC, commercially
available at

I wrote code with the EdSharp editor, freely available at

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,

Jamal Mazrui
empower at smart.net

More information about the AccessIndia mailing list