1

ユーザーが定義するホットキーを使用するアプリケーションがあります。これは、1つのホットキーとしてCTRL、ALT、SHIFT、もう1つのホットキーとしてF *ファンクションキーの2つのキーの組み合わせです(例:CTRL + F1、ALT+F2またはSHIFT+F8)前述のように、これらはユーザーが前に選択しますそれらをリッスンしてイベントをトリガーするために、グローバルキーフックが配置されます。私のアプリには、次のようにすべてのファンクションキーがあります。

  Public Const VK_F1 = &H70
  Public Const VK_F2 = &H71
  Public Const VK_F3 = &H72
  Public Const VK_F4 = &H73

などなど...

キャッチキーの組み合わせを使用しているコードは次のとおりです。

      If (Hookstruct.vkCode = VK_F5) And _
        CBool(Hookstruct.flags And _
        LLKHF_ALTDOWN) Then
        'TriggerEventHere

        'Return True
    End If

また、ユーザーが1つのコンボボックスでALT、CTRL、SHIFTを選択し、もう1つのコンボボックスでファンクションキーを選択するための2つのコンボボックスがあります。次に、フックをアクティブにするボタンがあります。

私の質問はこれです。アプリの実行中に、コンボボックスのユーザー情報を使用して、コードに関連するキーの組み合わせを設定するにはどうすればよいですか?

これをお読みいただきありがとうございます。

4

1 に答える 1

1

アプリの実行中に、コンボボックスのユーザー情報を使用して、コードに関連するキーの組み合わせを設定するにはどうすればよいですか?

  1. フォームのKeyPreviewプロパティをに設定しますtrue(これにより、フォームレベルですべてのキーストロークがキャプチャされます)。例えば:

    KeyPreview = true
    
  2. ユーザーが定義したキーのForm1_KeyDown組み合わせを検索できる場合、つまり、これらは、ユーザーが定義したキーの組み合わせを持つクラス(ヒント:クラスをインスピレーションとして使用)であるList(Of KeyPresses)whereに格納できます。KeyPressesKeyEventArgs

  3. 実行時に、ユーザーがキーを押す組み合わせを保存した後、キーを押すと、イベントが発生しKeyDown、をチェックしてList(Of KeyPresses)イベントをトリガーします。

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) _
       Handles MyBase.KeyDown
          ' Test for the Alt key
          If e.Alt = KeyPressesList(0).Alt Then
              MessageBox.Show("Alt was pressed")
          End If
    End Sub
    
于 2012-05-20T04:45:36.313 に答える