Форум: "WinAPI";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизКак вызвать стандартное приглашение к перезагрузке? Найти похожие ветки
← →
Wolfram © (2006-11-28 08:00) [0]После установки драйверов и некоторых других программ система выводит диалоговое окно типа «Новые параметры вступять в силу после перезагрузки системы. Произвести сейчас?» или «Для завершения установки необходимо перезапустить систему. Произвести сейчас?». Так вот, можно ли как-то из своей программы вывести это окно, чтобы самому не вызывать MessageBox, а потом делать рибут?
← →
Dmitrij_K (2006-11-28 08:17) [1]Что тебе MessageBox сделал, что ты его так не любишь?
← →
Wolfram © (2006-11-28 08:51) [2]
> Dmitrij_K (28.11.06 08:17) [1]
> Что тебе MessageBox сделал, что ты его так не любишь?
Блин, обясняю на пальцах. Чтобы сделать то, что мне нужно, надо написать примерно такой код:
function GetPrivilege: boolean;
var
handle, ph: THandle;
pid: DWORD;
luid: TLargeInteger;
priv: TOKEN_PRIVILEGES;
begin
if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then
begin
pid := GetCurrentProcessId;
ph := OpenProcess(PROCESS_ALL_ACCESS, false, pid);
if OpenProcessToken(ph, TOKEN_ADJUST_PRIVILEGES, handle) then
if LookupPrivilegeValue(nil, "SeShutdownPrivilege", luid) then
begin
priv.PrivilegeCount := 1;
priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
priv.Privileges[0].Luid := luid;
result:=AdjustTokenPrivileges(handle, false, priv, 0, nil, pid);
exit;
end;
result:=false;
end
else result:=true;
function Reboot: boolean;
begin
if GetPrivilege then result:=ExitWindowsEx(EWX_REBOOT, 0)
else result:=false;
end;
begin
...
if MessageBox(..............)=IDYES then Reboot;
...
end.
А, может быть, проще вызвать что-то типа WindowsRebootByUserRequest(); ?
← →
Anatoly Podgoretsky © (2006-11-28 09:11) [3]> Wolfram (28.11.2006 08:51:02) [2]
Да запросто
procedure WindowsRebootByUserRequest;
begin
...
if MessageBox(..............)=IDYES then Reboot;
...
end;
WindowsRebootByUserRequest;
← →
Rouse_ © (2006-11-28 09:32) [4]InitiateSystemShutdown
← →
Wolfram © (2006-11-28 09:47) [5]
> Anatoly Podgoretsky ©
> Да запросто
Народ, я конечно вам очень признателен за то, что вы мне объясняете как можно идти в обход (что я и сам прекрасно знаю), но я задал конкретный вопрос: Как вызвать стандартное приглашение к перезагрузке?
Стандартное блин, а не своё!
← →
xShadow © (2006-11-28 09:55) [6]http://www.swissdelphicenter.ch/torry/showcode.php?id=1232
← →
Rouse_ © (2006-11-28 13:35) [7]
> вопрос: Как вызвать стандартное приглашение к перезагрузке?
>
> Стандартное блин, а не своё!
Ну тогда еще раз обьясняю, InitiateSystemShutdown...
Так понятно?
← →
Wolfram © (2006-11-29 06:23) [8]
> Rouse_ ©
> Ну тогда еще раз обьясняю, InitiateSystemShutdown... Так
> понятно?
Да... что в лоб, что по лбу...
Мне нужно СПРОСИТЬ у юзера разрешения на рибут! Так понятно? Нафиг мне это окно обратного отсчёта! Проще уже написать WinExec("shutdown -r -t 0", SW_HIDE); и не парится.
Ладно, чем эту демагогию разводить, проще самому всё ручками сделать.
← →
Rouse_ © (2006-11-29 09:26) [9]
> Мне нужно СПРОСИТЬ у юзера разрешения на рибут!
Понял...
> После установки драйверов и некоторых других программ система
> выводит диалоговое окно типа «Новые параметры вступять в
> силу после перезагрузки системы. Произвести сейчас?» или
> «Для завершения установки необходимо перезапустить систему.
> Произвести сейчас?».
Этот диалог выводит не система, а инсталятор, сам, ручками...
← →
DVM © (2006-11-29 10:58) [10]Вот ведь раздули из ничего слона!
← →
Джо © (2006-11-29 18:02) [11]> [9] Rouse_ © (29.11.06 09:26)
> Этот диалог выводит не система, а инсталятор, сам, ручками...
Да в системе тоже есть такой диалог, при изменении некоторых настроек. Но он тривиальный — "Do you want etc" и Yes/No. Так что проблемы автора, действительно, непонятны.
← →
Eraser © (2006-11-30 16:24) [12]> [0] Wolfram © (28.11.06 08:00)
скриншот "стандартного окна" в студию!
← →
vidiv © (2006-12-04 18:04) [13]
function SetupPromptReboot(FileQueue: Pointer; Owner: HWND; ScanOnly: BOOL): Integer; stdcall; external "SetupApi.dll" name "SetupPromptReboot";
или
uses SetupApi
SetupPromptReboot(nil, handle, false);
← →
Джо © (2006-12-04 18:14) [14]> [13] vidiv © (04.12.06 18:04)
Крайне нехитрый диалог, не так ли? :)
← →
Eraser © (2006-12-04 18:27) [15]> [14] Джо © (04.12.06 18:14)
который к тому же не поддерживает стили XP... всегда меня "добивал" дизайн данного диалога )
← →
vidiv © (2006-12-04 18:37) [16]
> Джо © (04.12.06 18:14) [14]
> Крайне нехитрый диалог, не так ли? :)
Ну почему же. Обычный диалог при нажатии на Да автоматически ребут не делает =)
← →
Джо © (2006-12-04 18:39) [17]> [16] vidiv © (04.12.06 18:37)
>
> > Джо © (04.12.06 18:14) [14]
> > Крайне нехитрый диалог, не так ли? :)
>
> Ну почему же. Обычный диалог при нажатии на Да автоматически
> ребут не делает =)
А этот делает (не проверял)? Тогда, возможно, мой скепсис и неуместен. Иногда может оказаться полезным сей диалог.
← →
vidiv © (2006-12-04 18:45) [18]Делает-делает, назло =)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.038 c