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

Вниз

Я в расстерянности...   Найти похожие ветки 

 
SleD   (2002-06-04 18:35) [0]

Мне нужно 1)перезагрузить компьютер под XP и 2)осуществить под XP спящий режим.
Объясняю ситуацию подробно:

при такой функции:
ExitWindowsEx(EWX_REBOOT or ewx_force,0); - ничего не происходит.
ExitWindows() с параметрами EW_RESTARTWINDOWS, EW_REBOOTSYSTEM, EW_EXITANDEXECAPP - приводит
к ЗАВЕРШЕНИЮ СЕАНСА??

SetSystemPowerState(true, true); - тоже приводит к заверешению сеанса?

Как можно сделать 1) и 2)???


 
Volj   (2002-06-04 18:42) [1]

А ты установил привилегию "SE_SHUTDOWN_NAME" ?


 
SleD   (2002-06-04 18:44) [2]

Можно поподробнее, а то я не очень ещё в программировании..


 
Song   (2002-06-04 18:54) [3]

Поподробней в FAQ


 
SleD   (2002-06-04 19:22) [4]

2Song

Не нашёл. :-(


 
Song   (2002-06-04 19:37) [5]

Да, действительно админы почему-то удалили эту тему. Ok, получай:

function SetPrivilege(aPrivilegeName : string;
aEnabled : boolean ): boolean;
var
TPPrev,
TP : TTokenPrivileges;
Token : THandle;
dwRetLen : DWord;
begin
Result := False;
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES
or TOKEN_QUERY, @Token );

TP.PrivilegeCount := 1;
if( LookupPrivilegeValue(nil, PChar( aPrivilegeName ),
TP.Privileges[ 0 ].LUID ) ) then
begin
if( aEnabled )then
TP.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
else
TP.Privileges[0].Attributes:= 0;

dwRetLen := 0;
Result := AdjustTokenPrivileges(Token,False,TP,
SizeOf( TPPrev ),
TPPrev,dwRetLen );
end;

CloseHandle( Token );
end;


function WinExit( iFlags : integer ) : boolean;
// возможные флаги:
// EWX_LOGOFF
// EWX_REBOOT
// EWX_SHUTDOWN
begin
Result := True;
if( SetPrivilege( "SeShutdownPrivilege", true ) ) then
begin
if( not ExitWindowsEx( iFlags, 0 ) )then
begin
Result := False;
end;
SetPrivilege( "SeShutdownPrivilege", False )
end
else
begin
Result := False;
end;
end;



 
SleD   (2002-06-04 20:43) [6]

Big Thanks, Song.


 
SleD   (2002-06-04 20:58) [7]

OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, @Token ); - на этой строке пишет, что
Types of actual and formal var parameters must be identical


 
Song   (2002-06-04 21:26) [8]

Нашёл я эту статью:
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988621105&n=15


 
SleD   (2002-06-04 21:28) [9]

OK. А про спящий режим не знаешь?


 
SleD   (2002-06-04 21:31) [10]

Опять проверил и:
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES orTOKEN_QUERY, hToken) then - на этой строке пишет, что
Types of actual and formal var parameters must be identical


 
SleD   (2002-06-04 21:36) [11]

И ещё один вопросик:
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external "KERNEL32.DLL";

Из-за этой функции программа под XP вобще отказывается запускаться. Выдаёт ошибку. Выход есть?


 
Song   (2002-06-04 21:37) [12]

Данная ф-ия не может применяться в 2000,NT или XP


 
SleD   (2002-06-04 21:39) [13]

Просто мне нужно отключить CTRL+ALT+DEL в XP.
Song, если тебе не сложно, ответь пожалуйста насчёт спящего режима и перезагрузки компьютера, просто мне надо уходить, а завтра тогда гляну.

Заранее спасибо!


 
SleD   (2002-06-05 09:11) [14]

HELP Pliz


 
Song   (2002-06-05 09:56) [15]

Перезагрузку я вам дал линк. Спящий режим - SetSystemPowerState()
CAD в XP не выключишь.


 
SleD   (2002-06-05 10:11) [16]

SetSystemPowerState() - не работает, т.к. в XP это приводит к завершению сеанса!

И это не работает (перезагрузка):
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES orTOKEN_QUERY, hToken) then - на этой строке пишет, что
Types of actual and formal var parameters must be identical


 
Song   (2002-06-05 10:17) [17]

У меня ничего не пишет:
procedure TForm1.Button1Click(Sender: TObject);
Var hToken:
THandle;tkp:
TTokenPrivileges;ReturnLength: Cardinal;
begin
IF OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
Begin
LookupPrivilegeValue(nil, "SeShutdownPrivilege",tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1; // one privelege to set
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
IF AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
End;
end;


 
SleD   (2002-06-05 10:23) [18]

ОК, а что по поводу спящего режима? У кого не спрашивал - никто не знает.


 
SleD   (2002-06-05 14:53) [19]

Pliz^^^^^^^^^^^^^


 
SleD   (2002-06-05 16:40) [20]

Ну, help somebody!


 
ZZ   (2002-06-05 16:59) [21]

А добавить ту-же привилегию не пробовал?


 
SleD   (2002-06-05 17:09) [22]

ZZ, можешь написать код?


 
ZZ   (2002-06-05 17:28) [23]

cм. Song © (05.06.02 10:17) Только вместо ExitWindowsEx SetSystemPowerState



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

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

Наверх




Память: 0.49 MB
Время: 0.006 c
7-60872
Ascan
2002-06-05 20:06
2002.08.19
пишем AntiFreeze


1-60681
ilg
2002-08-06 02:23
2002.08.19
Запуск в свернутом виде


1-60606
Aleksandr
2002-08-07 15:13
2002.08.19
Как лечить


3-60494
Старик
2002-07-29 13:58
2002.08.19
Структура таблиц


1-60582
sova
2002-08-08 07:51
2002.08.19
кнопки





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