TrueSR Posted March 14, 2008 Share Posted March 14, 2008 I found 2 little pieces of code written in VB, it's to interrupt windows shutdown. I want to use it in AutoIt to do just a quick thing before windows shuts down. Please translate, thanks in advance! 1st one : Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = vbAppWindows Then 'Windows is shutting down 'do your code here! ':D End If End Sub 2nd one : expandcollapse popup' 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 Function Form Code from 2nd script : Private Sub Form_Load() Hook (Me.hwnd) End Sub Link to comment Share on other sites More sharing options...
evilertoaster Posted March 14, 2008 Share Posted March 14, 2008 It's not a direct translation per se, but this has been asked before recently-http://www.autoitscript.com/forum/index.php?showtopic=64720 Link to comment Share on other sites More sharing options...
Swift Posted March 14, 2008 Share Posted March 14, 2008 (edited) Just register a message, and call that function when the user has it restarted/shutdowned (is that a word?) Edited March 14, 2008 by Swift Link to comment Share on other sites More sharing options...
TrueSR Posted March 15, 2008 Author Share Posted March 15, 2008 Thanks, works great Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now