谢谢!

解决方案 »

  1.   


    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Me.hwnd, False)
    RemoveMenu hSysMenu, GetMenuItemCount(hSysMenu) - 1, MF_BYPOSITION Or MF_REMOVE
    DrawMenuBar Me.hwnd
      

  2.   

    如何禁用关闭按钮http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=194220
    Private  Declare  Function  GetSystemMenu  Lib  "User32"  (ByVal  hwnd  As  Long,  ByVal  bRevert  As  Long)  As  Long  
    Private  Declare  Function  DeleteMenu  Lib  "User32"  (ByVal  hMenu  As  Long,  ByVal  nPosition  As  Long,  ByVal  wFlags  As  Long)  As  Long  
    Private  Declare  Function  GetMenuString  Lib  "User32"  Alias  "GetMenuStringA"  (ByVal  hMenu  As  Long,  ByVal  wIDItem  As  Long,  ByVal  lpString  As  String,  ByVal  nMaxCount  As  Long,  ByVal  wFlag  As  Long)  As  Long  
     
    Const  MF_STRING  =  &H0&  
    Const  MF_BYCOMMAND  =  &H0&  
    Const  SC_CLOSE  =  &HF060  
     
    Private  hMenu  As  Long  
    Private  CloseStr  As  String  '记录Close  MenuItem的字串  
     
    Private  Sub  Form_Load()  
    hMenu  =  GetSystemMenu(Me.hwnd,  0)  
    CloseStr  =  String(255,  0)  
     
    'SC_CLOSE指的便是"关闭"的那一个MenuItem  ID  
    Call  GetMenuString(hMenu,  SC_CLOSE,  CloseStr,  256,  MF_BYCOMMAND)  
    CloseStr  =  Left(CloseStr,  InStr(1,  CloseStr,  Chr(0))  -  1)  
     
    Call  DeleteMenu(hMenu,  SC_CLOSE,  MF_BYCOMMAND)  
    End  Sub  
    ---------------------------------------------------------------  
     
    简单一些的  
    Option  Explicit  
    Dim  Exit_Flag  As  Boolean    '    用来标记是否正常退出  
     
    '    如果选择退出按钮,则退出标记为真  
    Private  Sub  Exit_Cmd_Click()  
           Exit_Flag  =  True  
           End  
    End  Sub  
     
    Private  Sub  Form_Load()  
           Exit_Flag  =  False  
    End  Sub  
     
    '    根据退出标记,决定是否退出  
    Private  Sub  Form_QueryUnload(Cancel  As  Integer,  UnloadMode  As  Integer)  
           If  Exit_Flag  =  False  Then  
                   Cancel  =  -1  
           End  If  
    End  Sub  
     
    ---------------------------------------------------------------  
     
    新建一个EXE,贴下面代码:再运行  
     
    Private  Declare  Function  GetSystemMenu  Lib  "USER32"  (ByVal  hwnd  As  Long,  ByVal  bRevert  As  Long)  As  Long  
    Private  Declare  Function  GetMenuItemCount  Lib  "USER32"  (ByVal  hMenu  As  Long)  As  Long  
    Private  Declare  Function  RemoveMenu  Lib  "USER32"  (ByVal  hMenu  As  Long,  ByVal  nPosition  As  Long,  ByVal  wFlags  As  Long)  As  Long  
    Private  Declare  Function  DrawMenuBar  Lib  "USER32"  (ByVal  hwnd  As  Long)  As  Long  
    Private  Const  MF_BYPOSITION  =  &H400&  
    Private  Const  MF_REMOVE  =  &H1000&  
     
    Private  Sub  DisableX()  
             Dim  hMenu,  nCount,  LO  As  Long  
             hMenu  =  GetSystemMenu(Me.hwnd,  0)  
             nCount  =  GetMenuItemCount(hMenu)  
             LO  =  RemoveMenu(hMenu,  nCount  -  1,  MF_REMOVE  Or  MF_BYPOSITION)  
             LO  =  RemoveMenu(hMenu,  nCount  -  2,  MF_REMOVE  Or  MF_BYPOSITION)  
    End  Sub  
     
    Private  Sub  Form_Load()  
    Call  DisableX  
    End  Sub
      

  3.   

    好像有API可以实现,你在网上查一下
      

  4.   

    'API声明Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Public Const MF_BYPOSITION = &H400&
    Public Const MF_REMOVE = &H1000&
    Public Const SC_CLOSE = &HF060&
    Public Const SC_MAXIMIZE = &HF030&
    Public Const SC_MINIMIZE = &HF020&
    Public Const SC_SIZE = &HF000&
    Public Const SC_MOVE = &HF010&
    Public Const SC_RESTORE = &HF120&
    Private Sub Command1_Click()
    '禁关闭
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Me.hwnd, False)
    RemoveMenu hSysMenu, GetMenuItemCount(hSysMenu) - 1, MF_BYPOSITION Or MF_REMOVE
    RemoveMenu hSysMenu, GetMenuItemCount(hSysMenu) - 2, MF_BYPOSITION Or MF_REMOVE
    DrawMenuBar Me.hwnd
    End Sub
    Private Sub Command3_Click()
    '禁最小
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Me.hwnd, 0)
    RemoveMenu hSysMenu, SC_MINIMIZE, MF_REMOVE
    DrawMenuBar Me.hwnd
    End SubPrivate Sub Command4_Click()
    '禁最大
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Me.hwnd, 0)
    RemoveMenu hSysMenu, SC_MAXIMIZE, MF_REMOVE
    DrawMenuBar Me.hwnd
    End Sub