![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| qaz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 407 Регистрация: 25.3.2002 Репутация: нет Всего: 4 |
Чем можно заменить ф-цию ExitWindpwsEx (ShutDown) и ExitWindpwsEx (Reboot) - в 98 сносно работает, но в ХР только LogOff делает вместо всего этого. Как быть?
-------------------- |
|||
|
||||
| Garik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Клуба Сообщений: 216 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 4 |
Скажу сразу, сам не пробовал и не знаю, прокатит ли это в ХР, но есть еще такой вариант:
rundll32 shell32,SHExitWindowsEx 1 - выключение rundll32 shell32,SHExitWindowsEx 2 - перезагрузка. Ну, а запускать через ShellExecute например. --------------------
Программист - это не профессия. Это диагноз... |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Я тоже подумал об этом способе, но XP что-то не очень хочет так делать.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| qaz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 407 Регистрация: 25.3.2002 Репутация: нет Всего: 4 |
Не хотить!
No such entry in shel32 Ещё какие нить варианты будут? -------------------- |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Была такая еще функция, только я не помню где ExitKernel, по моему то-ли в User.EXE то ли в чем то подобном. Поищи по системным файлам в списках экспортируемых функций. Незнаю как в XP а предыдущих виндах закрывала винды мгновенно и без запросов, правда не давала и другим программам что либо закрыть. Кстати, а посылать Explorer сообщение wm_quit не пробовали?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| VitSoft |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 24.3.2002 Репутация: нет Всего: нет |
да все работает
ExitWindowsEx: ... Windows NT/2000/XP: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, see Privileges. HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) error("OpenProcessToken"); // Get the LUID for the shutdown privilege. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); // Cannot test the return value of AdjustTokenPrivileges. if (GetLastError() != ERROR_SUCCESS) error("AdjustTokenPrivileges"); // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) error("ExitWindowsEx"); Good Luck VitSoft http://www.development.efficientit.com |
|||
|
||||
| qaz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 407 Регистрация: 25.3.2002 Репутация: нет Всего: 4 |
Вот это работает. Сенкс.
Только вот ещёё одна проблемма: при запуске функции ExitWindowsEx() в 98 комп сам вырубался без никаких вопросов (типа "теперь питание можно выключить"), а по предложенной схеме ХР умничать начинает - что теперь вам всё дозволено и выключайте комп руками .... Как от этого избавиться можно? -------------------- |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Тут, мне кажется, уже надо писат Биллу.
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |