Yes sir, no garb script below:
' 11/3/09
' script demonstrates that msaa blockEvent seems to be broken?
option explicit
testOutlook ' only tests blockEvent
sub testOutlook
' test using outlook (only tests blockEvent)
dim loWindows, loMPProcess
Set loWindows = DesktopWindow.Children.FilterByTitle ("inbox", fmStartsWith,
false)
if loWindows.count > 0 then
dim loMPWindow
set loMPWindow = loWindows(1)
if loMPWindow is nothing then
speak "internal error: unable to get inbox window"
else ' loMPWindow is nothing
' try using it's overlap
if loMPWindow.overlap is nothing then
speak "cannot use overlap"
else
set loMPWindow = loMPWindow.overlap
end if
set loMPProcess = loMPWindow.process
if loMPProcess is nothing then
speak "internal error: unable to get inbox process"
else
' block all MSAA events from this process
blockAllMSAAEvents loMPProcess
end if
end if ' loMPWindow is nothing
else ' loWindows.count > 0
speak "internal error: unable to get inbox window"
end if ' loWindows.count > 0
end sub
sub blockAllMSAAEvents (forProcess)
' tell window eyes to ignore all MSAA activity from a given process.
dim i,x
set x = msaaEventSource
msgbox forprocess.executablePath
for i = event_SYSTEM_SOUND to event_SYSTEM_MINIMIZEEND ' first group
x.blockEvent i, forProcess
next
for i = event_CONSOLE_CARET to event_CONSOLE_END_APPLICATION ' second group
x.blockEvent i, forProcess
next
for i = event_OBJECT_SHOW to event_OBJECT_CONTENTSCROLLED ' third and last
group
x.blockEvent i, forProcess
next
end sub
-----Original Message-----
From: Doug Geoffray [mailto:[email protected]]
Sent: Tuesday, November 03, 2009 1:07 PM
To: [email protected]
Subject: Re: getting error when trying to block msaa event
Chip,
So I can try and duplicate your issue how about giving me the outlook
script...and if possible, keep the script as simple as possible so we are
just focusing on the problem and not all the other garb the script may be
doing.
Thanks,
Doug
Chip Orange wrote:
btw Doug,
I rewrote my example program using outlook, and have the same
problem, so
it's not mappoint that's the issue.
I'm probably using blockEvent wrong, but as far as I know, I'm using
it the
way the docs indicate.
thanks again,
Chip
-----Original Message-----
From: Chip Orange [mailto:[email protected]]
Sent: Monday, November 02, 2009 9:16 PM
To: [email protected]
Subject: RE: getting error when trying to block msaa event
thanks Doug.
I get the variable by searching for the MS mappoint window, and when
I find
it, I use it's process property. I msgbox the module name and
executable
info from this process to make sure it's indicating ms mappoint
before I
then try to use blockevent.
how does this all sound? I'll post an example program below:
'-- Open the Map Point application and get an object
reference to
it.
set goMPApp = nothing
dim goMPApp
on error Resume next
Set goMPApp = createobject("MapPoint.Application")
ON ERROR goto 0
IF not (goMPApp is Nothing) then
loadClassInformation goMPApp
'if debugging then speakAlert "using MapPoint version " &
goMPApp.version '
get MapPoint window dim loWindows Set loWindows =
DesktopWindow.Children.FilterByTitle ("Map - Microsoft MapPoint",
fmStartsWith, false) if loWindows.count > 0 then dim goNPWindow set
goMPWindow = loWindows(1) dim goMPProcess set goMPProcess =
goMPWindow.process if goMPProcess is nothing then speak "internal
error:
unable to get MapPoint process"
else
' block all MSAA events from this process because they trigger a bug
in
window eyes (7.11) causing it to speak the focused item repeatedly
and
non-stop.
' it appears to be the MapPoint .findNearBy method, called in a
repeating
loop, which is causing MapPoint to generate the MSAA events.
' my guess is that this is causing a lot of window updating activity
for the
hidden MapPoint window, and some of it is eroneously triggering WE
to speak.
sleep 2*1000
blockAllMSAAEvents goMPProcess
end if
else ' loWindows.count > 0
speak "internal error: unable to get MapPoint window"
end if ' loWindows.count > 0
' minimize MapPoint
goMPApp.WindowState = geoWindowStateMinimize ' 1 ' hide the window
goMPApp.Visible = FALSE goMPApp.userControl = false
goMPApp.PaneState = geoPaneNone ' 3
'-- Map Point only lets us have one map open, so create our
map
object
'-- reference now.
dim goMap
Set goMap = goMPApp.ActiveMap
'turn off optional rendering to increase performance
goMap.BasicRenderingOnly()
goMap.Altitude = 1 ' make the active map zoom into a small scale
view ' set
up routing directions goMap.MapStyle = 0 ' road map
goMap.ActiveRoute.DriverProfile.IncludeRefuelWarnings = FALSE
goMap.ActiveRoute.DriverProfile.IncludeRestStops = FALSE ' make all
place
categories visible dim j FOR J = 1 TO goMap.PlaceCategories.Count
goMap.PlaceCategories(J).Visible = TRUE Next
'-------------
' loop every 2 seconds to show problem. execute loop for only 30
seconds
dim i, oCurLoc, x
set oCurLoc = goMap.GetLocation(30.5, -84.2)
for i = 1 to 0
set x = oCurLoc.findNearBy (2)
sleep 2000
next
goMap.saved = true
set goMPApp = nothing
Else ' not (goMPApp is Nothing)
speakAlert "Unable to Find MapPoint Installed on This Computer"
err.clear
End If ' not (goMPApp is Nothing)
sub blockAllMSAAEvents (forProcess)
' tell window eyes to ignore all MSAA activity from a given process.
dim i,x
msgBox forProcess.moduleName
set x = msaaEventSource
for i = event_SYSTEM_SOUND to event_SYSTEM_MINIMIZEEND ' first
group
x.blockEvent i, forProcess
next
for i = event_CONSOLE_CARET to event_CONSOLE_END_APPLICATION '
second group
x.blockEvent i, forProcess next
for i = event_OBJECT_SHOW to event_OBJECT_CONTENTSCROLLED ' third
and last
group x.blockEvent i, forProcess next
end sub
-----Original Message-----
From: Doug Geoffray [mailto:[email protected]]
Sent: Monday, November 02, 2009 3:59 PM
To: [email protected]
Subject: Re: getting error when trying to block msaa event
Chip,
I know you said you verified your forProcess variable is a process
but I
would double check. This works fine for me as long as the process
is valid.
But if the process isn't valid then I get the error you are getting.
How
did you verify forProcess is a process and what are you setting it
to?
Doug
Chip Orange wrote:
Hi all,
I guess this is really to GW:
I'm getting an "invalid procedure call or argument" when I
try to
block an msaa event from another process. I have first
verified by
displaying the name that my variable does hold a valid
process. here
are the lines I'm using:
set x = msaaEventSource
x.blockEvent event_SYSTEM_SOUND, forProcess
I also get the error if I don't make a copy of
msaaEventSource, but
try to execute blockEvent from it.
does anyone know why this is?
I'm trying to work around another WE problem having to do
with
possibly MSAA output from this process, this is getting
silly!
thanks.
Chip