0

我希望能夠防止Windows 7上的定期關機。我發現這個AutoIt腳本,但它沒有真正點擊強制關機對話框上的取消按鈕。Windows 7阻止關機

有人可以測試它並告訴我什麼是錯的?

$WM_QUERYENDSESSION = 0x11 
GUIRegisterMsg($WM_QUERYENDSESSION, "Cancel_Shutdown") 
$Hwnd = GUICreate("PreventShutdownGUI") 
;~ GUISetSTate(@SW_SHOW) 


_ShutdownBlockReasonCreate($hwnd, "Sorry, AutoIt > Windows") 
TrayTip("Shutdown Blocker - Started", "Denies shutdowns from now on.", 20) 
While Sleep(100) 
WEnd 
_ShutdownBlockReasonDestroy($hwnd) 

Func _ShutdownBlockReasonCreate($Hwnd, $wStr) 
    ; http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx 
    ; [email protected] 
    Local $aResult = DllCall("User32.dll", "int", "ShutdownBlockReasonCreate", "hwnd", $Hwnd, "wstr", $wStr) 
    If @error Then Return SetError(1,0,0) 
    Return $aResult[0] 
EndFunc 

Func _ShutdownBlockReasonDestroy($Hwnd) 
    Local $aResult = DllCall("User32.dll", "int", "ShutdownBlockReasonDestroy", "hwnd", $Hwnd) 
    If @error Then Return SetError(1,0,0) 
    Return $aResult[0] 
EndFunc 

Func Cancel_Shutdown($hWndGUI, $MsgID, $WParam, $LParam) 
    ; This HAS to be here to capture the endsession... 
    AdlibRegister("Cancel_ShutdownResolver",50) 
    Return False 
EndFunc 

Func Cancel_ShutdownResolver() 
    Local $iOpt = Opt("WinTitleMatchMode",4),$hwnd = WinGetHandle("[CLASS:BlockedShutdownResolver]") 
    Opt("WinTitleMatchMode",$iOpt) 
    If $hwnd Then 
     If @OSVersion = "WIN_7" Then ControlClick($hwnd,"","[CLASS:Button; INSTANCE:1]") 
     If @OSVersion <> "WIN_7" Then ControlClick($hwnd,"","[CLASS:Button; INSTANCE:2]") 
     AdlibUnRegister("Cancel_ShutdownResolver") 
     TrayTip("Shutdown Blocker - Shutdown denied", "Denied shutdown successfull!", 5) 
     _DeineFunktion() ; <================ Hier musst du deine Funktion einfügen 
    EndIf 
EndFunc 

Func _DeineFunktion() 
    MsgBox(0,"","Das hier ist deine Funktion ;) - Danach musst du erneut _ShutdownBlockReasonDestroy($hwnd) aufrufen, und einen neuen Shutdown machen.") 
EndFunc 
+0

代碼*僅適用於我。 Windows 7英語。 –

回答

2

看起來對我來說,這是防止autoit功能的方式被殺..

_deineFunction()(德語爲你的函數)是你不想打死的功能。

+0

你很錯:D – VisaToHell

+2

真的嗎?織補;-) – DZittersteyn