Hi Rick,
Note this is what I do for all my hotkeys inside the Breaking News app, or
any app I write. If nothing was in the third parm you would have a global, or
kind of unpredictable event with the hotkey.
I pass in the code for the command wanted from the select list as the
fourth parm and don't bother with the fifth, so I leave it blank.
Below I also added the manual object list explanation for both hotkey
types, cursor and hotkey..
Format:
object.RegisterHotkey(Key, FunctionName, FilterBy, Parameter, FirstPress)
Download and make a list of the web page:
Set myAlertAltDown = Keyboard.RegisterHotkey("Alt-Down Arrow",
"AlertWebPage", dObj.Window, "pd")
Download and read the page:
Set myAlertCtrlDown = Keyboard.RegisterHotkey("Control-Down Arrow",
"AlertWebPage", dObj.Window, "rp")
Make a copy of the URL link in the Clipboard:
Set myAlertAltUp = Keyboard.RegisterHotkey("Alt-Up Arrow", "AlertWebPage",
dObj.Window, "cp")
Just display the URL link:
Set myAlertCtrlUp = Keyboard.RegisterHotkey("Control-Up Arrow",
"AlertWebPage", dObj.Window, "p")
The Register Hotkey explanation
RegisterHotkey
Registers a hot key, and returns a
RegisteredKey
object. Hot keys are discarded (or "eaten"), and not passed through to an
underlying
application (just like Window-Eyes hot keys). The return value must be stored in
order for the hot key to continue functioning until it is released (either
manually
using the
Unregister
method of the
RegisteredKey
object, or automatically when the script exits). Hot keys are designed to add
new
functionality. If you are adding functionality to an existing key press, you
should
use
RegisterCursorKey
.
Syntax
object.RegisterHotkey(Key, FunctionName, FilterBy, Parameter, FirstPress)
where object is a
Keyboard
object.
Parameters
Name
Data Type
Required/Optional
Description
Key
Object/String
Required
Can either be a
Key
object, or a quoted string containing the name of a hot key (i.e.
"Control-Shift-Q").
Modifiers are spelled out completely, not abbreviated. You can use the
Window-Eyes
hot key dialog to verify the exact spelling of a hot key to use as a string.
FunctionName
String
Required
Name of the user defined function to call when the hot key is pressed. Refer to
the
RegisteredKeyProc
callback for function for more information.
FilterBy
Object
Optional
Window
object or
Process
object to filter the hot key by. If the hot key should work globally (across
all
applications), use Nothing as the FilterBy parameter, or leave it empty. Note
that
the FilterBy parameter will overwrite any filtering applied to a
Key
object if a
Key
object is passed as the Key parameter. Also note that if you supply any
additional
parameters, you must include the FilterBy parameter, again passing Nothing (or
leaving
the parameter empty) if you do not plan on using it.
Parameter
Variant
Optional
Additional parameter to be passed to the FunctionName. If you want to use this
parameter
as a return value, you will need to pass it as an object. Note that if you
supply
any additional parameters, you must include this parameter. If you do not plan
on
using it, leave the parameter empty. If this parameter is supplied, the value
will
be passed as the first parameter to the
hot key callback function
(specified by the FunctionName parameter).
FirstPress
Boolean
Optional
Indicates whether a key has been pressed for the first time (True) or has been
pressed
more than one time in succession (False). If this parameter is True, a value of
True
will be passed as the last parameter to the
hot key callback function
(specified by the FunctionName parameter) for the first press of the hotkey,
and
False for all subsequent presses of the hotkey.
Examples
' Create a hot key using a Key object
Set myKey = Keyboard.Keys(vk_R)
myKey.RequireModifiers kmControl Or kmShift Or kmWindows
Set registeredKey = Keyboard.RegisterHotKey(myKey, "SpeakHelloWorld")
Sub SpeakHelloWorld()
Speak "Hello world!"
End Sub
' Create a hot key using a string
Set registeredKey = Keyboard.RegisterHotKey("Control-Shift-Windows-R",
"SpeakHelloWorld")
Sub SpeakHelloWorld()
Speak "Hello world!"
End Sub
' Detect if a key has been pressed twice in succession
Set registeredKey = Keyboard.RegisterHotKey("Control-Shift-Windows-R",
"SpeakHelloWorld",
, , True)
Sub SpeakHelloWorld(firstPress)
If Not firstPress Then
Speak "Key pressed twice in succession"
End If
End Sub
RegisterCursorKey
Previous page
Return to chapter overview
Next page
Registers a cursor key, and returns a
RegisteredKey
object. Unlike hot keys, cursor keys are not discarded (or "eaten") so that
they
may be used in conjunction with an application, just like Window-Eyes cursor
keys.
The return value must be stored in order for the cursor key to continue
functioning
until it is released (either manually using the
Unregister
method of the
RegisteredKey
object, or automatically when the script exits). Cursor keys are designed to
add
additional functionality to an existing application key press. If you are
creating
new functionality, you should use
RegisterHotKey
.
Syntax
object.RegisterCursorKey(Key, FunctionName, FilterBy, Parameter)
where object is a
Keyboard
object.
Parameters
Name
Data Type
Required/Optional
Description
Key
Object/String
Required
Can either be a
Key
object, or a quoted string containing the name of a key (i.e.
"Control-Shift-Q").
Modifiers are spelled out completely, not abbreviated. You can use the
Window-Eyes
hot key dialog to verify the exact spelling of a key to use as a string.
FunctionName
String
Required
Name of the user defined function to call when the key is pressed. Refer to the
RegisteredKeyProc
callback for function for more information.
FilterBy
Object
Optional
Window
object or
Process
object to filter the cursor key by. If the cursor key should work globally
(across
all applications), use Nothing as the FilterBy parameter, or leave it empty.
Note
that the FilterBy parameter will overwrite any filtering applied to a
Key
object if a
Key
object is passed as the Key parameter. Also note that if you supply any
additional
parameters, you must include the FilterBy parameter, again passing Nothing (or
leaving
the parameter empty) if you do not plan on using it.
Parameter
Variant
Optional
Additional parameter to be passed to the FunctionName. If you want to use this
parameter
as a return value, you will need to pass it as an object. Note that if you
supply
any additional parameters, you must include this parameter. If you do not plan
on
using it, leave the parameter empty. If this parameter is supplied, the value
will
be passed as the single parameter to the
hot key callback function
(specified by the FunctionName parameter).
Sent: Monday, September 15, 2014 8:37 AM
Subject: RE: Global Scripts and HotKeys
Hi Bruce:
Do you create the hot keys only when you create and activate a dialog and
then verify that dialog has focus?
Even if that is the case could that impact some other scripts global hot key
with the same key combo if something is to be done by that script even if your
app is running or do you turn off all the hot keys you use then turn on yours
and turn them off when your dialog closes somehow?
In other words, Is there any chance your hot keys can step on other scripts
hot keys making them not work if they are running active and use the same hot
keys?
I am just curious what type of global isolation exists between global scripts
like the jaws keyboard script and the insert key script and the several other
global scripts.
There are also the standard Windows HotKeys not to mention the many dedicated
to third party programs like Visual Studio, hundreds I think, and others.
Since global scripts I think are active all the time once created and active
I was wondering if some problems might be related to some conflicts along these
lines.
Not specifically with your app but I used it as an example since you and
others are familiar with it for thinking about this question of global use of
hot keys over other global scripts and then over third party software like your
app.
Rick USA
---
This email is free from viruses and malware because avast! Antivirus protection
is active.
http://www.avast.com