一个简单的例子(不需要用到API)-------
'首先定义一个全局布尔变量“CanExit”, 然后加入以下过程:
Private Sub Form_Load()
 CanExit = False '设置不能退出标志(对ALT+F4起作用,当要退出时 CanExit 必须为真)
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 If Not CanExit Then Cancel = True '只有当 CanExit = True 时,才能退出(关闭)
End Sub

解决方案 »

  1.   

    禁止使用 Alt+F4 关闭窗口 Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Private Const MF_BYPOSITION = &H400& Private Sub Form_Load()
    Dim hwndMenu As Long
    Dim c As Long
    hwndMenu = GetSystemMenu(Me.hwnd, 0)c = GetMenuItemCount(hwndMenu)
    'slet det nederste menupunkt ("LUK ALT+F4")DeleteMenu hwndMenu, c - 1, MF_BYPOSITIONc = GetMenuItemCount(hwndMenu)
    'slet det nederste menupunkt ("Skillelinje")
    DeleteMenu hwndMenu, c - 1, MF_BYPOSITIONEnd Sub这个程序同时会使右上角的×变灰。
      

  2.   

    to wufang(牛牛)
    你给我的代码还缺了一个函数声明
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    但是用的你的代码虽然可以使右上角×变灰,但是热键alt+F4没有屏蔽,仍然可以关闭程序,怎么办??
      

  3.   

    结合使用 Greenberet(百萬石) 的方法,应该可以了吧 
      

  4.   

    “win2000和98中调用api有什么不同,怎样实现屏蔽alt+f4关闭程序”
    我想api应该是能实现吧,不过就是不知道怎么实现才请教你们大家的啊
    还有我的第一个问题好象没人看见似的:)win2000和98中api有什么不同,使用时需要注意什么??
      

  5.   

    用Getsystemparamentinfo 97,1,0,0
      

  6.   

    Getsystemparamentinfo 97,1,0,0 
    是什么意思?能详细说说吗?谢谢了
      

  7.   

    对不起,是systemparamentinfo 97,1,0,0,是屏蔽Alt+Ctrl+Del的,好像无法屏蔽Alt+F4
      

  8.   

    csdn中高手们给的代码很多都是98运行的,2000里不成,不能屏蔽Alt+F4,怎么回事啊??
    高手帮忙
      

  9.   

    hook键盘就可以
    先判断键盘是否按下F4,如果按了,就用API:GetAsyncKeyState检查是否按下alt,如果按了就吃掉这个键盘消息!
    想知道怎么hook键盘,继续找资料吧,我就不多说了。
    还要说的是,vb的hook只能对自己的窗口有效。
    也可以给我发信,[email protected],我很喜欢交朋友