Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Всё та же корзина 
V
    Опции темы
Antony41
  Дата 9.1.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



В общем проблема следующая:
После долгого и упорного мучения, я нашёл информацию, для работы с корзиной.
1. Я не нашёл ни исходного кода ни статьи как восстанавливать файлы из корзины списком,
2. В общем первая еще куда ни шло, но для некоторых файлов, стоит атрибут только чтение, и при их восстановлении, появляется окно с запросом типа вы действительно собираетесь переместить доступный только для чтения файл..., необходимо установить параметр который отвечает "Да для всех" на все вопросы. Что то вроде FOF_NOCONFIRMATION, при удалении файла в корзину.
3. Можно попробовать снять атрибуты файла до восстановления, и уставить обратно после восстановления. От сюда и вопрос куда копать к атрибутам в корзине? (Возможно это и невозможно, так как в окне свойства файла, когда он в корзине менять атрибуты нельзя).


копал вот что раскопал:
в модуле ShlObj.pas есть строки
Код

{   BOOL fShowAllObjects : 1;
    BOOL fShowExtensions : 1;
>>BOOL fNoConfirmRecycle : 1;<< What is it?
    BOOL fShowSysFiles : 1;
    BOOL fShowCompColor : 1;
    BOOL fDoubleClickInWebView : 1;
    BOOL fDesktopHTML : 1;
    BOOL fWin95Classic : 1;
    BOOL fDontPrettyPath : 1;
    BOOL fShowAttribCol : 1;
    BOOL fMapNetDrvBtn : 1;
    BOOL fShowInfoTip : 1;
    BOOL fHideIcons : 1;
    UINT fRestFlags : 3;}


Еще есть вот что:
источник: http://www.codeproject.com/KB/shell/recyclebin.aspx
Код

void CRecycleBinDlg::OnChkrbin() 
{
    UpdateData (TRUE);
    if (TRUE == m_ChkRBin)
    {
        LPPIDLSTRUCT stPIDL;
        LPITEMIDLIST ppidl;
        pfSHChangeNotifyRegister SHChangeNotifyRegister;
        
        SHChangeNotifyRegister
                = (pfSHChangeNotifyRegister)GetProcAddress (m_hShell32, 
                                                           MAKEINTRESOURCE(2));
        
        if (NULL != SHChangeNotifyRegister)
        {
            if(SHGetSpecialFolderLocation(GetSafeHwnd(),CSIDL_BITBUCKET, 
                                          &ppidl) != NOERROR)
            {
                AfxMessageBox(_T("GetSpecialFolder problem"));
            }
            stPIDL.pidlPath = ppidl;
            stPIDL.bWatchSubtree = TRUE;
            m_hNotifyRBin = SHChangeNotifyRegister (m_hWnd, 
                SHCNF_ACCEPT_INTERRUPTS | SHCNF_ACCEPT_NON_INTERRUPTS, 
                SHCNE_ALLEVENTS, 
                WM_SHELLNOTIFY,   // Message that would be sent by the Shell

                1,
                &stPIDL);
            if(NULL == m_hNotifyRBin)
            {
                TRACE(_T("Change Register Failed for RecycleBin"));
            }
        }
    }
    else
    {
        pfSHChangeNotifyDeregister SHChangeNotifyDeregister
             = (pfSHChangeNotifyDeregister)GetProcAddress(m_hShell32, 
                                                          MAKEINTRESOURCE(4));

        if (NULL != SHChangeNotifyDeregister)
        {
            BOOL bDeregister = SHChangeNotifyDeregister(m_hNotifyRBin);
        }
    }
}

По моему там говорится как отловить сообщение експлорера, на происходящие изменения, как преобразовать под делфи
то есть половина не понятна.
PM MAIL   Вверх
Rrader
  Дата 10.1.2010, 07:44 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Здесь тема, в которой есть код получения имен файлов из корзины, до и после удаления. Вам нужно использовать для нужных файлов функцию SHFileOperation в режиме FO_MOVE.

При этом установите флаги FOF_NOCONFIRMATION + FOF_MULTIDESTFILES + FOF_SIMPLEPROGRESS. Это эмуляция реального поведения корзины через "Undo-восстановление" - если удалить файл "Только для чтения", а потом в проводнике (Win XP) из меню "Правка" выбрать пункт "Отменить удаление", то система не будет требовать конфирмации.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Antony41
Дата 10.1.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Спасибо, тему читал эту уже.
Да подход конечно хитрый но я же не могу восстанавливать именно те файлы которые мне нужны, через Undo.
PM MAIL   Вверх
Rrader
  Дата 10.1.2010, 13:57 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Цитата(Antony41 @  10.1.2010,  19:46 Найти цитируемый пост)
но я же не могу восстанавливать именно те файлы которые мне нужны, через Undo. 

Я вообще-то предлагал перемещение файла, как это делает настоящая корзина. В чем проблема?


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Antony41
Дата 10.1.2010, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Упс! Прошу прощение!!! smile  По ссылкам в теме пробежался а на код особого внимания не обратил!!! Думал уже выхода то и нету.
Очень благодарен вам Rrader! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1992 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.