PRB: SendKeys Does Not Work with NumLock or Caplock
ID: Q192273
|
The information in this article applies to:
-
Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0
-
Microsoft Visual Basic Standard Edition, 32-bit only, for Windows, version 4.0
SYMPTOMS
Using SendKeys to change the state of {CAPSLOCK} or {NUMLOCK} is not
effective.
CAUSE
Toggling {CAPSLOCK} or {NUMLOCK} with the SendKeys statement is only in
effect for the continuous subsequent keys sent by SendKeys. The state of
{CAPSLOCK} or {NUMLOCK} is reset when Visual Basic yields to other
processes. For example, this occurs when the SendKeys statement's Wait
parameter is set to "True", or when a DoEvents statement is executed.
RESOLUTION
Use SendKeys to toggle {CAPSLOCK} or {NUMLOCK} only when sending a series
of keys continuously in a single or multiple number of SendKeys statements.
To toggle the {CAPSLOCK} or {NUMLOCK} permanently:
- Use the KeyState control that comes with Visual Basic 4.0.
- or -
- 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
- Start a new Standard EXE project. From1 is created by default.
- 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
- Turn off the Caps Lock. Run the project. Note that the SendKeys work as
expected.
- Un-comment the DoEvents statement. Run the project. The Caps Lock is
reset after the DoEvents call.
- 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 the
Microsoft Knowledge Base:
Q177674
: HOWTO: Toggle the NUM LOCK, CAPS LOCK, and SCROLL LOCK Keys
Keywords : kbcode kbnokeyword kbVBp400 kbVBp500 kbVBp600 kbGrpVB
Version : WINDOWS:4.0,5.0,6.0
Platform : WINDOWS
Issue type : kbprb