返回列表 发帖

[原创]VB.net中屏弊Alt+F4方法之一

[watermark]    ';屏蔽Alt+F4,方法:
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Dim SC_CLOSE As Integer = 61536
        Dim WM_SYSCOMMAND As Integer = 274
        ';判断是系统消息,是不是关闭窗体,使Alt+F4无效
        If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SC_CLOSE Then
            Exit Sub
        End If
        MyBase.WndProc(m)
    End Sub



';如果用了上面的方法,下面的方法没有必要再用了。它的作用是使关闭变灰:

    Private Declare Function GetSystemMenu Lib "User32" (ByVal hwnd As Integer, ByVal bRevert As Long) As Integer
    Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
    Private Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Integer) As Integer
    Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Integer) As Integer
    Private Const MF_BYPOSITION = &H400&
    Private Const MF_DISABLED = &H2&

    Private Sub disableX(ByVal wnd As Form)
        Dim hMenu As Integer, nCount As Integer
        ';得到系统Menu
        hMenu = GetSystemMenu(wnd.Handle.ToInt32, 0)
        ';得到系统Menu的个数
        nCount = GetMenuItemCount(hMenu)
        ';去除系统Menu
        Call RemoveMenu(hMenu, nCount - 1, MF_BYPOSITION Or MF_DISABLED)
        ';重画MenuBar
        DrawMenuBar(Me.Handle.ToInt32)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ';使用X不能用,即关闭按扭变灰
        disableX(Me)
    End Sub[/watermark]

返回列表 回复 发帖