It was a good guess, though. Keep at it.
Aaron
Steve Nutt wrote:
Hi Aaron,
In Outlook 2003 I got sleep 5000 on the same line, that's why I thought it
was wrong. But of course your explanation is far better <Smile>.
All the best
Steve
-----Original Message-----
From: Aaron Smith [mailto:[EMAIL PROTECTED]
Sent: Saturday 30 August 2008 15:42
To: [email protected]
Subject: Re: can somebody help me with this?
Martin,
As Steve suggested, make sure each line of the code is on the correct
line. In this case, however, it looks correct to me. He probably had
some weird email line wrap. Remember that when you get an error, you
will also get a line number, which will tell you exactly what line the
error is occurring on.
You didn't say which line number you got back in the error, but I'm
willing to bet that the error is occurring on the line:
ConnectEvent(DesktopWindow, "OnChildActivate", "MyOnChildActivate")
You're getting this error exactly for the reason the error says: "Cannot
use parentheses when calling a Sub." In VBScript, when you call a method
that does not return a value, or if you're not interested in the return
value, you do not need the parenthesis. In fact, if you include them,
you'll get the error that you got. If you look in the documentation for
the Script.ConnectEvent method, you'll see that it does return a value.
Whether or not you care about that return value is up to you, but the
correct syntax is required.
If you don't care about the return value, then you call the method
without parenthesis:
ConnectEvent DesktopWindow, "OnChildActivate", "MyOnChildActivate"
If you do care about the return value, then you call the method with
parenthesis:
retval = ConnectEvent(DesktopWindow, "OnChildActivate", "MyOnChildActivate")
I see one other error in the script below:
Disconnect(Desktop.Window)
There are two issues with this line. The first is the same as the error
above. You're can't use parenthesis when calling a method that does not
have a return value, or you don't care what the return value is.
According to the documentation, Script.Disconnect does not return a
value, so you can't use the parenthesis. So your line would look like:
Disconnect Desktop.Window
2. Although the syntax of your line is now correct, you'll get another
error because of the parameter you are passing. You'll note from the
documentation that the Disconnect method takes a ConnectionHandle
parameter, which according to the description, is a handle obtained from
a ConnectEvent method. The parameter you're passing (Desktop.Window)
doesn't exist. There's no Desktop object that has a Window parameter. I
assume you're thinking of the object DesktopWindow (note there's no dot
in the name). Even that, however, is still incorrect because the
parameter that Disconnect requires is a ConnectionHandle, not a window
object. If you need to use the Disconnect method, then you need to have
a connection to actually disconnect from. And that would be the return
value of a ConnectEvent method (as the docs state).
So with all of that knowledge, your script would end up looking like this:
retVal = ConnectEvent(DesktopWindow, "OnChildActivate", "MyOnChildActivate")
Sub MyOnChildActivate(win)
win.Overlap.Settings.General.Hotkeys = FALSE
Sleep 5000
Disconnect retval
Playsound, "c:\whistle wake.wav"
End Sub
There's one quirk to this script, though. When the OnChildActivate event
fires, MyOnChildActivate will get called, the hotkeys will get set to
false, a 5 second pause will happen, then OnChildActivate event will get
disconnected, and a sound will play.
But what happens then next time a child window gets activated? Because
the OnChildActivate event was disconnected the first time
MyOnChildActivate ran, you're no longer watching the OnChildActivated
event. So MyOnChildActivate will only happen once, and never again.
Is that the behavior you're after?
Aaron
martin webster wrote:
Hi all,
I got an example from Doug which disables most hotkeys globally, but I
can't seem to get this routine to work in VB script. I get the error,
"cannot call a sub with parentheses when calling a sub". I've looked at
some other examples I have and this looks correct to me. This script should
disable most hotkeys for 5 seconds, and then disconnect this event, in other
words, I want this action only to accur for 5 seconds, and then I want the
hotkeys to be enabled again.
Begin VB script.
ConnectEvent(DesktopWindow, "OnChildActivate", "MyOnChildActivate")
Sub MyOnChildActivate(win)
win.Overlap.Settings.General.Hotkeys = FALSE
Sleep 5000
Disconnect(Desktop.Window)
Playsound, "c:\whistle wake.wav"
End Sub
Warm regards.
Martin Webster.
--
To insure that you receive proper support, please include all past
correspondence (where applicable), and any relevant information
pertinent to your situation when submitting a problem report to the GW
Micro Technical Support Team.
Aaron Smith
GW Micro
Phone: 260/489-3671
Fax: 260/489-2608
WWW: http://www.gwmicro.com
FTP: ftp://ftp.gwmicro.com
Technical Support & Web Development