ROSTAM2
جمعه 18 آذر 1401, 16:30 عصر
سلام.
در این تاپیک چگونگی اضافه کردن یک MenuItem به منوی سیستمی فرم با توابع API رو قدم به قدم خواهیم داشت:
1- یک شیء ContextMenu به فرم اضافه کنید(اگر در جعبه ابزار (ToolBox) ندارید اون رو با راست کلیک روی جعبه ابزار و انتخاب آیتم Choose Items از منوی راست کلیک اون از بین اشیاء و کامپوننت های .Net به جعبه ابزار اضافه کنید):
154340
2- برای ContextMenu یک آیتم با متن ...About ایجاد کنید:
154341
3- یک About Box به پروژه اضافه کنید:
154342
4- به فرم اصلی برگشته و برای رویداد MenuItem ایجاد شده About رویداد کلیک را انتخاب و این کد را در رویداد گفته شده بنویسید:
Private Sub MenuItem1_Click(sender As Object, e As EventArgs) Handles MenuItem1.Click
Dim AboutBox As New AboutBox1
AboutBox.Show(Me)
End Sub
5- برای اضافه کردن آیتم به منوی سیستمی فرم به 3 تابع از توابع API نیاز داریم: (GetSystemMenu و GetMenuItemID و InsertMenu)
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (
ByVal hwnd As Long,
ByVal bRevert As Boolean) As Long
Declare Function GetMenuItemID Lib "user32" (
hMenu As IntPtr,
nPos As Integer) As Integer
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
6- قبل از هر چیز مقدار Handle از منوی سیستمی فرم را نیاز داریم که تابع GetSystemMenu با گرفتن Handle از فرم Handle از منوی سیستمی اون رو برمی گردونه:
Dim SysMenu As Long = GetSystemMenu(Me.Handle.ToInt64, False)
7- و توسط تابع GetMenuItemID مقدار آی.دی MenuItem رو بدست میاریم:
Dim hMenuItem As Long = GetMenuItemID(MenuItem1.Parent.Handle.ToInt64, MenuItem1.Index)
8- و برای اضافه کردن MenuItem به منوی سیستمی، تابع InsertMenu از API:
InsertMenu(SysMenu, position,&H0& , hMenuItem, MenuItem1.Text)
ورودی اول منوی سیستمی، ورودی دوم شماره Index برای اضافه شدن آیتم، ورودی سوم Flags که در اینجا MF_STRING = &H0& است، ورودی چهارم آی.دی بدست آمده توسط تابع GetMenuItemID است و ورودی آخر متن MenuItem است.
همه این دستورات که از توابع API استفاده شده را در رویداد 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, position,&H0& , hMenuItem, MenuItem1.Text)
End Sub
154343
در این تاپیک چگونگی اضافه کردن یک MenuItem به منوی سیستمی فرم با توابع API رو قدم به قدم خواهیم داشت:
1- یک شیء ContextMenu به فرم اضافه کنید(اگر در جعبه ابزار (ToolBox) ندارید اون رو با راست کلیک روی جعبه ابزار و انتخاب آیتم Choose Items از منوی راست کلیک اون از بین اشیاء و کامپوننت های .Net به جعبه ابزار اضافه کنید):
154340
2- برای ContextMenu یک آیتم با متن ...About ایجاد کنید:
154341
3- یک About Box به پروژه اضافه کنید:
154342
4- به فرم اصلی برگشته و برای رویداد MenuItem ایجاد شده About رویداد کلیک را انتخاب و این کد را در رویداد گفته شده بنویسید:
Private Sub MenuItem1_Click(sender As Object, e As EventArgs) Handles MenuItem1.Click
Dim AboutBox As New AboutBox1
AboutBox.Show(Me)
End Sub
5- برای اضافه کردن آیتم به منوی سیستمی فرم به 3 تابع از توابع API نیاز داریم: (GetSystemMenu و GetMenuItemID و InsertMenu)
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (
ByVal hwnd As Long,
ByVal bRevert As Boolean) As Long
Declare Function GetMenuItemID Lib "user32" (
hMenu As IntPtr,
nPos As Integer) As Integer
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
6- قبل از هر چیز مقدار Handle از منوی سیستمی فرم را نیاز داریم که تابع GetSystemMenu با گرفتن Handle از فرم Handle از منوی سیستمی اون رو برمی گردونه:
Dim SysMenu As Long = GetSystemMenu(Me.Handle.ToInt64, False)
7- و توسط تابع GetMenuItemID مقدار آی.دی MenuItem رو بدست میاریم:
Dim hMenuItem As Long = GetMenuItemID(MenuItem1.Parent.Handle.ToInt64, MenuItem1.Index)
8- و برای اضافه کردن MenuItem به منوی سیستمی، تابع InsertMenu از API:
InsertMenu(SysMenu, position,&H0& , hMenuItem, MenuItem1.Text)
ورودی اول منوی سیستمی، ورودی دوم شماره Index برای اضافه شدن آیتم، ورودی سوم Flags که در اینجا MF_STRING = &H0& است، ورودی چهارم آی.دی بدست آمده توسط تابع GetMenuItemID است و ورودی آخر متن MenuItem است.
همه این دستورات که از توابع API استفاده شده را در رویداد 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, position,&H0& , hMenuItem, MenuItem1.Text)
End Sub
154343