Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как удалить файл из корзины (Не все)


Автор: Ak47black 6.4.2007, 12:17
Как удалить один файл из Recycle Bin (Я имею в виду не как очистить всю корзину)
Например File.exe
Вот с этим кодом я обычно удаляю файлы и целые директории
Код

uses ShellApi;
...
var sh : SHFILEOPSTRUCT;
begin
...
  sh.Wnd := Application.Handle;
  sh.wFunc := FO_DELETE;
  sh.pFrom := 'c:\\test\0';
  sh.pTo := nil;
  sh.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
  sh.hNameMappings := nil;
  sh.lpszProgressTitle := nil;
  SHFileOperation (sh);
... 

Но в случае с Recycle Bin у меня чтото невыходит 
Пробовал сделать путь
Цитата

::{645ff040-5081-101b-9f08-00aa002f954e}\File.exe
И
Recycle Bin\File.exe

Но у меня невыходит  smile .
В DRKB3 написано 
Цитата

Данная функция позволяет производить копирование, перемещение, 
переименование и удаление (в том числе и в Recycle Bin) объектов файловой системы. 


Добавлено @ 12:19

Автор: Sunvas 6.4.2007, 12:57
А зачем удалять файл в корзину, а потом из корзины, если можно сразу удалять минуя корзину?

Автор: Ak47black 6.4.2007, 13:04
Ну так просто надо мне.
Делаю на подобии Radmin проги, проект.

Добавлено @ 13:18
 Чета SHFileOperation глючит.  smile
Лан создам новую тему что-бы нелепить кучю вопросов в одну.

Автор: ama_kid 6.4.2007, 13:33
Посмотри http://www.codeproject.com/shell/recyclebin.asp на CodeProject, может быть пригодиться. Там даже исходник есть, правда на MSVC++ (его прикрепляю в аттаче)

Автор: Yanis 6.4.2007, 13:56
Наверняка можно узнать папку корзины и удалить оттуда нужные файлы.

Автор: Ak47black 6.4.2007, 14:05
Yanis, только какой путь.
Цитата

::{645ff040-5081-101b-9f08-00aa002f954e}\\File.exe

То неидёт.

Автор: Yanis 6.4.2007, 14:08
Цитата(Ak47black @  6.4.2007,  15:05 Найти цитируемый пост)
Yanis, только какой путь.

Это не путь, это глобальный идентификатор. 
Путь это:
«<быква диска на котором находится папка корзины>:\RECYCLER\<SID пользователя (или комьютера. по моему пользователя)>\»

Автор: Ak47black 6.4.2007, 16:39
SID пользователя
Это что такое, как мне его получить?

Автор: Rennigth 6.4.2007, 16:47
http://forum.vingrad.ru/topic-136694.html

Добавлено через 1 минуту и 59 секунд
Вообщем это текущий юзер. Примеры по ссылке это немного не то, но выцаратапь надо от-туда нужное смогешь?

Автор: Yanis 6.4.2007, 17:04
Цитата(Ak47black @  6.4.2007,  17:39 Найти цитируемый пост)
Это что такое, как мне его получить?

Ну как что? Security ID!
http://www.swissdelphicenter.ch/torry/showcode.php?id=2095

Автор: Ak47black 6.4.2007, 17:25
Добрался я до папки корзины ,но удалить немогу програмно.
Ладно спасибо как-нибудь обойду этот момент в своей проге.

Автор: Yanis 6.4.2007, 17:33
Цитата(Ak47black @  6.4.2007,  18:25 Найти цитируемый пост)
но удалить немогу програмно.

Почему? Какая ошибка?

Автор: Ak47black 6.4.2007, 17:36
Цитата

Cannot delete file: Cannot read from the source file or disk.

Код
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  sh : SHFILEOPSTRUCT;
begin
  sh.Wnd := Application.Handle;
  sh.wFunc := FO_DELETE;
  sh.pFrom := 'C:\RECYCLER\S-1-5-21-1220945662-287218729-839522115-1003\h.txt';
  sh.pTo := nil;
  sh.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
  sh.hNameMappings := nil;
  sh.lpszProgressTitle := nil;
  SHFileOperation (sh);
end;


Добавлено @ 17:41
Все проблема решена, нашол в DRKB3 статью Просмотр состояния корзины от Rouse_, там в примере всё есть.
Спасиба всем за участие.

Автор: Yanis 6.4.2007, 17:43
Цитата(Ak47black @  6.4.2007,  18:36 Найти цитируемый пост)
Код

Там нет таких файлов.

Автор: Ak47black 6.4.2007, 17:47
Не ну файл то есть я проверял.
Но SHFileOperation с корзиной нехочет работать.
Yanis, Спасиб за помошь +.

Автор: Yanis 6.4.2007, 17:47
Сам убедись:
Код
dir C:\RECYCLER\S-1-5-21-1220945662-287218729-839522115-1003\ /b


Вобщем тебе надо получать имена удалённых файлов и соответствующие имена в этой папке.
Смотри ссылки:
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=main_panel&article=2795
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=main_panel&article=2791

Автор: Ak47black 6.4.2007, 17:53
Хмм.. я даж и незнал что там имена разные.
Буду разбирать.

Автор: Yanis 6.4.2007, 17:58
Цитата(Ak47black @  6.4.2007,  18:53 Найти цитируемый пост)
Мда.. я даж и незнал что там имена разные.

Вот видишь!
Ещё одно подтверждение тому, что эксплорер дурит ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)