From MSDN:<br><br>code <br>Specifies a code the hook procedure uses to determine how to process the message. This parameter can be one of the following values: Value Meaning <br>HC_ACTION The wParam and lParam parameters contain information about a keystroke message. <br>HC_NOREMOVE The wParam and lParam parameters contain information about a keystroke message, and the keystroke message has not been removed from the message queue. (An application called the PeekMessage function, specifying the PM_NOREMOVE flag.) <br><br><br>If code is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx. <br><br>wParam <br>Specifies the virtual-key code of the key that generated the keystroke message. <br>lParam <br>Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag. This parameter can be a combination of the following values: Value Description <br>0–15 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user's holding down the key. <br>16–23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM). <br>24 Specifies whether the key is an extended key, such as a function key or a key on the numeric keypad. The value is 1 if the key is an extended key; otherwise, it is 0. <br>25–28 Reserved. <br>29 Specifies the context code. The value is 1 if the alt key is down; otherwise, it is 0. <br>30 Specifies the previous key state. The value is 1 if the key is down before the message is sent; it is 0 if the key is up. <br>31 Specifies the transition state. The value is 0 if the key is being pressed and 1 if it is being released.