● クリック位置にシステムメニューを表示する ●

多分、使う機会は無い。ネタとして知っておけばいい程度。

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const WM_POPUPSYSTEMMENU = &H313

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim udtPA As POINTAPI
    Dim lParam As Long

    Call GetCursorPos(udtPA)

    '上位ワード + 下位ワード
    lParam = udtPA.X + udtPA.Y * &H10000

    'システムメニューを表示
    Call PostMessage(Me.hwnd, WM_POPUPSYSTEMMENU, 0&, lParam)

End Sub

戻る