2009-06-02 45 views
0

什么是检测NumLock是否关闭的方法以及如何在VB APP运行时自动将其重新打开?检测NumLock是否关闭并将其始终打开

编辑: 我的应用程序是专用应用程序,运行在具有外部小键盘设备的专用计算机上。

另一种选择是接受NUMPAD ARROW KEYS(等)并将它们转换为NUMBERS,这是否可能? (例如忽略numlock关闭的情况,并像numlock一样运行)

回答

3

我不确定你是如何在vb.net(一个快速谷歌发现http://support.microsoft.com/kb/177674)专门做这个,但一般来说改变这样的机器范围的设置令人不悦:用户习惯于他们对numlock(或capslock - 或其他)关键状态的个人偏好......并且你压倒了它。

这会真的让我很不舒服。这就是说,在你的应用程序是唯一运行的情况下(例如,POS软件,医疗办公室管理软件等),这可能是好的。

+0

无法就刺激因素达成一致。 @OP:请不要这样做,除非您的应用程序对机器有完整的排他性控制。 – 2009-06-02 06:48:26

+0

这是专用机器中的专用应用程序。它将有一个唯一的外部NUMPAD作为唯一的键盘,如果用户错误地关闭了numlock,将会是灾难性的。任何想法? – Tom 2009-06-02 07:42:38

2

物理删除NUMPAD密钥?

1
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 Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
    Private Const KEYEVENTF_KEYUP = &H2 
    Const VK_NUMLOCK = &H90 
    Const KEYEVENTF_EXTENDEDKEY = &H1 
    Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal ByValnVirtKey As Integer) As Short 

Private Sub numlockON() 
     keybd_event(VK_NUMLOCK, 0, 0, 0) ' Press NUMLOCK key down 
     keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0) ' Release it 
    End Sub 

If Not GetKeyState(VK_NUMLOCK) Then numlockON() 
相关问题