Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
11th
Ноя
Нужен ли CloseHandle?
Posted by bullvinkle under Пост-обзор
Здравс
твуйте. Скажите пожалуйста нужен ли в конце этой процедуры CloseHandle?
procedure ShutdownComputer;
var
hToken: THandle;
tkp, prevst: TTokenPrivileges;
rl: DWORD;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := 2;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(prevst), prevst, rl);
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
Я ее нашел поиском по форуму, и не до конца понимаю что к чему в ней
Вызов CloseHandle — нужен.
Если, конечно, вы хотите писать нормальный качественный код, а не говно-код (см. пример два).
Ambiguous overloaded call to ‘AdjustTokenPrivileges’ |
Это значит, что в программе есть две AdjustTokenPrivileges, а компилятор не может понять, какую из них вызывать, потому что параметры, которые ты в неё передаёшь, подходят обоим вариантам.
Это бывает в двух случаях:
— у тебя подключено два разных модуля, в обоих из них есть overload-варианты AdjustTokenPrivileges. Решение в этом случае — явно указать префикс модуля. Например: Windows.AdjustTokenPrivileges. Или JvWindows.AdjustTokenPrivileges. Или… кто там у тебя там, я не знаю.
— в одном модуле есть несколько вариантов AdjustTokenPrivileges, но один или несколько параметров, которые ты передаёшь в процедуру, подходят под несколько вариантов. Обычно это бывает когда ты не указываешь опциональные параметры (не твой случай, но вообще бывает), либо когда параметры имеют слишком общий тип, который можно преобразовать как к одному типу (в первой AdjustTokenPrivileges), так и ко второму (во второй AdjustTokenPrivileges). Как решить — Ctrl + щелчок на AdjustTokenPrivileges и смотрим, какие в точности параметры она требует. Затем даём ей именно эти параметры, а не такие, которые лишь совместимы с ними.
Close the access token handle returned through the TokenHandle parameter by calling CloseHandle. |
«Just follow the rules — nobody gets hurt» ©
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)