PRB: SendKeys Does Not Work with NumLock or Caplock

This article was previously published under Q192273
This article has been archived. It is offered "as is" and will no longer be updated.
SYMPTOMS
Using SendKeys to change the state of {CAPSLOCK} or {NUMLOCK} is noteffective.
CAUSE
Toggling {CAPSLOCK} or {NUMLOCK} with the SendKeys statement is only ineffect for the continuous subsequent keys sent by SendKeys. The state of{CAPSLOCK} or {NUMLOCK} is reset when Visual Basic yields to otherprocesses. For example, this occurs when the SendKeys statement's Waitparameter is set to "True", or when a DoEvents statement is executed.
RESOLUTION
Use SendKeys to toggle {CAPSLOCK} or {NUMLOCK} only when sending a seriesof keys continuously in a single or multiple number of SendKeys statements.To toggle the {CAPSLOCK} or {NUMLOCK} permanently:
  1. Use the KeyState control that comes with Visual Basic 4.0.

    - or -
  2. Use the Win32 API. See the article in the References section for details.
STATUS
This behavior is by design.
MORE INFORMATION

Steps to Reproduce Behavior

  1. Start a new Standard EXE project. From1 is created by default.
  2. Add a TextBox to Form1 and paste the following code in the code Window:
        Private Sub Text1_Click()        SendKeys "s"        SendKeys "{CAPSLOCK}"  ' Turn on the CapsLock        SendKeys "o"  ' will be printed in caps        For i = 0 To 10        SendKeys Chr(Asc("a") + i)  'will be printed in caps        Next        'DoEvents  ' uncommenting this will print next line in smalls        SendKeys "o"  ' will be printed in caps        SendKeys "{CAPSLOCK}"  ' Turn off the caps lock        SendKeys "o"  ' Will be printed in smalls    End Sub						
  3. Turn off the Caps Lock. Run the project. Note that the SendKeys work as expected.
  4. Un-comment the DoEvents statement. Run the project. The Caps Lock is reset after the DoEvents call.
  5. In any SendKeys statement after SendKeys "{CAPSLOCK}", pass "True" as the second parameter. The state of Caps Lock is reset after that statement.
REFERENCES
For additional information, please see the following article in theMicrosoft Knowledge Base:
177674 : HOWTO: Toggle the NUM LOCK, CAPS LOCK, and SCROLL LOCK Keys
Properties

Article ID: 192273 - Last Review: 12/05/2015 09:14:12 - Revision: 2.0

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic 6.0 Enterprise Edition, Microsoft Visual Basic 4.0 Standard Edition

  • kbnosurvey kbarchive kbprb kbcode KB192273
Feedback