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

Вниз

Уважаемые мастера помогите с выключение компьютера под WinXP   Найти похожие ветки 

 
Дмитрий С.   (2003-02-14 23:44) [0]

Во время исполнения следующего кода:

if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength)then
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);


выдает ошибку:

[Error]: There is no overloaded version of "AdjustTokenPrivileges" that can be called with these arguments

Что не так делаю?
Плизз!!!


 
xfrost   (2003-02-16 23:07) [1]

Короче я не знаю как у тебя но у мня следующая фишка работает, я сам долго с этимм маялся.
С начала определи версию винды
function TmainForm.GetWinVersion: String;
var
VersionInfo : TOSVersionInfo;
OSName : String;
begin
// Размер записи
VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );

if Windows.GetVersionEx( VersionInfo ) then
begin
with VersionInfo do
begin
case dwPlatformId of
VER_PLATFORM_WIN32s : OSName := "Win32s";
VER_PLATFORM_WIN32_WINDOWS : OSName := "Windows 98";
VER_PLATFORM_WIN32_NT : OSName := "Windows NT";
end; // case dwPlatformId
Result := OSName + " Version " + IntToStr( dwMajorVersion ) + "." + IntToStr( dwMinorVersion ) ;
end; // with VersionInfo
end // if GetVersionEx
else
Result := "Версия не определена";
end;

затем выбираем тип вырубания
procedure TMainForm.ShutDown;
const
SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; // Borland forgot this declaration
var
hToken : THandle;
tkp : TTokenPrivileges;
tkpo : TTokenPrivileges;
zero : DWORD;
begin
if Pos( "Windows NT", GetWinVersion) = 1 then // we"ve got to do a whole buch of things
begin
zero := 0;
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, "Exit Error", "OpenProcessToken() Failed", MB_OK );
Exit;
end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, "Exit Error", "OpenProcessToken() Failed", MB_OK );
Exit;
end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)


// SE_SHUTDOWN_NAME
if not LookupPrivilegeValue( nil, "SeShutdownPrivilege" , tkp.Privileges[ 0 ].Luid ) then
begin
MessageBox( 0, "Exit Error", "LookupPrivilegeValue() Failed", MB_OK );
Exit;
end; // if not LookupPrivilegeValue( nil, "SeShutdownPrivilege" , tkp.Privileges[0].Luid )
tkp.PrivilegeCount := 1;
tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
if Boolean( GetLastError() ) then
begin
MessageBox( 0, "Exit Error", "AdjustTokenPrivileges() Failed", MB_OK );
Exit;
end // if Boolean( GetLastError() )
else
ExitWindowsEx( EWX_POWEROFF , 0 ); // if OSVersion = "Windows NT"
end
else
begin // just shut the machine down
ExitWindowsEx( EWX_SHUTDOWN or EWX_FORCE , 0 ); // if OSVersion = "Windows 98"
end; // else
end;

Весь прикол (по крайней мере у меня) в том что бы использовать только POWEROFF



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

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

Наверх




Память: 0.45 MB
Время: 0.008 c
14-30545
S-S
2003-03-13 15:08
2003.04.10
Двухмиониторное отображение


6-30502
Sour
2003-02-16 17:38
2003.04.10
Получить HTML текст страницы


1-30440
XTC
2003-03-27 09:43
2003.04.10
Резидентная программа


7-30612
Stan
2003-02-13 00:56
2003.04.10
Проблема со скрытием программы от ctrl+alt+del


14-30525
NetKnight
2003-03-24 09:25
2003.04.10
Как создавать вындовые хелпы ?





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