type
TSHQueryRBInfo = packed record
cbSize : DWORD;
i64Size,
i64NumItems : TLargeInteger;
end;
PSHQueryRBInfo = ^TSHQueryRBInfo;
function SHEmptyRecycleBin(hwnd: HWND; pszRootPath: PChar;
dwFlags: DWORD): HRESULT; stdcall;
external 'shell32.dll' name 'SHEmptyRecycleBinA';
function SHQueryRecycleBin (pszRootPath: PChar;
var SHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall;
external 'Shell32.dll' name 'SHQueryRecycleBinA';
var
Form1: TForm1;
implementation
{$R *.dfm}
// Просмотр состояния корзины (краткая информация)
procedure TForm1.btnGetRecicleBinFileCountClick(Sender: TObject);
var
Info: TSHQueryRBInfo;
Err: HRESULT;
begin
ZeroMemory(@Info, SizeOf(Info));
Info.cbSize := SizeOf(Info);
Err := SHQueryRecycleBin(nil, Info);
if Err = S_OK then
ShowMessage(Format('Всего в корзине %d эелементов, их общий размер: %d',
[Info.i64NumItems, Info.i64Size]))
else
ShowMessage(SysErrorMessage(Err));
end;
Программа на языке Delphi, которая отображает состояние корзинки, в частности, количество элементов и их общий размер.
Разбивка кода:
Единицы и интерфейсы
Единица Unit1 содержит раздел интерфейса, импортирующий различные библиотеки Windows (например, Windows, Messages, SysUtils) и определяет константы для функций оболочки.
Формы и контролы
Форма TForm1 имеет три кнопки: btnGetRecicleBinFileCount, btnEmptyRecicleBin и btnDelToReciclebin. Первая кнопка кликается, чтобы получить состояние корзинки, что вызывает процедуру btnGetRecicleBinFileCountClick.
Процедура btnGetRecicleBinFileCountClick
Эта процедура:
1. Создает запись TSHQueryRBInfo, чтобы хранить информацию о корзинке.
2. Устанавливает поле cbSize в размер записи в байтах.
3. Вызывает функцию SHQueryRecycleBin, чтобы получить информацию о корзинке. Функция принимает три параметра: pszRootPath (установлен в nil, что указывает на корень корзинки), dwFlags (установлен в 0, что означает отсутствие специальных флагов) и указатель на запись TSHQueryRBInfo.
4. Проверяет, была ли операция успешной, проверяя значение возвращаемого значения функции SHQueryRecycleBin. Если оно равно S_OK, отображается сообщение об ошибке с информацией о состоянии корзинки (т.е., количество элементов и их общий размер). В противном случае отображается сообщение об ошибке.
Дополнительные функции
Единица также определяет два внешних функции оболочки:
1. SHEmptyRecycleBin - очищает корзинку
2. SHQueryRecycleBin - получает информацию о корзинке
Эти функции импортируются из библиотеки shell32.dll с помощью вызова stdcall.
В целом, этот код демонстрирует, как использовать Delphi для взаимодействия с оболочкой Windows и получения информации о корзинке.
Представлен код на Delphi, демонстрирующий способ просмотра состояния корзины компьютера и отображения количества элементов и их общего размера.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.