Тема: AHK: Вызов диалога «Завершение работы Windows»
Задача. Программно вызвать диалог «Завершение работы Windows». (Его вид зависит от версии ОС и пользовательских настроек — например, в WinXP это окошко с тремя цветными кнопками, если используется экран приветствия, или с выпадающим списком, если используется классическое окно входа.)
Нашёл решение на VB:
'The following code snippet displays the "Shut Down Windows" dialog.
'Is uses undocumented API function in shell32.dll
Private Declare Sub ShutDownDialog Lib "shell32.dll" Alias "#60" (ByVal hwndOwner As Long)
Private Sub cmdShowShutDown_Click()
ShutDownDialog hWnd
End Sub
С помощью RUNDLL32.EXE
rundll32 shell32,#60
функция #60 запускается, то же самое на AHK:
RunWait rundll32 shell32`,#60
но с помощью DllCall()
DllCall("shell32\#60")
ничего не происходит.
Почему? Какие ещё возможны решения (AHK не обязательно)?
--------------------
Да, я знаю, достаточно широко известны следующие два решения:
WinClose Program Manager
(или для большей надёжности
WinClose Program Manager ahk_class Progman ahk_exe explorer.exe
) и
ComObjCreate("Shell.Application").ShutdownWindows()
но они работают только при запущенном Проводнике.