Core Function KeyHook
(→Example) |
(→Example) |
||
Line 38: | Line 38: | ||
<syntaxhighlight lang="sputnik"> | <syntaxhighlight lang="sputnik"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// Set a new Keyhook called MyHook | // Set a new Keyhook called MyHook | ||
KeyHook("MyHook", "myKeyHook();"); | KeyHook("MyHook", "myKeyHook();"); | ||
− | + | ||
while(true) | while(true) | ||
{ | { | ||
DoEvents(); | DoEvents(); | ||
} | } | ||
− | + | ||
Function myKeyHook() | Function myKeyHook() | ||
{ | { | ||
Line 63: | Line 53: | ||
if($wParam == 0x0100) // WM_KEYDOWN | if($wParam == 0x0100) // WM_KEYDOWN | ||
{ | { | ||
− | my | + | my List( $vkCode, $scanCode, $flags, $time, $dwExtraInfo ) = $key; |
− | + | ||
my $Char = Chr($vkCode); | my $Char = Chr($vkCode); | ||
println( "KeyDOWN Hook '$Name' VKCode '$vkCode' Char '$Char'" ); | println( "KeyDOWN Hook '$Name' VKCode '$vkCode' Char '$Char'" ); | ||
Line 85: | Line 74: | ||
else if($wParam == 0x0101) // WM_KEYUP | else if($wParam == 0x0101) // WM_KEYUP | ||
{ | { | ||
− | my | + | my List( $vkCode, $scanCode, $flags, $time, $dwExtraInfo ) = $key; |
− | + | ||
my $Char = Chr($vkCode); | my $Char = Chr($vkCode); | ||
println( "KeyUP Hook '$Name' VKCode '$vkCode' Char '$Char'" ); | println( "KeyUP Hook '$Name' VKCode '$vkCode' Char '$Char'" ); |
Revision as of 00:38, 2 May 2012
KeyHook( <name>, <command> )
Contents |
Description
Places a global system wide Keyhook with callback to a function or command.
Parameters
name
Unique name for the new Keyhook (So it can be removed later!)
If this is the only param used it will try delete a previously made hook by this name.
If a hook already exists with this name it will be replaced with the new code (assuming second param is in use)
command
Optional; A command or function to call etc when the Keyhook event triggers on a keypress up/down etc.
This is similar to Eval().
Return Value
Success: Returns 1.
Failure: Returns 0.
Remarks
A keyhook will cause your program to crash if you dont add DoEvents() in your code see below example.
If only the NAME param is used and NOT the command it will add that name to the delete list and the hook of that name (if any exist) will be removed at the earliest opportunity.
Example
// Set a new Keyhook called MyHook KeyHook("MyHook", "myKeyHook();"); while(true) { DoEvents(); } Function myKeyHook() { my List( $Name, $nCode, $wParam, $lParam ) = $arg; if($nCode >= 0) { if($wParam == 0x0100) // WM_KEYDOWN { my List( $vkCode, $scanCode, $flags, $time, $dwExtraInfo ) = $key; my $Char = Chr($vkCode); println( "KeyDOWN Hook '$Name' VKCode '$vkCode' Char '$Char'" ); // If user presses Q remove the hook! if($Char == "Q") { // If true is ever returned the hook will be removed println("Deleted Hook Name '$Name'"); return true; } // Alternative method to delete // If user presses E remove the hook! else if($Char == "E") { // Setting the hotkey with only 1 param causes it to delete the old one println("Deleted Hook Name '$Name'"); KeyHook("MyHook"); } } else if($wParam == 0x0101) // WM_KEYUP { my List( $vkCode, $scanCode, $flags, $time, $dwExtraInfo ) = $key; my $Char = Chr($vkCode); println( "KeyUP Hook '$Name' VKCode '$vkCode' Char '$Char'" ); } } return false; }