次のコードは機能し、ユーザーがキーボードの a キーを押すと Label1 に出力されます。
Public Class Form1
Sub New()
InitializeComponent()
End Sub
Public Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal HWND As IntPtr, ByVal WMSG As Integer, ByVal WPARAM As Integer, ByVal LPARAM As IntPtr) As IntPtr
Private WM_KEYDOWN As Integer = &H100
Protected Overrides Sub WndProc(ByRef WindowsMessage As Message)
Select Case WindowsMessage.Msg
Case WM_KEYDOWN
Dim VirtualKeyCode As Integer = CType(WindowsMessage.WParam, Integer)
Select Case (VirtualKeyCode)
Case Keys.A
Label1.Text = "The a key was pressed"
End Select
End Select
MyBase.WndProc(WindowsMessage)
End Sub
クラス終了
フォームにボタンを追加 (ドラッグ) すると、コードが機能しなくなります。ボタンがフォーム上にあると、WM_KEYDOWN メッセージは送信されなくなりました。Case WM_KEYDOWN で設定されたブレークポイントはヒットしません。
ボタンを削除すると、コードが再び機能し始めます。
助言がありますか?
ありがとう。