return я не приметил, всё работает!
Может return вы тоже скопировали и вставили? Где return там секции автовыполнения и конец.
В примере он для того и присутствует, чтоб вопросов не возникало, что куда копировать.
Без комментариев 
Irbis, согласен, исправил сообщение #2, добавлю сразу как придумаю однозначное название темы.
По аналогии, можно реализовать иное поведение скриптов:
OnMessage(Send_WM_KINGOFTHEHILL(DllCall("RegisterWindowMessage", "Str", "WM_KINGOFTHEHILL")), "Receive_WM_KINGOFTHEHILL")
Receive_WM_KINGOFTHEHILL(wParam, lParam)
{
If (lParam <> A_ScriptHWND) {
priorDetectHiddenWindows := A_DetectHiddenWindows
DetectHiddenWindows, On
WinKill, ahk_id %lParam%
DetectHiddenWindows, % priorDetectHiddenWindows? "On":"Off"
}
return true
}
Send_WM_KINGOFTHEHILL(WM_KINGOFTHEHILL)
{
PostMessage, WM_KINGOFTHEHILL, 0, A_ScriptHWND,, ahk_id 0xFFFF
return WM_KINGOFTHEHILL
}
Естественно, оба примера уместно было бы свести в один, но тогда не будет работать концепция «включение опции использованием #Include».