have you tried re installing the wlm app package? or maybe doing a wlm system
repair?
the repair is done in the program and features list. look for the essentuals
program. start a uninstall. it will open a dialog with options to uninstall or
repair all the essentuals programs that ar installed.
-----Original Message-----
From: peter Chin via Talk
Sent: Sunday, November 10, 2019 6:18 PM
To: Window-Eyes Discussion List
Cc: peter Chin
Subject: email
Hello all,
I made some mistakes in my last message so I am sending it again.
--------------------------------------------------
Hello all,
I use WLM as my e-mail client on a Windows 8.1 machine and WE 9.5.4. I had
no trouble with this client until just over a month ago. Since then, I get a
script error message after sending out an e-mail message.I get four choices:
ignore error, stop App, edit App or restart App. I have to choose the last
option if I want to continue using WLM. However, WLM doesn't function
properly unless I either reload WE or get out of WLM and then go back in.
I hope someone can suggest a remedy for this problem. For those who
understand script writing (which I don't), I include a copy of the script
which is supposed to be re-edited.
------------------------------------------------------------
' For license information, see WindowsLiveMail License.txt which ships with
this package.
Option Explicit
Dim myXMLFile : myXMLFile = ClientInformation.ScriptPath &
"+AFw-WindowsLiveMail.xml"
Dim myINIFile : myINIFile = ClientInformation.ScriptPath &
"+AFw-WindowsLiveMail.ini"
Dim myStrings : Set myStrings = Strings(myXMLFile)
Dim myScriptUpdateURL : myScriptUpdateURL =
"
http://www.gwmicro.com/scripts/windows_live_mail/xml
"
Dim checkedForUpdates : checkedForUpdates = False
Dim errorReportingEnabled : errorReportingEnabled = False
Dim SO_StandardHelpDialog : Set SO_StandardHelpDialog = Nothing
Dim SO_CheckForUpdate : Set SO_CheckForUpdate = Nothing
Dim SO_ErrorReporting : Set SO_ErrorReporting = Nothing
Dim fsObj : Set fsObj = CreateObject("Scripting.FileSystemObject")
Dim messageWindow : Set messageWindow = Nothing
Dim setFileActiveEvent : setFileActiveEvent = 0
Dim lastSpoken : lastSpoken = ""
Dim blockedFocusEvent : Set blockedFocusEvent = Nothing
Dim msaaFocusEvent : msaaFocusEvent = 0
Dim myMSAAEventSource : Set myMSAAEventSource = Nothing
Dim contactHwnd : contactHwnd = 0
Dim fieldDataEvent : fieldDataEvent = 0
Dim myMoveMessageHotkey : Set myMoveMessageHotkey = Nothing
Dim myKeyDownEvent : myKeyDownEvent = 0
Dim keyProcessedDownEventForBraille : keyProcessedDownEventForBraille = 0
Dim myBrailleObj : Set myBrailleObj = Nothing
Dim firstLetterNavStr : firstLetterNavStr = ""
Dim keyPressTimer : keyPressTimer = 0
Const TIMER_AUTOCOMPLETE = 1000
Const GRAPHIC_PREFIX = "GRAPHIC_"
Class MessageWindowClass
Private toField
Private autoCompleteSelected
Private myMSAAEventSource
Private autoCompleteEntries
Private myHotkeys
Private messageWindow
Private msaaEvents
Private timers
Private startTimerProxy
Private hotkeyProxy
Private msaaEventProxy
Public Sub Class_Initialize()
' Begin
Set toField = Nothing
Set autoCompleteSelected = Nothing
Set myMSAAEventSource = MSAAEventSource
Set autoCompleteEntries = CreateObject("Scripting.Dictionary")
Set myHotkeys = CreateObject("Scripting.Dictionary")
Set msaaEvents = CreateObject("Scripting.Dictionary")
Set timers = CreateObject("Scripting.Dictionary")
Set startTimerProxy = (New SingleParameterProxyClass).Init(Me,
"TimerProc")
Set hotkeyProxy = (New DualParameterProxyClass).Init(Me,
"HotkeyProc")
Set msaaEventProxy = (New DualParameterProxyClass).Init(Me,
"MSAAProc")
End Sub
Public Function Init(wObj, newMessage)
' Begin
Set messageWindow = wObj
RegisterHotkeys wObj
' We only need to hook events for new messages
myMSAAEventSource.Window = messageWindow
If newMessage Then
msaaEvents(msaaEvents.Count +- 1) =
ConnectEventWithParameter(myMSAAEventSource, "OnObjectFocus",
msaaEventProxy, event_OBJECT_FOCUS)
msaaEvents(msaaEvents.Count +- 1) =
ConnectEventWithParameter(myMSAAEventSource, "OnObjectStateChange",
msaaEventProxy, event_OBJECT_STATECHANGE)
Else
msaaEvents(msaaEvents.Count +- 1) =
ConnectEventWithParameter(myMSAAEventSource, "OnObjectReorder",
msaaEventProxy, event_OBJECT_REORDER)
End If
Set Init = Me
End Function
Private Sub RegisterHotkeys(wObj)
Dim i
' Begin
For i = 1 to 7
Set myHotkeys("myAlt" & i & "HotKey") =
Keyboard.RegisterHotkey("Alt-" & i, hotkeyProxy, wObj, i, True)
Next
End Sub
Public Sub HotkeyProc(hotkeyID, firstPress)
Dim accObj, noteWindow, searchStr, result, location, speakStr, match
' Begin
Set accObj = ActiveWindow.Accessible
Set noteWindow = Nothing
Set location = Nothing
Set result = Nothing
searchStr = ""
speakStr = ""
match = fmExact
If Not accObj Is Nothing Then
Set noteWindow = GetAccessibleByName(accObj.Children,
"NoteWindow", fmExact)
If Not noteWindow Is Nothing Then
Select Case hotkeyID
Case 1 ' Alt-1: From
searchStr = myStrings("MSG_FIELDS_FROM")
Case 2 ' Alt-2: Date
searchStr = myStrings("MSG_FIELDS_DATE")
Case 3 ' Alt-3: To
searchStr = myStrings("MSG_FIELDS_TO")
Case 4 ' Alt-4: CC
searchStr = myStrings("MSG_FIELDS_CC")
Case 5 ' Alt-5: BCC
searchStr = myStrings("MSG_FIELDS_BCC")
Case 6 ' Alt-6: Subject
searchStr = myStrings("MSG_FIELDS_SUBJECT")
Case 7 ' Alt-7: Attachment'
searchStr = "("
'myStrings("MSG_FIELDS_ATTACHMENT_STRING")
match = fmContains
End Select
If Len(searchStr) > 0 Then
Set result = GetAccessibleByName(noteWindow.Children,
searchStr, match)
If Not result Is Nothing Then
If hotkeyID = 7 Then
speakStr = result.Name
ElseIf hotkeyID = 1 Then
speakStr = result.Value & " " &
result.Description
Else
speakStr = result.Value
End If
Set location = result.Location
Else
speakStr = myStrings("NO") & " "
If hotkeyID = 7 Then
speakStr = speakStr &
myStrings("MSG_FIELDS_ATTACHMENT_STRING")
Else
speakStr = speakStr & searchStr
End If
End If
End If
End If
End If
If firstPress Then
Silence
MySpeak speakStr
Else
If Not location Is Nothing Then
Mouse.Position = ScreenPoint(location.Left, location.Top)
Mouse.Click mbLeft, 1
End If
End If
End Sub
Public Default Sub MSAAProc(accObj, eventID)
Dim accRole : Set accRole = Nothing
Dim accState : Set accState = Nothing
' Begin
If Not accObj Is Nothing Then
On Error Resume Next
Set accRole = accObj.Role
Set accState = accObj.State
On Error Goto 0
Select Case eventID
Case event_OBJECT_REORDER
If Left(accObj.Value, Len("wlmailhtml:{")) =
"wlmailhtml:{" Then
If Not accRole Is Nothing Then
If accRole.Value = role_SYSTEM_PANE Then
If Not accState Is Nothing Then
If accState.Focused And
accState.ReadOnly Then
If BrowseMode.State = bmsActive Then
'bmsEnabled
Sleep 100
ExecuteHotkey hkRedraw
End If
End If
End If
End If
End If
End If
Case event_OBJECT_FOCUS
If Not accRole Is Nothing Then
If accRole.Value = role_SYSTEM_TEXT Then
If accObj.Name = myStrings("MSG_FIELDS_TO") Then
Set toField = accObj
End If
End If
End If
Case event_OBJECT_STATECHANGE
If Not accRole Is Nothing Then
If accRole.Value = role_SYSTEM_LISTITEM Then
If Not accState Is Nothing Then
If accState.Selected Then
Set autoCompleteSelected = accObj
If timers.Exists(TIMER_AUTOCOMPLETE)
Then
If timers(TIMER_AUTOCOMPLETE) <> 0
Then
StopTimer
timers(TIMER_AUTOCOMPLETE)
End If
End If
timers(TIMER_AUTOCOMPLETE) =
StartTimer(100, startTimerProxy, TIMER_AUTOCOMPLETE)
End If
End If
End If
End If
End Select
End If
End Sub
Public Sub TimerProc(timerID)
Dim i, keys, accState, strToSpeak, index
' Begin
Select Case timerID
Case TIMER_AUTOCOMPLETE
If Not autoCompleteSelected Is Nothing Then
On Error Resume Next
strToSpeak = autoCompleteSelected.Value & ". " &
autoCompleteSelected.Description
index = GetSelectedItemIndex(autoCompleteSelected)
strToSpeak = strToSpeak &
Replace(myStrings("SUGGESTIONS"), "%1", Replace(Replace(myStrings("INDEX"),
"%1", index(0)), "%2", index(1)))
Silence
MySpeak strToSpeak
On Error Goto 0
End If
End Select
End Sub
Private Function GetSelectedItemIndex(accObj)
Dim accParent, i, children, total, selected, childState
' Begin
total = 0
selected = 0
Set accParent = Nothing
If Not accObj Is Nothing Then
On Error Resume Next
Set accParent = accObj.Parent
On Error Goto 0
If Not accParent Is Nothing Then
total = accParent.Children.Count
For i = 1 To accParent.Children.Count
On Error Resume Next
Set childState = accParent.Children(i).State
On Error Goto 0
If Not childState Is Nothing Then
If childState.Selected Then
selected = i
Exit For
End If
End If
Next
End If
End If
GetSelectedItemIndex = Array(selected, total)
End Function
Public Sub Dispose()
Dim i, keys
' Stop any existing timers
keys = timers.Keys
For i = 0 to UBound(keys)
If timers(keys(i)) <> 0 Then
StopTimer timers(keys(i))
End If
Next
' Unhook all the MSAA events
keys = msaaEvents.Keys
For i = 0 to UBound(keys)
If msaaEvents(keys(i)) <> 0 Then
Disconnect msaaEvents(keys(i))
End If
Next
End Sub
Private Function GetAccessibleByName(accChildren, strName, match)
Dim accChild, result
' Begin
Set result = Nothing
For Each accChild In accChildren
Select Case match
Case fmExact
If accChild.Name = strName Then
Set result = accChild
Exit For
End If
Case fmContains
If InStr(accChild.Name, strName) > 0 Then
Set result = accChild
Exit For
End If
Case fmStartsWith
If Left(accChild.Name, Len(strName)) = strName Then
Set result = accChild
Exit For
End If
Case fmEndsWith
If Right(accChild.Name, Len(strName)) = strName Then
Set result = accChild
Exit For
End If
End Select
If accChild.Children.Count > 0 Then
Set result = GetAccessibleByName(accChild.Children, strName,
match)
If Not result Is Nothing Then
Exit For
End If
End If
Next
Set GetAccessibleByName = result
End Function
Public Sub Class_Terminate()
Set messageWindow = Nothing
Set hotkeyProxy = Nothing
Set startTimerProxy = Nothing
Set autoCompleteEntries = Nothing
Set msaaEventProxy = Nothing
Set timers = Nothing
Set myHotkeys = Nothing
Set myMSAAEventSource = Nothing
Set autoCompleteSelected = Nothing
Set toField = Nothing
End Sub
End Class
' DualParameterProxyClass - marshals calls to the specified function inside
the caller. This
' particular class deals events or procedures that take a single argument.
Class DualParameterProxyClass
Private caller
Private functionName
' VBScript doesn't appear to report the default method correct,
' so we need to make sure that it's defined first.
Public Default Sub Main(parm1, parm2)
Eval "caller." & functionName & "(parm1, parm2)"
End Sub
Public Function Init(c, fn)
Set caller = c
functionName = fn
Set Init = Me
End Function
End Class
' SingleParameterProxyClass - marshals calls to the specified function
inside the caller. This
' particular class deals events or procedures that take a single argument.
Class SingleParameterProxyClass
Private caller
Private functionName
' VBScript doesn't appear to report the default method correct,
' so we need to make sure that it's defined first.
Public Default Sub Main(parm1)
Eval "caller." & functionName & "(parm1)"
End Sub
Public Function Init(c, fn)
Set caller = c
functionName = fn
Set Init = Me
End Function
End Class
'------------------------------------------------------------------------------
' OnStateChange is the routine that gets called with the OnStateChange event
' fires from the SharedObjects object.
'------------------------------------------------------------------------------
Sub OnStateChange(objName, objState)
If objName = "com.GWMicro.GWToolkit.CheckForUpdate" Then
If objState Then
'---------------------------------------------------------------------
' The CheckForUpdate object was just loaded, so call the
' CheckForUpdates routine if we have't already.
'---------------------------------------------------------------------
Set SO_CheckForUpdate = SharedObjects(objName, 0).NewCheck
If Not checkedForUpdates Then
Queue "CheckForUpdates"
checkedForUpdates = True
End If
Else
Set SO_CheckForUpdate = Nothing
End If
ElseIf objName = "com.GWMicro.GWToolkit.StandardHelpDialog" Then
'---------------------------------------------------------------------
' The StandardHelpDialog object was just loaded, so now we can
' set the ClientInformation.ScriptHelp property to our real
' script help routine. Otherwise, we'll set it back to our
' default message.
'---------------------------------------------------------------------
If objState Then
Set SO_StandardHelpDialog = SharedObjects(objName, 0).NewDialog
'----------------------------------------------------------------
' Set up the help dialog with the appropriate information
'----------------------------------------------------------------
SO_StandardHelpDialog.INIFileName = myINIFile
SO_StandardHelpDialog.HelpTitle = ClientInformation.ScriptName &
" " & ClientInformation.ScriptVersion
SO_StandardHelpDialog.HelpText = myStrings("Script_Help")
SO_StandardHelpDialog.ScriptName = ClientInformation.ScriptName
SO_StandardHelpDialog.ScriptVersion =
ClientInformation.ScriptVersion
SO_StandardHelpDialog.FocusCloseButton = True
SO_StandardHelpDialog.UpdateUrl = myScriptUpdateURL
SO_StandardHelpDialog.UseAboutBox = True
SO_StandardHelpDialog.AboutAuthor = "GW Micro, Inc."
SO_StandardHelpDialog.AboutReleaseDate =
fsObj.GetFile(ClientInformation.ScriptPath & "+AFw" &
ClientInformation.ScriptFileName).DateLastModified
SO_StandardHelpDialog.AboutCopyright = "GW Micro, Inc."
SO_StandardHelpDialog.AboutWebsite = "
www.gwmicro.com
"
If SharedObjects("com.GWMicro.GWToolkit.Version")() >= "8.4.1"
Then
SO_StandardHelpDialog.AboutEmail = "
supp...@gwmicro.com
"
End If
'----------------------------------------------------------------
' Change ClientInformation.ScriptHelp to our real routine
'----------------------------------------------------------------
ClientInformation.ScriptHelp = "ScriptHelp"
Else
'----------------------------------------------------------------
' Change ClientInformation.ScriptHelp to our default message
'----------------------------------------------------------------
Set SO_StandardHelpDialog = Nothing
ClientInformation.ScriptHelp = myStrings("GWToolkit_Required")
End If
ElseIf objName = "com.GWMicro.GWToolkit.ErrorReporting" And objState
Then
'---------------------------------------------------------------------
' The ErrorReporting object was just loaded, so now we can execute
' the code it provides for enhanced error reporting, assuming we
haven't
' already done so (with the errorReportingEnabled variable will tell
us).
' ErrorReporting is not stored as a global variable, because we only
care
' about executing it once, and never again.
'---------------------------------------------------------------------
If Not errorReportingEnabled Then
ExecuteGlobal SharedObjects(objName,
0)(ClientInformation.ScriptVersion, "
aa...@gwmicro.com
", True)
errorReportingEnabled = True
End If
End If
End Sub
'-----------------------------------------------------------------------
' Check for automatic updates
'-----------------------------------------------------------------------
Sub CheckForUpdates()
'-----------------------------------------------------------------------
' We first need to see if the check for update object is available. If
' it's not, there's no point in continuing.
'-----------------------------------------------------------------------
If Not SO_CheckForUpdate Is Nothing Then
'--------------------------------------------------------------------
' If Automatic_Update exists in our INI, and the value is 1, then
' we'll attempt to check for a new version.
'--------------------------------------------------------------------
If IniFile(myINIFile).Number("Automatic_Updates", "OnScriptStart",
1) = 1 Then
'----------------------------------------------------------------
' To check for an update, we need to provide the required
' information: our script version (which we stored in the
' ClientInformation object in the global variables section, and
' the web address to our XML file, which we also stored in
' the global variables section.
'----------------------------------------------------------------
SO_CheckForUpdate.ScriptVersion =
ClientInformation.ScriptVersion
SO_CheckForUpdate.UpdateUrl = myScriptUpdateURL
'----------------------------------------------------------------
' Now that we've provided all the required inforamtion, we
' have the GW Toolkit check for an update.
'----------------------------------------------------------------
SO_CheckForUpdate.Check
'----------------------------------------------------------------
' Finally, we'll set the global flag that indicates whether or
' not we've already checked for updates to True
'----------------------------------------------------------------
checkedForUpdates = True
Else
'----------------------------------------------------------------
' Since we weren't able to get the toolkit object at this point,
' we need to make sure our global flag that indicates whether
' or not we've already checked for updates is set to False.
'----------------------------------------------------------------
checkedForUpdates = False
End If
End If
End Sub
Sub ScriptHelp()
SO_StandardHelpDialog.Show
End Sub
Main()
Sub Main()
ClientInformation.ScriptName = myStrings("Script_Name")
ClientInformation.ScriptVersion = myStrings("Script_Version")
ClientInformation.ScriptDescription = ClientInformation.ScriptName & " "
& ClientInformation.ScriptVersion
ClientInformation.ScriptHelp = myStrings("GWToolkit_Required")
ConnectEvent SharedObjects, "OnStateChange", "OnStateChange"
ConnectEvent DesktopWindow, "OnChildActivate", "OnChildActivate"
ConnectEvent DesktopWindow, "OnChildCreate", "OnChildCreate"
ConnectEvent DesktopWindow, "OnChildClose", "OnChildClose"
setFileActiveEvent = ConnectEvent(Application, "OnSetFileActivate",
"OnSetFileActivate")
End Sub
Sub OnSetFileActivate(setFile)
If setFile.FileName = "WindowsLiveMail.set" Then
LoadGraphicDictionaryEntries()
' We're done with this event, so no need to keep it hanging around
If setFileActiveEvent <> 0 Then
Disconnect setFileActiveEvent
setFileActiveEvent = 0
End If
End If
End Sub
Sub LoadGraphicDictionaryEntries()
Dim activeSet, activeGraphicDictionary, keys, i, crc, labels
' Begin
Set activeSet = ActiveSettings
If Not activeSet Is Nothing Then
Set activeGraphicDictionary = activeSet.GraphicDictionary
If Not activeGraphicDictionary Is Nothing Then
keys = myStrings.Keys
For i = 1 to UBound(keys)
If Left(keys(i), Len(GRAPHIC_PREFIX)) = GRAPHIC_PREFIX Then
crc = Mid(keys(i), Len(GRAPHIC_PREFIX) +- 1,
Len(keys(i)))
labels = Split(myStrings(keys(i)), "|")
On Error Resume Next
' This is in an on error because, prior to Window-Eyes
7.5.4, sending a CRC
' value greater than 2147483647 would cause an overflow
script error.
activeGraphicDictionary.Add crc, labels(0), labels(1),
False, False, False
On Error Goto 0
End If
Next
End If
End If
End Sub
Sub OnChildCreate(wObj)
If wObj.ModuleName = "MSMAIL" Then
If wObj.ClassName = "Address Book Native Window Class" Then '
Address Book Native Window Class
contactHwnd = wObj.Handle
Set myMSAAEventSource = MSAAEventSource
myMSAAEventSource.Process = ClientInformation.ApplicationProcess
Set blockedFocusEvent =
myMSAAEventSource.BlockEvent(event_OBJECT_FOCUS,
ClientInformation.ApplicationProcess)
msaaFocusEvent = ConnectEvent(myMSAAEventSource,
"OnObjectFocus", "OnObjectFocus")
End If
End If
End Sub
Sub OnChildClose(hwnd)
If hwnd = contactHwnd Then
If msaaFocusEvent <> 0 Then
Disconnect msaaFocusEvent
msaaFocusEvent = 0
End If
If Not blockedFocusEvent Is Nothing Then
blockedFocusEvent.Unblock
Set blockedFocusEvent = Nothing
End If
If Not myMSAAEventSource Is Nothing Then
Set myMSAAEventSource = Nothing
End If
End If
End Sub
Sub OnChildActivate(wObj)
' Begin
If Not messageWindow Is Nothing Then
messageWindow.Dispose()
End If
Set messageWindow = Nothing
If fieldDataEvent <> 0 Then
Disconnect fieldDataEvent
fieldDataEvent = 0
End If
If myKeyDownEvent <> 0 Then
Disconnect myKeyDownEvent
myKeyDownEvent = 0
End If
Set myMoveMessageHotkey = Nothing
If wObj.ModuleName = "MSMAIL" Then
Select Case wObj.ClassName
Case "Outlook Express Browser Class"
' Maximize the main window
wObj.Status = wsMaximized
Set myMoveMessageHotkey =
Keyboard.RegisterHotkey(myStrings("MOVE_TO_HOTKEY"), "TriggerMoveToDialog",
wObj, wObj)
Case "ATH_Note"
If Left(wObj.Name, Len(myStrings("MESSAGE_WINDOW_NAME"))) =
myStrings("MESSAGE_WINDOW_NAME") Then
Set messageWindow = (New MessageWindowClass).Init(wObj,
False)
ElseIf Left(wObj.Name,
Len(myStrings("NEW_MESSAGE_WINDOW_NAME"))) =
myStrings("NEW_MESSAGE_WINDOW_NAME") Then
Set messageWindow = (New MessageWindowClass).Init(wObj,
True)
End If
End Select
ElseIf wObj.ModuleName = "WLMAIL" Then
Select Case wObj.Name
Case myStrings("RULE_EDITOR_WINDOW_NAME")
fieldDataEvent = ConnectEvent(wObj, "OnChildFieldData",
"OnChildFieldData")
End Select
Select Case wObj.Title
Case myStrings("GOTO_FOLDER_WINDOW_TITLE"),
myStrings("MOVE_WINDOW_TITLE")
myKeyDownEvent = ConnectEventWithParameter(Keyboard,
"OnKeyDown", "OnKeyDown", wObj)
End Select
End If
End Sub
Function OnChildFieldData(wObj)
Dim lvObj, lvSelected, checkedState
' Begin
OnChildFieldData = vbNull
If wObj.ClassName = "SysListView32" And wObj.ModuleName = "WLMAIL" Then
Set lvObj = wObj.Control
If TypeName(lvObj) = "ListView" Then
On Error Resume Next
Set lvSelected = lvObj.Items.Selected(1)
On Error Goto 0
If Not lvSelected Is Nothing Then
If lvSelected.StateImage = 7 Then
checkedState = myStrings("UNCHECKED")
Else
checkedState = myStrings("CHECKED")
End If
OnChildFieldData = checkedState & ". " & lvSelected.Text
End If
End If
End If
End Function
Sub OnObjectFocus(accObj)
Dim eventWin : Set eventWin = Nothing
Dim accRole : Set accRole = Nothing
Dim accParent : Set accParent = Nothing
Dim accParentRole : Set accParentRole = Nothing
Dim handledEvent : handledEvent = False
' Begin
On Error Resume Next
accObj.Prefetch apAll
On Error Goto 0
If Not accObj Is Nothing Then
Set eventWin = accObj.Window
If Not eventWin Is Nothing Then
Set accRole = accObj.Role
If Not accRole Is Nothing Then
Set accParent = accObj.Parent
If Not accParent Is Nothing Then
Set accParentRole = accParent.Role
If Not accParentRole Is Nothing Then
If eventWin.ClassName = "WLXDUI" And
eventWin.ModuleName = "WLMAIL" Then
If accRole.Value = role_SYSTEM_LISTITEM Then
If accParentRole.Value = role_SYSTEM_WINDOW
And accParent.Name = "ABFrame" Then
Dim parts : parts =
Split(accObj.Description, vbCr)
Dim contact
If Trim(accObj.Name) <> Trim(parts(0))
Then
contact = accObj.Name & ". " &
parts(0)
Else
contact = parts(0)
End If
Queue "MySpeak", contact
handledEvent = True
End If
End If
End If
End If
End If
End If
End If
End If
If Not accObj Is Nothing Then
If Not handledEvent Then
accObj.SimulateEvent event_OBJECT_FOCUS, apAll
End If
End If
End Sub
Sub MySpeak(str)
' Begin
If str <> lastSpoken Then
Silence
Queue "MyBraille", str
Speak str
End If
lastSpoken = str
End Sub
Sub MyBraille(str)
Dim bDisplay, padding
' Begin
Set bDisplay = Nothing
If SharedObjects("com.GWMicro.GWToolkit.Version")() >= "8.5.1" Then
If myBrailleObj is Nothing Then
Set myBrailleObj =
SharedObjects("com.GWMicro.GWToolkit.CustomBraille").NewBraille()
End If
If Not myBrailleObj is Nothing Then
myBrailleObj.Display str
ConnectKeyDown
End If
Else
On Error Resume Next
Set bDisplay = BrailleDisplays.Active
On Error Goto 0
If Not bDisplay Is Nothing Then
If bDisplay.Type <> bdtNone Then
padding = Braille.ActiveCellCount
If Len(str) < padding Then
padding = padding - Len(str)
End If
If padding > Len(str) Then
str = str & String(padding, " ")
End If
Braille.Display str
End If
End If
End If
End Sub
Sub TriggerMoveToDialog(wObj)
Dim ribbon, item
' Begin
On Error Resume Next ' Because MSAA
Set ribbon = GetRibbon()
If Not ribbon Is Nothing Then
' NOTE: This won't work if the Home tab is NOT the active tab!
Set item = GetRibbonItem(ribbon, myStrings("HOME_RIBBON_TAB_NAME"),
myStrings("HOME_ACTIONS_RIBBON_GROUP_NAME"),
myStrings("HOME_ACTIONS_MOVETO_ITEM_NAME"))
If Not item Is Nothing Then
item.DoDefaultAction()
If Err.Number <> 0 Then
Silence
Speak myStrings("MOVE_UNAVAILABLE")
End If
End If
End If
On Error Goto 0
End Sub
Function GetRibbon()
' Begin
Set GetRibbon = DrillDown(ActiveWindow.Accessible, role_SYSTEM_PANE,
myStrings("LOWER_RIBBON"))
End Function
Function GetRibbonItem(ribbon, tabName, groupName, itemName)
Dim child, tabObj, groupObj, itemObj
' Begin
Set itemObj = Nothing
Set tabObj = Nothing
Set groupObj = Nothing
If Not ribbon Is Nothing Then
For Each child In ribbon.Children(1).Children
If tabObj Is Nothing Then
If child.Name = tabName Then
Set tabObj = child
Exit For
End If
End If
Next
If Not tabObj Is Nothing Then
For Each child In tabObj.Children
If groupObj Is Nothing Then
If child.Name = groupName Then
Set groupObj = child
Exit For
End If
End If
Next
End If
If Not groupObj Is Nothing Then
For Each child In groupObj.Children
If itemObj Is Nothing Then
If child.Name = itemName Then
Set itemObj = child
Exit For
End If
End If
Next
End If
End If
Set GetRibbonItem = itemObj
End Function
Function DrillDown(accObj, role, name)
Dim child, result
' Begin
On Error Resume Next
If accObj.Role.Value = role Then
If accObj.Name = name Then
Set DrillDown = accObj
Exit Function
End If
End If
For Each child In accObj.Children
If child.Role.Value = role Then
If child.Name = name Then
Set DrillDown = child
Exit Function
End If
End If
If child.Children.Count > 0 Then
Set result = DrillDown(child, role, name)
If Not result Is Nothing Then
Set DrillDown = result
Exit Function
End If
End If
Next
On Error Goto 0
Set DrillDown = Nothing
End Function
Function OnKeyDown(vk, km, wObj)
Dim kDisp
' Begin
kDisp = kdProcess
If keyPressTimer <> 0 Then
StopTimer keyPressTimer
keyPressTimer = 0
End If
If FocusedWindow.ModuleName = "WLMAIL" And FocusedWindow.ClassName =
"WLXDUI" Then
' Start keeping track of key presses. When the timer fires, then
look
' for the string entered.
km = km And Not kmShift And Not kmNumpad And Not kmNumlock
If (vk = 32 Or (vk >= 48 And vk <= 126)) And km = 0 Then
firstLetterNavStr = firstLetterNavStr & ChrW(vk)
keyPressTimer = StartTimer(250, "FirstLetterNav",
firstLetterNavStr)
kDisp = kdDiscard
Else
firstLetterNavStr = ""
keyPressTimer = 0
End If
Else
firstLetterNavStr = ""
keyPressTimer = 0
End If
OnKeyDown = kDisp
End Function
Sub ConnectKeyDown
If keyProcessedDownEventForBraille = 0 Then
keyProcessedDownEventForBraille = ConnectEvent(Keyboard,
"OnKeyProcessedDown", "OnKeyProcessedDown")
End If
End Sub
Sub DisconnectKeyDown
If keyProcessedDownEventForBraille <> 0 Then
Disconnect keyProcessedDownEventForBraille
keyProcessedDownEventForBraille = 0
End If
End Sub
Sub OnKeyProcessedDown(vk, km)
If Not myBrailleObj Is Nothing Then
myBrailleObj.ReleaseDisplay
DisconnectKeyDown
End If
End Sub
Sub FirstLetterNav(navStr)
Dim focusAccObj, folderlist, folderInfo, nextFolderListID, nextIndex,
currIndex, currFolderListID, selectedFolder, found
' Begin
found = False
If myKeyDownEvent <> 0 Then
Disconnect myKeyDownEvent
myKeyDownEvent = 0
End If
If keyPressTimer <> 0 Then
StopTimer keyPressTimer
keyPressTimer = 0
End If
Set focusAccObj = FocusedWindow.Accessible
Do
' Get the current hash of visible folder names and index of the
selected item
Set folderList = DrillDown(focusAccObj, role_SYSTEM_OUTLINE,
myStrings("FOLDER_TREE_LIST_PANE"))
If Not folderList Is Nothing Then
folderInfo =
GetSelectedFolderInfo(folderList.Children.FilterByRoleAndState(role_SYSTEM_OUTLINEITEM))
If IsArray(folderInfo) And UBound(folderInfo) > 0 Then
currfolderListID = folderInfo(0)
currIndex = folderInfo(1)
End If
End If
' Then send a down arrow. use Down and Up because InsertKey is
synchronous, and too slow
Keyboard.InsertKeyDown vk_DOWN
Keyboard.InsertKeyUp vk_DOWN
' Get the new hash of visible folder names and index of the selected
item
Set folderList = DrillDown(focusAccObj, role_SYSTEM_OUTLINE,
myStrings("FOLDER_TREE_LIST_PANE"))
If Not folderList Is Nothing Then
folderInfo =
GetSelectedFolderInfo(folderList.Children.FilterByRoleAndState(role_SYSTEM_OUTLINEITEM))
If IsArray(folderInfo) And UBound(folderInfo) Then
nextFolderListID = folderInfo(0)
nextIndex = folderInfo(1)
End If
End If
' See if we have a match
If IsArray(folderInfo) And UBound(folderInfo) > 1 Then
If Left(LCase(folderInfo(2)), Len(navStr)) = LCase(navStr) Then
' Found a match!
found = True
Exit Do
End If
End If
Loop While currFolderListID & currIndex <> nextFolderListID & nextIndex
If Not found Then
Keyboard.InsertKey vk_HOME, kmControl
Silence
Speak myStrings("NO_MATCH")
End If
myKeyDownEvent = ConnectEventWithParameter(Keyboard, "OnKeyDown",
"OnKeyDown", ActiveWindow)
firstLetterNavStr = ""
End Sub
Function GetSelectedFolderInfo(folderList)
Dim result, index, folder, folderName, folderState
' Begin
index = 1
result = Array("", index, "")
Set folderState = Nothing
If Not folderList is Nothing Then
For Each folder In folderList
If Not folder is Nothing Then
folderName = folder.Name
result(0) = result(0) & Replace(folderName, " ", "")
On Error Resume Next
Set folderState = folder.State
On Error Goto 0
If Not folderState Is Nothing Then
If folderState.Selected Then
result(1) = index
result(2) = folderName
End If
End If
End If
index = index +- 1
Next
End If
GetSelectedFolderInfo = result
End Function
'' SIG '' Begin signature block
'' SIG '' MIIZwAYJKoZIhvcNAQcCoIIZsTCCGa0CAQExCzAJBgUr
'' SIG '' DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
'' SIG '' gjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIBAAIB
'' SIG '' AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFMOtHpDd0pTH
'' SIG '' tywr8b101OTiYaeioIIUIzCCBBQwggL8oAMCAQICCwQA
'' SIG '' AAAAAS9O4VLXMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
'' SIG '' BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNh
'' SIG '' MRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9i
'' SIG '' YWxTaWduIFJvb3QgQ0EwHhcNMTEwNDEzMTAwMDAwWhcN
'' SIG '' MjgwMTI4MTIwMDAwWjBSMQswCQYDVQQGEwJCRTEZMBcG
'' SIG '' A1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYGA1UEAxMf
'' SIG '' R2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBHMjCC
'' SIG '' ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJTv
'' SIG '' Zfi1V5+-gUw00BusJH7dHGGrL8Fvk/yelNNH3iRq/nrHN
'' SIG '' EkFuZtSBoIWLZFpGL5mgjXex4rxc3SLXamfQu+-jKdN6L
'' SIG '' Tw2wUuWQW+-tHDvHnn5wLkGU+-F5YwRXJtOaEXNsq5oIwb
'' SIG '' TwgZ9oExrWEWpGLmtECew/z7lfb7tS6VgZjg78Xr2AJZ
'' SIG '' eHf3quNSa1CRKcX8982TZdJgYSLyBvsy3RZR+-g79ijDw
'' SIG '' Fwmnu/MErquQ52zfeqn078RiJ19vmW04dKoRi9rfxxRM
'' SIG '' 6YWy7MJ9SiaP51a6puDPklOAdPQD7GiyYLyEIACDG6Hu
'' SIG '' tHQFwSmOYtBHsfrwU8wY+-S47+-XB+-tCUCAwEAAaOB5TCB
'' SIG '' 4jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB
'' SIG '' /wIBADAdBgNVHQ4EFgQURtg+-/9zjvv+-D5vSFm7DdatYU
'' SIG '' qcEwRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUH
'' SIG '' AgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl
'' SIG '' cG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6
'' SIG '' Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwHwYD
'' SIG '' VR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJ
'' SIG '' KoZIhvcNAQEFBQADggEBAE5eVpAeRrTZSTHzuxc5KBvC
'' SIG '' Ft39QdwJBQSbb7KimtaZLkCZAFW16j+-lIHbThjTUF8xV
'' SIG '' OseC7u+-ourzYBp8VUN/NFntSOgLXGRr9r/B4XOBLxRjf
'' SIG '' OiQe2qy4qVgEAgcw27ASXv4xvvAESPTwcPg6XlaDzz37
'' SIG '' Dbz0xe2XnbnU26UnhOM4m4unNYZEIKQ7baRqC6GD/Sjr
'' SIG '' 2u8o9syIXfsKOwCr4CHr4i81bA+-ONEWX66L3mTM1fsua
'' SIG '' irtFTec/n8LZivplsm7HfmX/6JLhLDGi97AnNkiPJm87
'' SIG '' 7k12H3nD5X+-WNbwtDswBsI5//1GAgKeS1LNERmSMh08W
'' SIG '' YwcxS2Ow3/MwggSfMIIDh6ADAgECAhIRIQaggdM/2Hrl
'' SIG '' gkzBa1IJTgMwDQYJKoZIhvcNAQEFBQAwUjELMAkGA1UE
'' SIG '' BhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
'' SIG '' KDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5n
'' SIG '' IENBIC0gRzIwHhcNMTUwMjAzMDAwMDAwWhcNMjYwMzAz
'' SIG '' MDAwMDAwWjBgMQswCQYDVQQGEwJTRzEfMB0GA1UEChMW
'' SIG '' R01PIEdsb2JhbFNpZ24gUHRlIEx0ZDEwMC4GA1UEAxMn
'' SIG '' R2xvYmFsU2lnbiBUU0EgZm9yIE1TIEF1dGhlbnRpY29k
'' SIG '' ZSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
'' SIG '' CgKCAQEAsBeuotO2BDBWHlgPse1VpNZUy9j2czrsXV6r
'' SIG '' Jf02pfqEw2FAxUa1WVI7QqIuXxNiEKlb5nPWkiWxfSPj
'' SIG '' BrOHOg5D8NcAiVOiETFSKG5dQHI88gl3p0mSl9RskKB2
'' SIG '' p/243LOd8gdgLE9YmABr0xVU4Prd/4AsXximmP/Uq+-yh
'' SIG '' RVmyLm9iXeDZGayLV5yoJivZF6UQ0kcIGnAsM4t/aIAq
'' SIG '' taFda92NAgIpA6p8N7u7KU49U5OzpvqP0liTFUy5LauA
'' SIG '' o6Ml+-6/3CGSwekQPXBDXX2E3qk5r09JTJZ2Cc/os+-XKw
'' SIG '' qRk5KlD6qdA8OsroW+-/1X1H0+-QrZlzXeaoXmIwRCrwID
'' SIG '' AQABo4IBXzCCAVswDgYDVR0PAQH/BAQDAgeAMEwGA1Ud
'' SIG '' IARFMEMwQQYJKwYBBAGgMgEeMDQwMgYIKwYBBQUHAgEW
'' SIG '' Jmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9z
'' SIG '' aXRvcnkvMAkGA1UdEwQCMAAwFgYDVR0lAQH/BAwwCgYI
'' SIG '' KwYBBQUHAwgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov
'' SIG '' L2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3RpbWVzdGFt
'' SIG '' cGluZ2cyLmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB
'' SIG '' BQUHMAKGOGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j
'' SIG '' b20vY2FjZXJ0L2dzdGltZXN0YW1waW5nZzIuY3J0MB0G
'' SIG '' A1UdDgQWBBTUooRKOFoYf7pPMFC9ndV6h9YJ9zAfBgNV
'' SIG '' HSMEGDAWgBRG2D7/3OO+-/4Pm9IWbsN1q1hSpwTANBgkq
'' SIG '' hkiG9w0BAQUFAAOCAQEAgDLcB40coJydPCroPSGLWaFN
'' SIG '' fsxEzgO+-fqq8xOZ7c7tL8YjakE51Nyg4Y7nXKw9UqVbO
'' SIG '' dzmXMHPNm9nZBUUcjaS4A11P2RwumODpiObs1wV+-Vip7
'' SIG '' 9xZbo62PlyUShBuyXGNKCtLvEFRHgoQ1aSicDOQfFBYk
'' SIG '' +-nXcdHJuTsrjakOvz302SNG96QaRLC+-myHH9z73YnSGY
'' SIG '' /K/b3iKMr6fzd+-+-d3KNwS0Qa8HiFHvKljDm13IgcN+-2t
'' SIG '' FPUHCya9vm0CXrG4sFhshToN9v9aJwzF3lPnVDxWTMlO
'' SIG '' TDD28lz7GozCgr6tWZH2G01Ve89bAdz9etNvI1wyR5sB
'' SIG '' 88FRFEaKmzCCBVYwggQ+-oAMCAQICEEA59jCxrMC4Ucmz
'' SIG '' YXAhHYwwDQYJKoZIhvcNAQEFBQAwgbQxCzAJBgNVBAYT
'' SIG '' AlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0G
'' SIG '' A1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE7MDkG
'' SIG '' A1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3
'' SIG '' LnZlcmlzaWduLmNvbS9ycGEgKGMpMTAxLjAsBgNVBAMT
'' SIG '' JVZlcmlTaWduIENsYXNzIDMgQ29kZSBTaWduaW5nIDIw
'' SIG '' MTAgQ0EwHhcNMTUwMzI3MDAwMDAwWhcNMTYwMzI2MjM1
'' SIG '' OTU5WjCBhzELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB1Zl
'' SIG '' cm1vbnQxGjAYBgNVBAcTEU1hbmNoZXN0ZXIgQ2VudGVy
'' SIG '' MSQwIgYDVQQKFBtBbGdvcml0aG1pYyBJbXBsZW1lbnRh
'' SIG '' dGlvbnMxJDAiBgNVBAMUG0FsZ29yaXRobWljIEltcGxl
'' SIG '' bWVudGF0aW9uczCCASIwDQYJKoZIhvcNAQEBBQADggEP
'' SIG '' ADCCAQoCggEBANUpyZy7NBZmLl3P+-1wLci8YFyJ3eAdK
'' SIG '' pomRza9BHZWN0HpukPbGQLqRWNZYMqgRsXWRwLSdFTdW
'' SIG '' YuQx0XG1yZpmxP8xN6plK7pe0LuCKg3DSoPhOxUPuyF+-
'' SIG '' 0re+-bdLkUZdseLZSM9q+-TbI3XTMtv4dYGXW1EyrZ5H7j
'' SIG '' 9SzMM6BcjjsdWqg6ewpSNim/0Y5z2kBfsd4KF9w8sBVW
'' SIG '' wIhyo+-jUgARnFN3DHBNpjt9Cypn9p6x/ECcNlQrESe3H
'' SIG '' GprUffrvHX680360yzF5+-qiQ2/peyvfhpdNclh8vnB1/
'' SIG '' Is2arACrbhwy/GabI7rbeB87qnP9QqJXAMpWbKK79y3N
'' SIG '' dvcCAwEAAaOCAY0wggGJMAkGA1UdEwQCMAAwDgYDVR0P
'' SIG '' AQH/BAQDAgeAMCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6
'' SIG '' Ly9zZi5zeW1jYi5jb20vc2YuY3JsMGYGA1UdIARfMF0w
'' SIG '' WwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcCARYXaHR0
'' SIG '' cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIw
'' SIG '' GQwXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwEwYDVR0l
'' SIG '' BAwwCgYIKwYBBQUHAwMwVwYIKwYBBQUHAQEESzBJMB8G
'' SIG '' CCsGAQUFBzABhhNodHRwOi8vc2Yuc3ltY2QuY29tMCYG
'' SIG '' CCsGAQUFBzAChhpodHRwOi8vc2Yuc3ltY2IuY29tL3Nm
'' SIG '' LmNydDAfBgNVHSMEGDAWgBTPmanqeyb0S8mOj9fwBSbv
'' SIG '' 49KnnTAdBgNVHQ4EFgQUchQRcYoquAN+-2ATKzxpTAuW/
'' SIG '' GkQwEQYJYIZIAYb4QgEBBAQDAgQQMBYGCisGAQQBgjcC
'' SIG '' ARsECDAGAQEAAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCa
'' SIG '' +-lsppq/uH5TvbHZAY71rRxHA5DvZX4nQVOwjRkIJmtuM
'' SIG '' Vxy4MOBBA9iKmb9i/oQeNAtW7tBb7A3eYP9uxmIW77Hw
'' SIG '' ftq30AGSZyMEZo7F2yuW+-V/r8w5H8ZGbzsN+-S3snssZT
'' SIG '' 4LKOpbGuBsq6ZFKUz65h+-RfAJwaTquyznVjliehFuqfd
'' SIG '' OhFCyh9l7MpeWPXaGgke7MAUAzO16PjCa4oDwlHsDfB/
'' SIG '' qhV9AEDcptlvnjrgGCVMlX8SoUbHY2AfJnSESTMs/mRT
'' SIG '' QSJ1nggwCnw+-P7Ww9c0AOGSsMzp53o6jh8rLLU5lGGFL
'' SIG '' pVF2orIIbmAGjLQvKreu0p6z0d5n6MpWMIIGCjCCBPKg
'' SIG '' AwIBAgIQUgDlqiVW/BqG7ZbJ1EszxzANBgkqhkiG9w0B
'' SIG '' AQUFADCByjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZl
'' SIG '' cmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
'' SIG '' cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBW
'' SIG '' ZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
'' SIG '' ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz
'' SIG '' IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
'' SIG '' aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
'' SIG '' MjA3MjM1OTU5WjCBtDELMAkGA1UEBhMCVVMxFzAVBgNV
'' SIG '' BAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp
'' SIG '' U2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJt
'' SIG '' cyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24u
'' SIG '' Y29tL3JwYSAoYykxMDEuMCwGA1UEAxMlVmVyaVNpZ24g
'' SIG '' Q2xhc3MgMyBDb2RlIFNpZ25pbmcgMjAxMCBDQTCCASIw
'' SIG '' DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPUjS16l
'' SIG '' 14q7MunUV/fv5Mcmfq0ZmP6onX2U9jZrENd1gTB/BGh/
'' SIG '' yyt1Hs0dCIzfaZSnN6Oce4DgmeHuN01fzjsU7obU0PUn
'' SIG '' NbwlCzinjGOdF6MIpauw+-81qYoJM1SHaG9nx44Q7iipP
'' SIG '' hVuQAU/Jp3YQfycDfL6ufn3B3fkFvBtInGnnwKQ8PEEA
'' SIG '' Pt+-W5cXklHHWVQHHACZKQDy1oSapDKdtgI6QJXvPvz8c
'' SIG '' 6y+-W+-uWHd8a1VrJ6O1QwUxvfYjT/HtH0WpMoheVMF05+-
'' SIG '' W/2kk5l/383vpHXv7xX2R+-f4GXLYLjQaprSnTH69u08M
'' SIG '' PVfxMNamNo7WgHbXGS6lzX40LYkCAwEAAaOCAf4wggH6
'' SIG '' MBIGA1UdEwEB/wQIMAYBAf8CAQAwcAYDVR0gBGkwZzBl
'' SIG '' BgtghkgBhvhFAQcXAzBWMCgGCCsGAQUFBwIBFhxodHRw
'' SIG '' czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMCoGCCsGAQUF
'' SIG '' BwICMB4aHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9y
'' SIG '' cGEwDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEw
'' SIG '' X6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4D
'' SIG '' AhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6
'' SIG '' Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMDQG
'' SIG '' A1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNp
'' SIG '' Z24uY29tL3BjYTMtZzUuY3JsMDQGCCsGAQUFBwEBBCgw
'' SIG '' JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AudmVyaXNp
'' SIG '' Z24uY29tMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
'' SIG '' BQcDAzAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVmVy
'' SIG '' aVNpZ25NUEtJLTItODAdBgNVHQ4EFgQUz5mp6nsm9EvJ
'' SIG '' jo/X8AUm7+-PSp50wHwYDVR0jBBgwFoAUf9Nlp8Ld7Lvw
'' SIG '' MAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFYi
'' SIG '' 5jSkxGHLSLkBrVaoZA/ZjJHEu8wM5a16oCJ/30c4Si1s
'' SIG '' 0X9xGnzscKmx8E/kDwxT+-hVe/nSYSSSFgSYckRRHsExj
'' SIG '' jLuhNNTGRegNhSZzA9CpjGRt3HGS5kUFYBVZUTn8WBRr
'' SIG '' /tSk7XlrCAxBcuc3IgYJviPpP0SaHulhncyxkFz8PdKN
'' SIG '' rEI9ZTbUtD1AKI+-bEM8jJsxLIMuQH12MTDTKPNjlN9Zv
'' SIG '' pSC9NOsm2a4N58Wa96G0IZEzb4boWLslfHQOWP51G2M/
'' SIG '' zjF8m48blp7FU3aEW5ytkfqs7ZO6XcghU8KCU2OvEg1Q
'' SIG '' hxEbPVRSloosnD2SGgiaBS7Hk6VIkdMxggUJMIIFBQIB
'' SIG '' ATCByTCBtDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZl
'' SIG '' cmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
'' SIG '' cnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1
'' SIG '' c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3Jw
'' SIG '' YSAoYykxMDEuMCwGA1UEAxMlVmVyaVNpZ24gQ2xhc3Mg
'' SIG '' MyBDb2RlIFNpZ25pbmcgMjAxMCBDQQIQQDn2MLGswLhR
'' SIG '' ybNhcCEdjDAJBgUrDgMCGgUAoHAwEAYKKwYBBAGCNwIB
'' SIG '' DDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw
'' SIG '' HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJ
'' SIG '' KoZIhvcNAQkEMRYEFCBVTuUSJD0Zl8eaiIuwnoCMSRs4
'' SIG '' MA0GCSqGSIb3DQEBAQUABIIBAFMkHoOHu+-zPBRjU/ACP
'' SIG '' 1nmbe53IZmDNMzlq4En+-o0QH5BGavsBaaA5bCJEE7xG6
'' SIG '' Am0iMUHN7P52iy6tlaZ335RSLSQlxy9ShjeK1Nrm7IV7
'' SIG '' R3GNbwGMINfq627h7pW6V5mo6Jg95d9XDNx9pW9Tpmmo
'' SIG '' 5kLVxcaIKC3K6JwG0cYGeOxOg1GwEBL0/SqcMMFx3m4C
'' SIG '' B3iMQJrVEYlsGmwjqYJRtgL/MACXR3UWYW5PYYZpqr4x
'' SIG '' dBEeV+-ioIRWDiOSvdo1asLs8bK+-hPyWslvVrQdrvMxRq
'' SIG '' t4/N54QR07cRZ7pmBjtjc9lCyIEA7MrOoo9v84wGM6Vj
'' SIG '' VWR8R3/eyaTngjGhggKiMIICngYJKoZIhvcNAQkGMYIC
'' SIG '' jzCCAosCAQEwaDBSMQswCQYDVQQGEwJCRTEZMBcGA1UE
'' SIG '' ChMQR2xvYmFsU2lnbiBudi1zYTEoMCYGA1UEAxMfR2xv
'' SIG '' YmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBHMgISESEG
'' SIG '' oIHTP9h65YJMwWtSCU4DMAkGBSsOAwIaBQCggf0wGAYJ
'' SIG '' KoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
'' SIG '' CQUxDxcNMTYwMTI4MTYyMDUzWjAjBgkqhkiG9w0BCQQx
'' SIG '' FgQUi4S2g2cg9GBy+-nyT3L8ejs+-k4fcwgZ0GCyqGSIb3
'' SIG '' DQEJEAIMMYGNMIGKMIGHMIGEBBSzYwi01M3tT8+-9ZrlV
'' SIG '' +-uO/sSwp5jBsMFakVDBSMQswCQYDVQQGEwJCRTEZMBcG
'' SIG '' A1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYGA1UEAxMf
'' SIG '' R2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBHMgIS
'' SIG '' ESEGoIHTP9h65YJMwWtSCU4DMA0GCSqGSIb3DQEBAQUA
'' SIG '' BIIBACCR8iH1eglTwPY+-rljLnDN4OyeBKu35t6nWsH9d
'' SIG '' 7jdY03nwX5g3D4ELmj36CbIBSFpTLyTIIHsB7sDta1zO
'' SIG '' SAgLPsQT1yt5A7hQw3lnil+-lTrd4OdANtBSQtbH44vUW
'' SIG '' iZrVivTAvZV+-XSpyHEkp3rDnSWS2oc+-3QgPy4o1p5/tH
'' SIG '' CnWZp1r85qjk6Q2pDyEiOE+-ue9TdGk5qltyHUtQUMcfI
'' SIG '' +-P5kneBERq4NZZborwJ5u6bQ2g7QhB7wRpTMyclpTBHG
'' SIG '' g3D6qfg18xc/hXd2+-gsHfLBBWOgPnJYkKyt7yrP0ru33
'' SIG '' zt72aJAWo+-qXdQCwqBnzg6yz5O7dMKA89I48m0w=
'' SIG '' End signature block
---------------------------------------------------
Thanks in advance.
-----Original Message-----
From: Pamela Dominguez via Talk
Sent: Sunday, November 10, 2019 12:33 AM
To: Window-Eyes Discussion List
Cc: Pamela Dominguez
Subject: Re: email
Really? I can still use window eyes with windows live mail, and I haven't
noticed a difference. So I don't know what you mean about window eyes
stopped tracking the cursor. Pam.
-----Original Message-----
From: Rod Hutton via Talk
Sent: Saturday, November 09, 2019 8:17 AM
To: Window-Eyes Discussion List
Cc: Rod Hutton
Subject: RE: email
Hi Darrell,
Thunderbird worked great for me until Window-Eyes stopped tracking the
cursor.
This was the second email client which did this to me.
The previous one was Windows Live Mail.
Since I switched to Office 365 Outlook, this has not happened.
I know that Office 365 costs money on an ongoing basis, but Microsoft
regularly improves its accessibility, and so staying with it gives you the
best opportunity to use accessible email software on Windows and the Apple
Mac.
I know, I say this all the time. Smile
With respect,
Rod
Sent from Outlook for Windows
-----Original Message-----
From: Talk <
talk-bounces+-rod_hutton=hotmail....@lists.window-eyes.com
On
Behalf Of Darrell Bowles via Talk
Sent: November 7, 2019 8:48 PM
To: Window-Eyes Discussion List <
talk@lists.window-eyes.com
Cc: Darrell Bowles <
dgbow...@msn.com
Subject: RE: email
How about thunderbird?
-----Original Message-----
From: Talk <
talk-bounces+-dgbowles=msn....@lists.window-eyes.com
On Behalf
Of tony c via Talk
Sent: Thursday, November 7, 2019 8:13 PM
To: Window-Eyes Discussion List <
talk@lists.window-eyes.com
Cc: tony c <
tch...@mediacombb.net
Subject: RE: email
I know outlook is accessible, but I don+IBk-t need office 365. I use very
little
of anything except Microsoft word on a rare occasion. I just hate the mail
program that+IBk-s with win 10. I do use it but it+IBk-s not totally
accessible.
Sent from Mail for Windows 10
From: joseph hudson via Talk
Sent: Thursday, November 7, 2019 2:49 PM
To: Window-Eyes Discussion List
Cc: joseph hudson
Subject: Re: email
Hi Tony, Outlook is very accessible.
joseph hudson
Technology support for the blind or better known as Mack, IOS and Windows
support
FaceTime, iMessage, and email
jhud7...@twc.com
Telephone/what's up messenger
254-300-7667
Emergency cell
254-813-2461
Twitter
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftwitter.com%2Fjosephhudson89&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=jsjRGciWdVuDVRH5GINvRpgeuZ5NM%2FPTPoOhbUtys2I%3D&reserved=0
Facebook
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.facebook.com%2Fjoseph.hudson.9404&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=TE8%2Fenq1ezhWNwKx62BDgNVxRZS2GWbdXLKSII5yjIQ%3D&reserved=0
On Nov 7, 2019, at 1:26 PM, tony c via Talk <
talk@lists.window-eyes.com
wrote:
Hi, I need a accessible email program. I+IBk-m using the one that on windows
10, it is useable but just barely. Lol Tony
Sent from Mail for Windows 10
_______________________________________________
Any views or opinions presented in this email are solely those of the
author and do not necessarily represent those of Ai Squared.
For membership options, visit
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Foptions.cgi%2Ftalk-window-eyes.com%2Fjhud7789%2540twc.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=9bjIZ689aihYWPqqvcnFmyM9xmjh4slVEoxboYiP9l0%3D&reserved=0
.
For subscription options, visit
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Flistinfo.cgi%2Ftalk-window-eyes.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=W0Im4gfNzqKxokPur1%2Bi8S4KCrie5pS%2FGUWkeKrlbCY%3D&reserved=0
List archives can be found at
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Fprivate.cgi%2Ftalk-window-eyes.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=dlNeDOctdjTtEzjqJvmGIfalKfWKK%2FF6Ow%2FdGqML2hc%3D&reserved=0
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Foptions.cgi%2Ftalk-window-eyes.com%2Ftch828%2540mediacombb.net&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=0LhtRp8fslCR0vRFkpbWbo6%2F9uc0Qm8HKKv%2FIke%2FVvA%3D&reserved=0
.
For subscription options, visit
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Flistinfo.cgi%2Ftalk-window-eyes.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=W0Im4gfNzqKxokPur1%2Bi8S4KCrie5pS%2FGUWkeKrlbCY%3D&reserved=0
List archives can be found at
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Fprivate.cgi%2Ftalk-window-eyes.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679719753&sdata=dlNeDOctdjTtEzjqJvmGIfalKfWKK%2FF6Ow%2FdGqML2hc%3D&reserved=0
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Foptions.cgi%2Ftalk-window-eyes.com%2Fdgbowles%2540msn.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679729758&sdata=9B6HvLE%2Fa%2BPKJXT3kl1rPyzsDgP0D1%2BMTrhNHMcoWgo%3D&reserved=0
.
For subscription options, visit
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Flistinfo.cgi%2Ftalk-window-eyes.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679729758&sdata=kTzxo%2B7QLkTekkgvd7S6Qwvd6IwnKL3EftPFFD79tW0%3D&reserved=0
List archives can be found at
https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.window-eyes.com%2Fprivate.cgi%2Ftalk-window-eyes.com&data=02%7C01%7C%7Cc244c73ce10444eaf5f708d763e8c44e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637087723679729758&sdata=0UCfjeZuxNAyWL0x7RavHnbKGRVM%2BTCjrwOkmlnmMps%3D&reserved=0
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/talk-window-eyes.com/rod_hutton%40hotmail.com
.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/talk-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/talk-window-eyes.com
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/talk-window-eyes.com/pammygirl99%40gmail.com
.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/talk-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/talk-window-eyes.com
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/talk-window-eyes.com/peter.chinpk%40gmail.com
.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/talk-window-eyes.com
List archives can be found at
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/talk-window-eyes.com/netbat%40comcast.net.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/talk-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/talk-window-eyes.com
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/talk-window-eyes.com/archive%40mail-archive.com.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/talk-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/talk-window-eyes.com