2009-06-02 12 views
0

NumLockがOFFであるかどうかを検出する方法と、VB APPが動作しているときにNumLockを常に自動的に再びONにする方法はありますか?NumLockがOFFであるかどうかを検出し、常にONに戻す

編集: 私のアプリは専用のアプリで、専用のコンピュータで外部の数字パッド付きのデバイスで動作します。

別のオプションはNUMPAD ARROW KEYS(など)を受け入れ、これをNUMBERSに変換することです。 (numlock offの状態を無視し、numlockがオンのときのように振る舞います)

答えて

3

vb.netでこれを具体的にどのように行うかわかりませんが(quick googleはhttp://support.microsoft.com/kb/177674です)、一般的にこのようなマシン全体の設定が変わりますあなたはnumlock(またはcapslock - または何でも)キー状態の個人的な好みに慣れていて、あなたはそれを上書きしています。

これはです。実際にはは私を刺激します。

つまり、あなたのアプリだけが稼働している状況(POSソフトウェア、医療事務管理ソフトウェアなど)では、これは問題ありません。

+0

刺激要因についてもっと同意できませんでした。 @OP:あなたのアプリがマシンを完全かつ排他的に制御しない限り、これをしないでください。 –

+0

これは専用機に専用のアプリです。それはキーボードだけのユニークな外部NUMPADを持っています、ユーザーが間違ってnumlockをクリックすると大惨事になります..どんなアイデア? – Tom

+1

キーコードをnumlockなしで+で処理します。したがって、それがオンであるかどうかは関係ありません。 – sybreon

2

NUMPADキーを物理的に削除しますか?

+0

まあ、私はプログラミングソリューションを探していました..しかし、今自分自身を考え出しました.. – Tom

+5

.. NumLockのある種の電気ショック装置??? – kevchadders

+0

+1の創造性! – sybreon

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() 
関連する問題