システムメニューをロック          <TOP>


GetSystemMenu システムメニューのハンドル取得
GetMenuItemCount メニューの項目数を取得
RemoveMenu システムメニューの削除
MF_BYPOSITION(&H400) nPositionはメニュー項目のインデックス
 

システムメニューの項目数をカウントし、全ての項目をロックしています。

 

'================================================================
'= システムメニューをロック
'=    (GetSystemMenu2.bas)
'================================================================
#include "Windows.bi"

' システムメニューのハンドル取得
Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&)

' メニューの項目数を取得
Declare Function Api_GetMenuItemCount& Lib "user32" Alias "GetMenuItemCount" (ByVal hMenu&)

' システムメニューの削除
Declare Function Api_RemoveMenu& Lib "user32" Alias "RemoveMenu" (ByVal hMenu&, ByVal nPosition&, ByVal wFlags&)

#define MF_BYPOSITION &H400             'nPositionはメニュー項目のインデックス

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hMenu As Long
    Var MenuItems As Long
    Var i As Long
    
    hMenu = Api_GetSystemMenu(GethWnd, 0)
    
    If hMenu <> 0 Then
        MenuItems = Api_GetMenuItemCount(hMenu)
        
        If MenuItems <> 0 Then
            For i = MenuItems - 1 To 0 Step -1
                Ret = Api_RemoveMenu(hMenu, i, MF_BYPOSITION)
            Next i
        End If
    End If
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    End
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End