:: MVP ::
|
|
:: RSS ::
|
|
|
Как удалить файл в корзину?
// Способ первый
uses
{...,} ShlObj, ActiveX, ShellAPI;
procedure DelToRecycleBin(fName: string);
var
fOperation: IFileOperation;
DelItem: IShellItem;
begin
if Succeeded(CoCreateInstance(CLSID_FileOperation, Nil, CLSCTX_INPROC_SERVER,
IID_IFileOperation, fOperation)) then
begin
// Устанавливаем флаги выполняемой операции
fOperation.SetOperationFlags(FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT);
// Создаем объект IShellItem из пути к файлу
if Succeeded(SHCreateItemFromParsingName(PChar(fName), nil, IID_IShellItem, DelItem)) then
begin
// Подготавливаем операцию удаления файла
if Succeeded(fOperation.DeleteItem(DelItem, nil)) then
begin
// Выполняем операцию
fOperation.PerformOperations;
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DelToRecycleBin('c:\test.txt');
end;
// Способ второй
uses
{...,} ShellAPI;
function DeleteFile( sFileName: string ): boolean;
var
fos: TSHFileOpStruct;
begin
sFileName := sFileName + #0;
FillChar( fos, SizeOf( fos ), 0 );
with fos do
begin
wFunc := FO_DELETE;
pFrom := PChar( sFileName );
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
end;
Result := ( 0 = ShFileOperation( fos ) );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFile( 'c:\test.txt' );
end;
// Способ третий
uses
{...,} ShellAPI;
function DeleteFile( const FileName: string; Wnd: HWND = 0 ): boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar( FileOp, SizeOf( FileOp ), 0 );
if Wnd = 0 then
Wnd := Application.Handle;
FileOp.Wnd := Wnd;
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar( FileName );
FileOp.fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI or FOF_SILENT;
Result := ( SHFileOperation( FileOp ) = 0 ) and ( not FileOp.fAnyOperationsAborted );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFile( 'c:\test.txt', Handle );
end;
|
Как очистить корзину?
procedure EmptyRecycleBin;
const
SHERB_NOCONFIRMATION = $00000001;
SHERB_NOPROGRESSUI = $00000002;
SHERB_NOSOUND = $00000004;
type
TSHEmptyRecycleBin = function ( Wnd: HWND; pszRootPath: PChar;
dwFlags: DWORD): HRESULT; stdcall;
var
SHEmptyRecycleBin: TSHEmptyRecycleBin;
LibHandle: THandle;
begin
LibHandle := LoadLibrary( PChar( 'Shell32.dll' ) );
if LibHandle <> 0 then
@SHEmptyRecycleBin := GetProcAddress( LibHandle, 'SHEmptyRecycleBinA' )
else
begin
MessageDlg( 'Failed to load Shell32.dll.', mtError, [mbOK], 0 );
Exit;
end;
if @SHEmptyRecycleBin <> nil then
SHEmptyRecycleBin( Application.Handle, nil,
SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND );
FreeLibrary( LibHandle );
@SHEmptyRecycleBin := nil;
end;
|
Как показать корзину Windows?
uses
{...,} ActiveX, ShlObj, ShellApi;
procedure FreePidl( pidl: PItemIDList );
var
allocator: IMalloc;
begin
if Succeeded( ShlObj.SHGetMalloc( allocator ) ) then
begin
allocator.Free( pidl );
{$IFDEF VER90}
allocator.Release;
{$ENDIF}
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
exInfo: TShellExecuteInfo;
begin
FillChar( exInfo, SizeOf( exInfo ), 0 );
with exInfo do
begin
cbSize := SizeOf( exInfo );
fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_IDLIST;
Wnd := Handle;
nShow := SW_SHOWNORMAL;
lpVerb := 'open';
ShGetSpecialFolderLocation( Handle, CSIDL_BITBUCKET, PItemIDLIst( lpIDList ) );
end;
ShellExecuteEx( @exInfo );
FreePIDL( exInfo.lpIDList );
end;
|
Как изменить заголовок корзины?
uses
{...,} Registry;
procedure RenameRecycle( NewName: string );
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey( '\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}', false );
Reg.WriteString( '', NewName );
Reg.CloseKey;
Reg.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RenameRecycle( 'Помойка' );
end;
// Чтобы увидеть изменения, нужно перезагрузить компьютер
|
При использовании материала - ссылка на сайт обязательна
|
|