Public Sub Handler_SessionEnding(ByVal sender As Object, ByVal e As Microsoft.Win32.SessionEndingEventArgs)
If e.Reason = Microsoft.Win32.SessionEndReasons.Logoff Then
MessageBox.Show("User is logging off")
ElseIf e.Reason = Microsoft.Win32.SessionEndReasons.SystemShutdown Then
MessageBox.Show("System is shutting down")
End If
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler Microsoft.Win32.SystemEvents.SessionEnding, AddressOf Handler_SessionEnding
End Sub
' Original Code
' Created by E.Spencer - This code is public domain.
' Routines for running an app as an NT service.
'
' modified/rehashed by G.Crisp
' code modified to just detect and cancel windows shutdown - only a few unused bits deleted
'
'orginal code available from
'http://www.ilook.fsnet.co.uk/vb/vbntserv.htm
'
Public Const GWL_WNDPROC = (-4)
Public Const WM_ENDSESSION = &H16
Public Const WM_QUERYENDSESSION = &H11
Public WndProc As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
' exiting from windows
'-------------------------------------------------------
Public Declare Function ExitWindowsEx Lib "user32.dll" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
'EWX_FORCE = 4 Force any applications to quit instead of prompting the user to close them.
'EWX_LOGOFF = 0 Log off the network.
'EWX_POWEROFF = 8 Shut down the system and, if possible, turn the computer off.
'EWX_REBOOT = 2 Perform a full reboot of the system.
'EWX_SHUTDOWN = 1
'call this from your form
Public Sub Hook(Lwnd As Long)
Dim uProcess As Long
WndProc = SetWindowLong(Lwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_QUERYENDSESSION Then
'MsgBox "hw:" + CStr(hw) + " uMsg:" + CStr(uMsg) + " wParam:" + CStr(wParam)
WindowProc = False 'send don't shut down
'run code do what you want, then call ExitWindowsEx etc up to you
Exit Function
ElseIf uMsg = WM_ENDSESSION Then
'MsgBox "hw:" + CStr(hw) + " uMsg:" + CStr(uMsg) + " wParam:" + CStr(wParam)
WindowProc = False
'run code
Exit Function
End If
WindowProc = CallWindowProc(WndProc, hw, uMsg, wParam, lParam)
End FunctionForm
Form
Code:
Private Sub Form_Load()
Hook (Me.hwnd)
End Sub
I have tested it, but the result still same with my previous code. Windows screen dialog still appear when we try to shutdown. And your code make my another code freeze if mouse pointer in hover of my form.
How do I do to prevent a shutdown from being initiated by means that was not my own action?
I have already had multiple issues with programs that work with DB's on my computer (including my own) that become partly corrupted from being given the order to shutdown and then the process is killed...
About a week ago I noticed my computer became uncharacteristically slow, so I ran a full computer virus scan to check for infections and nothing turned up.
Yesterday I found the culprit of the slow down, it was a process called "system interrupts" it was using 25% of my processor all the time....
After a fresh SP1 install (with all updates) i encounter this (quite common apparently..) which is the sidebar freezing during shutdown and altering its process. So far i couldn't fix this.
Probably some will respond "just turn off that sh**" but no i have some nice (and clean) widget i wanna...
I have to do a lot of works on my PC. But my son also play games from another standard user account. So he always shutdown my PC and I loose all my works. So is there any way to prevent shutdown while other users are logged on.
Is there a way that i can prevent the computer from turning off the screen while switching user? My screen reacts really slow when it gets turned off, then on again by the computer, so its just turns black for ages.