Главная страница
    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.038 c
3-1088003789
gedd
2004-06-23 19:16
2004.08.08
Защита баз данных


4-1088235176
Sormy
2004-06-26 11:32
2004.08.08
Как извлечь версию файла из произвольного файла?


1-1090522594
Боян Георгиев
2004-07-22 22:56
2004.08.08
Как емулировать нажатие PrintScreen-a?


4-1088609549
Андрюшенька
2004-06-30 19:32
2004.08.08
Помогите!!! Windows


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