Sets a shutdown order for a process relative to the other processes in the system.
#Include <WinAPIEx.au3>
_WinAPI_SetProcessShutdownParameters ( $iLevel [, $fDialog] )
| $iLevel | The shutdown priority. The system shuts down processes from high $iLevel values to low. The highest and lowest shutdown priorities are reserved for system components. This parameter must be in the following range of values. 0x0000-0x00FF - System reserved last shutdown range. 0x0100-0x01FF - Application reserved last shutdown range. 0x0200-0x02FF - Application reserved "in between" shutdown range. 0x0300-0x03FF - Application reserved first shutdown range. 0x0400-0x04FF - System reserved first shutdown range. All processes start at shutdown level 0x0280. | 
| $fDialog | [可选参数] Specifies whether display a retry dialog box for the user, valid values: TRUE - Display a retry dialog box if process takes longer than the specified timeout to shutdown. FALSE - Directly terminates the process. (Default) | 
| 成功: | 返回 1. | 
| 失败: | 返回 0 并设置 @error 标志为非 0 值. | 
在MSDN中搜索
#Include <APIConstants.au3>
#Include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
Opt('MustDeclareVars', 1)
If _WinAPI_GetVersion() < '6.0' Then
    MsgBox(16, 'Error', 'Require Windows Vista or later.')
    Exit
EndIf
Global $hForm, $Msg, $Button, $Check
$hForm = GUICreate('MyGUI', 200, 200)
$Button = GUICtrlCreateButton('', 73, 62, 54, 54, $BS_ICON)
GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 45)
GUICtrlSetTip(-1, 'Log off ' & @UserName)
$Check = GUICtrlCreateCheckBox('Block Windows shutdown', 10, 173, 144, 21)
GUIRegisterMsg($WM_QUERYENDSESSION, 'WM_QUERYENDSESSION')
GUISetState()
; 为当前进程设置最高的关闭优先级以防止终止其他进程.
_WinAPI_SetProcessShutdownParameters(0x03FF)
While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Button
            Shutdown(0)
        Case $Check
            If GUICtrlRead($Check) = $GUI_CHECKED Then
                _WinAPI_ShutdownBlockReasonCreate($hForm, 'This application is blocking system shutdown because the saving critical data is in progress.')
            Else
                _WinAPI_ShutdownBlockReasonDestroy($hForm)
            EndIf
    EndSwitch
WEnd
Func WM_QUERYENDSESSION($hWnd, $Msg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            If _WinAPI_ShutdownBlockReasonQuery($hForm) Then
                Return 0
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_QUERYENDSESSION