Option Explicit'取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
'删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000&
Private Const SC_CLOSE = &HF060&
Private Const SC_MAXIMIZE = &HF030&
Private Const SC_MINIMIZE = &HF020&Private Sub qude()
Dim a As Long
a = GetSystemMenu(hwnd, 0)
RemoveMenu a, SC_CLOSE, MF_REMOVE
RemoveMenu a, SC_MINIMIZE, MF_REMOVE
RemoveMenu a, SC_MAXIMIZE, MF_REMOVE
End SubPrivate Sub Command1_Click()
qude
End Sub这个运行后就是让窗口的最大,最小,关闭按钮无效啊,可是怎么只有关闭无效了,另外两个还好好的,疯了啊555555555!!!

解决方案 »

  1.   

    难道是因为2003的系统安全因素?你用序号删除试试 
    MF_REMOVE + MF_BYPOSITION
      

  2.   

    Option ExplicitPublic Const MF_BYPOSITION = &H400
    Public Const MF_REMOVE = &H1000Public Declare Function DrawMenuBar Lib "user32" _
          (ByVal hwnd As Long) As Long
          
    Public Declare Function GetMenuItemCount Lib "user32" _
          (ByVal hMenu As Long) As Long
          
    Public Declare Function GetSystemMenu Lib "user32" _
          (ByVal hwnd As Long, _
           ByVal bRevert As Long) As Long
           
    Public Declare Function RemoveMenu Lib "user32" _
          (ByVal hMenu As Long, _
           ByVal nPosition As Long, _
           ByVal wFlags As Long) As Long 
       
    Sub KillSysMenu(hwnd As Long)   Dim hMenu As Long
       Dim menuItemCount As Long   hMenu = GetSystemMenu(hwnd, 0)
      
       If hMenu Then
          
         '获得菜单项总数
          menuItemCount = GetMenuItemCount(hMenu)
        
         '移除Close菜单
          Call RemoveMenu(hMenu, menuItemCount - 1, _
                          MF_REMOVE Or MF_BYPOSITION)
       
         '移除分割条
          Call RemoveMenu(hMenu, menuItemCount - 2, _
                          MF_REMOVE Or MF_BYPOSITION)
        
         '重画菜单
          Call DrawMenuBar(hwnd)
       End If
       End Sub
      

  3.   

    我是win2000pro运行正常嘛.楼主你为什么不行?
      

  4.   

    你的代码确实好用,不过你说的不可用是不是也要把窗口的最大化与最小化按钮变灰啊!~~~~
    这个是WINDOWS的机制问题,系统菜单的的关闭删除之后会自动的重画标题,使关闭变灰,而删除最大化与最小化不会重画,所以没有变灰,你可以点击最大化与最小化,确实失效了~~~