VBで以下のような動作をするコードを書いてください。


マウスの右を任意のキーに割り当てる
(ここでは、右クリックされとき、F11を押したと認識されるようにお願いします)

マウスのホイールを任意のキーに割り当てる
(ここでは、F12を押したと認識されるようにお願いします)

VB2005 Express Edition
よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2007/08/26 12:17:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:wasisan No.1

回答回数86ベストアンサー獲得回数7

ポイント10pt

おそらく一番簡単なSendKeysを使う方法です.

下にそのままフォームのコード内容をコピーしておきます.

見るべき点は,一番下にあるForm1_MouseDown, Form1_KeyDown, Form1_MouseWheelの部分です.

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "

    Public Sub New()
        MyBase.New()

        ' この呼び出しは Windows フォーム デザイナで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後に初期化を追加します。

    End Sub

    ' Form は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    ' Windows フォーム デザイナで必要です。
    Private components As System.ComponentModel.IContainer

    ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。
    'Windows フォーム デザイナを使って変更してください。  
    ' コード エディタを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12)
        Me.ClientSize = New System.Drawing.Size(292, 273)
        Me.Name = "Form1"
        Me.Text = "Form1"

    End Sub

#End Region

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        If (e.Button = MouseButtons.Right) Then
            SendKeys.Send("{F11}")
        End If
    End Sub

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        MessageBox.Show("key code: " & e.KeyCode, "ok", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End Sub

    Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel
        SendKeys.Send("{F12}")
    End Sub
End Class
  • id:xxxatsxxx
    OS上でのフックですか?

    自作のアプリケーション上のみでの割り当てですか?
  • id:KUROX
    拒否られてるので(^^;;

    http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.sendkeys.send(VS.80).aspx
    とかつかうとできると思う。
  • id:arhbwastrh
    >xxxatsxxxさん
    OS上でです。

    >KUROXさん
    10人以上から回答拒否ユーザーに指定されている場合、回答を拒否する設定になってます。なので拒否になっているのかと・・・
    一時的に20まで上げてみますね。

    よろしくお願いしますm(__)m
  • id:wasisan
    すみません.下のコメントの内容を見ずに回答したため,私の回答は
    参考になりません.回答は開けないようにしてください.

    OS上でフックするためにはDLL化が必要です.VBではたぶんきついと思います.
    参考:
    VBでマウスジェスチャ:
    http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse1.html
  • id:arhbwastrh
    >wasisanさん
    了解しました。

    解決したため、質問を終了させて頂きます。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません