一个简单的例子(不需要用到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
'首先定义一个全局布尔变量“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
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这个程序同时会使右上角的×变灰。
你给我的代码还缺了一个函数声明
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
但是用的你的代码虽然可以使右上角×变灰,但是热键alt+F4没有屏蔽,仍然可以关闭程序,怎么办??
我想api应该是能实现吧,不过就是不知道怎么实现才请教你们大家的啊
还有我的第一个问题好象没人看见似的:)win2000和98中api有什么不同,使用时需要注意什么??
是什么意思?能详细说说吗?谢谢了
高手帮忙
先判断键盘是否按下F4,如果按了,就用API:GetAsyncKeyState检查是否按下alt,如果按了就吃掉这个键盘消息!
想知道怎么hook键盘,继续找资料吧,我就不多说了。
还要说的是,vb的hook只能对自己的窗口有效。
也可以给我发信,[email protected],我很喜欢交朋友