Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выключение компьютера [D5, NT4, WinXP]


alexsc ©   (2003-03-31 14:13:00) 

Уважаемые мастера. В Delphi выдается такая ошибка.
[Error] finish.pas(43): Ambiguous overloaded call to "AdjustTokenPrivileges"

В чем неточности.

procedure TForm_F.BitBtn2Click(Sender: TObject);
var
PrevState,tkp : _Token_Privileges;
ph, handle1, hToken1 : THandle;
tp,prevst:TTokenPrivileges;
rl:DWORD;
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,ph);
LookupPrivilegeValue(Nil,"SeShutdownPrivilege",tp.Privileges[0].Luid);
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=2;
AdjustTokenPrivileges(ph,FALSE,tp,SizeOf(prevst),prevst,rl);
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
end;

Спасибо, Алексей.


alexsc   (2003-04-03 09:42:00) [1]

Всем огромное спасибо, перетащил в основную форму и все заработало, какой-то ГЛЮК ешкин кот. Отсюда и все недопонимание мной Вас.
Алексей


Игорь Шевченко   (2003-03-31 17:49:00) [2]

alexsc (31.03.03 16:05)

var
hToken : THANDLE;
tp : TOKEN_PRIVILEGES;
returnedlength : DWORD;


alexsc   (2003-03-31 16:53:00) [3]

Это может зависить от операционки WINXP и версии лицензионно-чистой версии Delphi 5 Pro
Я же не издеваюсь задавая такие вопросы Вам.


Clickmaker   (2003-03-31 16:14:00) [4]

Не поленился, скомпилил твой код. Не ругается. Хоть с @, хоть без...


alexsc   (2003-03-31 16:05:00) [5]

To Intell © win32check(exitwindowsex(ewx_shutdown, 0));
Не вырубает комп без вопросов.
Говорит, что нет прав

To Игорь Шевченко © (31.03.03 15:15)
AdjustTokenPrivileges(hToken, FALSE, tp, 0,nil,Returnedlength);
А что за типы параметров, тк все равно ругается.




Intell   (2003-03-31 15:25:00) [6]

winexec(pchar("RUNDLL32.EXE user,exitwindows"),sw_shownormal);
или лучше
win32check(exitwindowsex(ewx_shutdown, 0));

Вырубает комп без вопросов.


Игорь Шевченко   (2003-03-31 15:15:00) [7]

AdjustTokenPrivileges(hToken, FALSE, tp, 0,
nil, returnedlength);


alexsc   (2003-03-31 14:39:00) [8]

Спасибо за ответ, но к сожалению программа продолжает ругаться.


Clickmaker   (2003-03-31 14:17:00) [9]

function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
const NewState: TTokenPrivileges; BufferLength: DWORD;
var PreviousState: TTokenPrivileges; var ReturnLength: DWORD): BOOL; stdcall; overload;
{$EXTERNALSYM AdjustTokenPrivileges}
function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
const NewState: TTokenPrivileges; BufferLength: DWORD;
PreviousState: PTokenPrivileges; var ReturnLength: DWORD): BOOL; stdcall; overload;

То бишь можно и var подсунуть и указатель. В твоем случае видимо нужно так
AdjustTokenPrivileges(ph,FALSE,tp,SizeOf(prevst), @prevst,rl);


Наверх

Титульная страница Поиск, карта сайта Написать письмо