0
내 테스트 :삽입 항목
Public Class Form1
Public Const WM_SYSCOMMAND As Int32 = &H112
Public Const MF_BYPOSITION As Int32 = &H400
Public Const MYMENU1 As Int32 = 1000
Public Const MYMENU2 As Int32 = 1001
Dim hSysMenu As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" _
(ByVal hMenu As IntPtr, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Boolean
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If (m.Msg = WM_SYSCOMMAND) Then
Select Case m.WParam.ToInt32
Case MYMENU1
MsgBox("1")
Case MYMENU2
MsgBox("2")
End Select
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
hSysMenu = GetSystemMenu(Me.Handle, False)
InsertMenu(hSysMenu, 5, MF_BYPOSITION, MYMENU1, "My Menu 1")
InsertMenu(hSysMenu, 6, MF_BYPOSITION, MYMENU2, "My Menu 2")
End Sub
End Class
와 나는 오류 얻을 :
PInvokeStackImbalance가 감지 메시지 : PInvoke를 함수에 대한 호출 'WindowsApplication1 WindowsApplication1.Form1 :: GetSystemMenu!'를 스택의 불균형이 있습니다. 관리되는 PInvoke 서명이 관리되지 않는 대상 서명과 일치하지 않기 때문일 수 있습니다. PInvoke 서명의 호출 규칙 및 매개 변수가 대상 관리되지 않는 시그니처와 일치하는지 확인하십시오.
잘 작동합니다. –