VB.NET/WinForms:向系统菜单添加菜单项





5.00/5 (2投票s)
将上下文菜单的菜单项添加到Windows Forms应用程序中窗体的系统菜单
引言
为什么我们需要使用菜单项
添加到系统菜单
?菜单项
拥有自己的事件
,并且易于用于调用我们的命令语句。
背景
使用API函数向系统菜单添加菜单项:GetSystemMenu API函数获取窗体系统菜单的句柄 - GetMenuItemID API函数获取上下文菜单的菜单项ID,以及InsertMenu API函数在系统菜单中插入菜单项。
Using the Code
在窗体的通用声明中使用API函数
GetSystemMenu API函数
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (
ByVal hwnd As Long,
ByVal bRevert As Boolean) As Long
GetMenuItemID API函数
Declare Function GetMenuItemID Lib "user32" (
hMenu As Long,
nPos As Integer) As Integer
InsertMenu API函数
Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (
ByVal hMenu As Long,
ByVal nPosition As Long,
ByVal wFlags As Long,
ByVal wIDNewItem As Long,
ByVal lpNewItem As String) As Long
首先,您需要在您的窗体
中添加一个上下文菜单组件
创建一个新的菜单项(例如,关于菜单项
)
然后,将一个“关于框”添加到项目中
获取系统菜单的句柄
Dim SysMenu As Long = GetSystemMenu(Me.Handle.ToInt64, False)
获取菜单项ID
Dim hMenuItem As Long = GetMenuItemID(MenuItem1.Parent.Handle.ToInt64, MenuItem1.Index)
将菜单项插入到窗体
的系统菜单
InsertMenu(SysMenu, 0, &H0&, hMenuItem, MenuItem1.Text)
将上述语句添加到窗体
的Load事件中
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim SysMenu As Long = GetSystemMenu(Me.Handle.ToInt64, False)
Dim hMenuItem As Long = _
GetMenuItemID(MenuItem1.Parent.Handle.ToInt64, MenuItem1.Index)
InsertMenu(SysMenu, 0, &H0&, hMenuItem, MenuItem1.Text)
End Sub
双击上下文菜单
的菜单项
以编写如下命令
语句
Private Sub MenuItem1_Click(sender As Object, e As EventArgs) Handles MenuItem1.Click
Dim AboutBox As New AboutBox1
AboutBox.Show(Me)
End Sub
历史
- 2022年12月13日:初始版本