これを行う方法を見つけるのに苦労しています。
ユーザーがテンキーのキーを押すたびに、アプリケーションにメッセージボックスを表示させたいです。主な問題は、焦点が合っていないフォームで実行する必要があることです。VB.NETを使用してこれを行う方法が見つかりません
これを行う方法を見つけるのに苦労しています。
ユーザーがテンキーのキーを押すたびに、アプリケーションにメッセージボックスを表示させたいです。主な問題は、焦点が合っていないフォームで実行する必要があることです。VB.NETを使用してこれを行う方法が見つかりません
宣言する :
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
Dim result As Integer
フォームロード:
Timer1.interval = 1
timer1.start()
Timer1.tick :
For i = 1 To 255
result = 0
result = GetAsyncKeyState (i)
If result = -32767 Then
If i = 103 Then
MsgBox("Num 7")
End If
End If
Next i
:)
あなたが実際に話していることは、あなたのプログラムに向けられていないメッセージを聞きたいので、Global KeyboardHook と呼ばれます。これを .Net に実装する CodePlex ( Application and Global Mouse and Keyboard Hooks Library ) には素敵なライブラリがあります。
これは非常に簡単な例です。上記のライブラリをダウンロードMouseKeyboardActivityMonitor
して、参照に追加する必要があります。
Imports MouseKeyboardActivityMonitor
Imports MouseKeyboardActivityMonitor.WinApi
Public Class Form1
Private WithEvents myKeyboardHookManager As KeyboardHookListener
Dim hookEnabled As Boolean
Public Sub New()
InitializeComponent()
myKeyboardHookManager = New KeyboardHookListener(New GlobalHooker())
myKeyboardHookManager.Enabled = True
End Sub
Private Sub HookManager_KeyDown(sender As Object, e As KeyEventArgs)
Select Case e.KeyCode
Case Keys.NumPad0 To Keys.NumPad9
MessageBox.Show("KeyCode = " & e.KeyCode & vbCrLf & "Number = " & (e.KeyCode - 96))
End Select
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If hookEnabled Then
hookEnabled = False
RemoveHandler myKeyboardHookManager.KeyDown, AddressOf HookManager_KeyDown
Else
hookEnabled = True
AddHandler myKeyboardHookManager.KeyDown, AddressOf HookManager_KeyDown
End If
End Sub
End Class