Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
3-60499
vadim_S
2002-07-29 13:41
2002.08.19
Отбор записей


1-60671
fff
2002-08-05 18:18
2002.08.19
Люди!!!!!!! Срочно помогите, быстрейййййй!!!!


1-60686
MikeZ
2002-08-05 15:06
2002.08.19
Управление WinAmp ом


14-60858
TTCustomDelphiMaster
2002-07-25 10:29
2002.08.19
Вопрос к математикам.


6-60765
pavl1k1
2002-06-04 14:17
2002.08.19
Передача файлов по сокетам