Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.044 c
15-1175376233
Gero
2007-04-01 01:23
2007.04.29
Всем, кому интересна судьба DMClient


2-1176104753
Alex_C
2007-04-09 11:45
2007.04.29
Почему HWND_BROADCAST сообщение приходит 2 раза?


3-1171025705
Gin2
2007-02-09 15:55
2007.04.29
ADO - большой файл(~184 Мб) в блоб


2-1176237348
ppcumax
2007-04-11 00:35
2007.04.29
Как сделать паузу в цикле


15-1175146451
webman
2007-03-29 09:34
2007.04.29
Игра для детей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский