Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Помогите пожалуйста с проблемой выключения компа.   Найти похожие ветки 

 
NOX   (2004-06-26 14:50) [0]

Вызываю ExitWindowsEx( EWX_POWEROFF, 0 )  или с флагом EWX_SHUTDOWN, но ничего не происходит, а если поставить флаг EWX_FORCE , то происходит просто завершение сеанса, а не включение. В чём дело.
Спасибо.


 
GuAV ©   (2004-06-26 14:55) [1]


> ExitWindowsEx( EWX_POWEROFF, 0 )  или с флагом EWX_SHUTDOWN,

"или" нужно делать так EWX_SHUTDOWN or EWX_POWEROFF :)


 
Knight ©   (2004-06-26 23:09) [2]

Кстати, может кто знает... тут у Radmina на Win2k такой глюк. Даю команду выключить удалённый комп, он начинает завершать свою работу, затем идёт такой звук как при прямом выключении, т.е. замолкает винт, куллера, гаснет монитор, но... пости сразу (в полной тишине) заграется снова и на нём появляется надпись "Теперь питание компьютера можно выключить"... Почему?


 
ПсихЪ_клон   (2004-06-26 23:19) [3]

Я юзаю вот такую функцию:

function P7ExitWindows( RebootParam : Longword ) : boolean;
var
 TTokenHd: THandle;
 TTokenPvg: TTokenPrivileges;
 cbtpPrevious: DWORD;
 rTTokenPvg: TTokenPrivileges;
 pcbtpPreviousRequired: DWORD;
 tpResult: boolean;
const
 SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
begin
 if Win32Platform = VER_PLATFORM_WIN32_NT then
 begin
   tpResult := OpenProcessToken(GetCurrentProcess(),
     TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
     TTokenHd);
   if tpResult then
   begin
     tpResult := LookupPrivilegeValue(nil,
                                      SE_SHUTDOWN_NAME,
                                      TTokenPvg.Privileges[0].Luid);
     TTokenPvg.PrivilegeCount := 1;
     TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
     cbtpPrevious := SizeOf(rTTokenPvg);
     pcbtpPreviousRequired := 0;
     if tpResult then
       Windows.AdjustTokenPrivileges(TTokenHd,
                                     False,
                                     TTokenPvg,
                                     cbtpPrevious,
                                     rTTokenPvg,
                                     pcbtpPreviousRequired);
   end;
 end;
 Result := ExitWindowsEx(RebootParam, 0);
end;

Использование:

P7ExitWindows( EWX_POWEROFF or EWX_FORCE );


 
DeadMeat ©   (2004-06-27 00:04) [4]

> [2] Knight ©   (26.06.04 23:09)
Тоже заметил, поэтому делаю Switch off вместо Shutdown...
P.S. А где ты раздобыл руссификатор...??

---
...Death Is Only The Begining...


 
Knight ©   (2004-06-27 00:48) [5]

> DeadMeat ©   (27.06.04 00:04) [4]
> Тоже заметил, поэтому делаю Switch off вместо Shutdown...

Надо будет попробовать.

>P.S. А где ты раздобыл руссификатор...??
Для чего? Если для Radmina, то я вроде нигде не писал, что он русский.


 
DeadMeat ©   (2004-06-27 16:13) [6]

> [5] Knight ©   (27.06.04 00:48)
> Для чего? Если для Radmina, то я вроде нигде не писал, что он русский.
Ааа... Просто меня вот это смутило -
Даю команду выключить удалённый комп

---
...Death Is Only The Begining...


 
YuRock ©   (2004-06-27 16:24) [7]

> Вызываю ExitWindowsEx( EWX_POWEROFF, 0 )  или с флагом EWX_SHUTDOWN, но ничего не происходит

Естественно - нужно ведь привелегии вначале получить... Вот:

function ExitWindows: Boolean;
var
 hToken : THANDLE;
 tkp : TTokenPrivileges;
 rl : DWORD;
begin
 Result := False;

 OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken);
 if not (LookupPrivilegeValue(nil, LPSTR("SeShutdownPrivilege"), tkp.Privileges[0].Luid)) then begin
   MessageBox(0, "Не достаточно прав", "Ошибка", MB_ICONERROR);
   Exit;
 end;
 tkp.PrivilegeCount := 1;
 tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);

 Result := ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;


 
Knight ©   (2004-06-27 19:49) [8]


> [6] DeadMeat ©   (27.06.04 16:13)
> Ааа... Просто меня вот это смутило -
> Даю команду выключить удалённый комп

Тогда бы было так - Даю команду "Выключить удалённый комп"... :)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.105 c
3-1089937000
rosl
2004-07-16 04:16
2004.08.08
hint


1-1090482565
Виталя
2004-07-22 11:49
2004.08.08
Как сделать Hint для StringGrid многострочным ?


1-1090914213
gonta
2004-07-27 11:43
2004.08.08
Запуск приложения из службы


1-1090816197
ksa2002
2004-07-26 08:29
2004.08.08
Положение отчёта


14-1090393885
Kerk
2004-07-21 11:11
2004.08.08
Отличия мужской логики от женской





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский