You are currently offline, waiting for your internet to reconnect

PRB: SendKeys Does Not Work with NumLock or Caplock

This article was previously published under Q192273
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: 05/12/2003 23:44:00 - 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
  • kbprb kbcode KB192273
Feedback