|
![]() |
![]() ![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||
Visual Basic System Services Activating CapsLock, NumLock, ScrollLock and PrintScreen on NT-Based Systems |
||
Posted: | Friday July 10, 1998 | |
Updated: | Monday December 26, 2011 | |
Applies to: | VB4-32, VB5, VB6 | |
Developed with: | VB6, Windows NT4 | |
OS restrictions: | Windows NT4, Windows 2000, Windows XP | |
Author: | VBnet - Randy Birch, Stoil Marinov | |
Related: |
SetKeyboardState: Activating CapsLock and NumLock on Win9x BitBlt: Mimicking the PrintScreen Function BitBlt: Mimicking PrintScreen to Create a 'PrintForm' OleCreatePictureIndirect: Mimicking PrintScreen Using OLE |
|
Prerequisites |
VB version supporting the Byte data type, WinNT4/Win2000. |
|
![]() Unlike the other examples listed under related topics, using the keybd_event API for PrintScreen causes the screen to go to the clipboard, where this demo then retrieves that bitmap into a image control. Thanks go out to Stoil Marinov for posting the NT *lock method in the msnews groups. |
BAS Module Code |
None. |
|
Form Code |
![]() |
On a form, add a five command buttons in a control array (Command(0) - Command(4)) and an Image control (Image1). as shown, the image control's Stretch property is True. Add the following code to the form: |
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long) Private Declare Function MapVirtualKey Lib "user32" _ Alias "MapVirtualKeyA" _ (ByVal wCode As Long, ByVal wMapType As Long) As Long Private Declare Function Sleep Lib "kernel32" _ (ByVal dwmilliseconds As Long) As Long Private Const KEYEVENTF_KEYUP = &H2 Private Const KEYEVENTF_EXTENDEDKEY = &H1 Private Const VK_SCROLL = &H91 Private Sub Command1_Click(Index As Integer) Select Case Index Case 0: NTToggleKeyCaps Case 1: NTToggleKeyNumlock Case 2: NTToggleKeyScroll Case 3: NTToggleKeyPrintScreen 'because Windows may still be drawing to 'the clipboard when GetData or Clear is 'called, a 521 - "Can't open clipboard' 'error may be generated. The error handler 'pauses the app for 1/2 second while 'Windows finishes, then tries again. DoEvents On Local Error GoTo command_error Image1.Picture = Clipboard.GetData(vbCFBitmap) Clipboard.Clear On Local Error GoTo 0 Case Else Unload Me Exit Sub End Select 'let the user test the change Text1.SetFocus Exit Sub command_error: Call Sleep(250) Resume Next End Sub Private Sub NTToggleKeyPrintScreen() Call keybd_event(vbKeySnapshot, _ MapVirtualKey(vbKeySnapshot, 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(vbKeySnapshot, MapVirtualKey(vbKeySnapshot, 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End Sub Private Sub NTToggleKeyNumlock() Call keybd_event(vbKeyNumlock, _ MapVirtualKey(vbKeyNumlock, 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(vbKeyNumlock, MapVirtualKey(vbKeyNumlock, 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End Sub Private Sub NTToggleKeyCaps() Call keybd_event(vbKeyCapital, _ MapVirtualKey(vbKeyCapital, 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(vbKeyCapital, MapVirtualKey(vbKeyCapital, 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End Sub Private Sub NTToggleKeyScroll() Call keybd_event(VK_SCROLL, _ MapVirtualKey(VK_SCROLL, 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(VK_SCROLL, MapVirtualKey(VK_SCROLL, 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End Sub Private Sub Text1_GotFocus() With Text1 .SelStart = 0 .SelLength = Len(.Text) End With End Sub |
Comments |
|
|
|
|||||
|
|||||
|
|||||
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |
![]() |