Here’s what I found. Though it’s not exactly what I originally posted for but at least it narrows down to my requirement.
Instead of identifying separately if the user clicked the Close button at the top right corner of the title bar of the form or the ‘Close’ option in the system menu, or he/she pressed the Alt+F4 keys, we can combine these factors together to check if the user is consuming the system command (i.e. any of the above three techniques) to close the form or is doing so programmatically. If the system command is used, action is taken accordingly; else we ignore.
A button is used to close down the form programmatically without any interruption.
Code:
Public Class Form2
Private Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_CLOSE As Integer = &HF060
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
' Check if the user is consuming the system command to close the form.
If (m.Msg = WM_SYSCOMMAND) AndAlso (CInt(m.WParam) = SC_CLOSE) Then
MsgBox("Form closing by system command. Take necessary actions here...")
End If
MyBase.WndProc(m)
End Sub
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
Close()
End Sub
End Class