Автор | Сообщение |
|
| |
Пост N: 26
Зарегистрирован: 08.02.11
|
|
Отправлено: 19.10.11 09:41. Заголовок: Как удалить файл в корзину?
FErase() сносит файл безвозвратно
|
|
|
Ответов - 11
[только новые]
|
|
|
| |
Пост N: 298
Зарегистрирован: 11.06.10
|
|
Отправлено: 19.10.11 10:04. Заголовок: copy ... to ...recyc..
copy ... to ...recycle ferase может прокатит?
|
|
|
|
| Администратор
|
Пост N: 2138
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.10.11 10:45. Заголовок: Гугль говорит: Функц..
Гугль говорит: Функция SHFileOperation( ) позволяет выполнить удаление файла в "Корзину". Для этого необходимо к набору флагов добавить флаг FOF_ALLOWUNDO и обязательно указать полный путь к файлу в поле pFrom. Это винапишная функция. Обертка для нее в харборе: WIN_SHFILEOPERATION Находится в hbwin.lib
|
|
|
|
| moderator
|
Пост N: 270
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.10.11 12:13. Заголовок: SADSTAR4 пишет: Как..
SADSTAR4 пишет: цитата: | Как удалить файл в корзину? |
| См. ниже Харбор переходник (wrapper ): Скрытый текст
цитата: | HB_FUNC( SENDTORECYCLEBIN ) { SHFILEOPSTRUCT sh; sh.hwnd = GetActiveWindow(); sh.wFunc = FO_DELETE; sh.pFrom = hb_parc(1); sh.pTo = NULL; sh.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; sh.fAnyOperationsAborted = FALSE; sh.hNameMappings = NULL; sh.lpszProgressTitle = NULL; SHFileOperation (&sh); } |
|
| Пример использования: SendToRecycleBin( cPath + cFile + Chr(0) + Chr(0) )
|
|
|
|
| постоянный участник
|
Пост N: 595
Зарегистрирован: 27.01.07
|
|
Отправлено: 19.10.11 13:51. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Имхо, красивее добавлять это в самой функции.
|
|
|
|
| moderator
|
Пост N: 271
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.10.11 14:06. Заголовок: PSP пишет: красивее..
PSP пишет: цитата: | красивее добавлять это в самой функции |
| Как говорят у нас в Одессе: цитата: | Вам нужны шашечки, или ехать |
|
|
|
|
|
| постоянный участник
|
Пост N: 596
Зарегистрирован: 27.01.07
|
|
Отправлено: 19.10.11 14:35. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Вам нужны шашечки, или ехать |
| Мне? Я просто предположил, что так будет нативнее для Клиппера/Харбора.
|
|
|
|
| |
Пост N: 27
Зарегистрирован: 08.02.11
|
|
Отправлено: 20.10.11 00:46. Заголовок: Pasha пишет: Это в..
Pasha пишет: цитата: | Это винапишная функция. Обертка для нее в харборе: WIN_SHFILEOPERATION Находится в hbwin.lib |
| Описания и Примеров не нашел. Только здесь http://comments.gmane.org/gmane.comp.lang.harbour.devel/31370 + Added: WIN_SHFileOperation( [<hWnd>], [<nFunction>], [<cFrom>|<aFrom>], [<cTo>|<aTo>], [<nFlags>], [<@lAnyOperationAborted>], [<aNameMappings>], [<cProgressTitle>] ) -> <nResult> Но мне этого недостаточно. gfilatov2002 пишет: цитата: | SendToRecycleBin( cPath + cFile + Chr(0) + Chr(0) ) |
| fErase() возвращает T/F. Можно ли в этой функции сделать такой возврат? P.S. Блин!!! Удаляет в корзину с урезанием имен до 8.3 ?!
|
|
|
|
| moderator
|
Пост N: 274
Зарегистрирован: 11.02.10
|
|
Отправлено: 20.10.11 11:56. Заголовок: SADSTAR4 пишет: Мож..
SADSTAR4 пишет: цитата: | Можно ли в этой функции сделать такой возврат? |
| Держи рабочий пример без урезания имени файла (см. ниже) Скрытый текст
цитата: | #include "minigui.ch" Function Main () Set Alternate To ("HMG Example.txt") Set Alternate On ? "test string" ? " " Set Alternate Off Set Alternate To DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 640 ; HEIGHT 480 ; TITLE "HMG Example" ; MAIN DEFINE MAIN MENU POPUP "Test" ITEM "Do it!" ACTION Test( GetStartupFolder() + "\", "HMG Example.txt" ) SEPARATOR ITEM "Exit" ACTION Form1.Release MESSAGE "Exit program and quit" END POPUP POPUP "About" ITEM "Info" ACTION MsgInfo( "HMG Example" ) END POPUP END MENU DEFINE STATUSBAR STATUSITEM "" DEFAULT CLOCK WIDTH 85 DATE END STATUSBAR END WINDOW CENTER WINDOW Form1 ACTIVATE WINDOW Form1 Return Nil Function Test (cPath, cFile) MsgInfo( SendToRecycleBin( cPath + cFile + Chr(0) + Chr(0) ), "Result" ) Return Nil #pragma BEGINDUMP #include "windows.h" #include "hbapi.h" HB_FUNC( SENDTORECYCLEBIN ) { SHFILEOPSTRUCT sh; sh.hwnd = GetActiveWindow(); sh.wFunc = FO_DELETE; sh.pFrom = hb_parc(1); sh.pTo = NULL; sh.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; sh.fAnyOperationsAborted = FALSE; sh.hNameMappings = NULL; sh.lpszProgressTitle = NULL; hb_retl((SHFileOperation (&sh)==0)); } #pragma ENDDUMP |
|
| Надеюсь, теперь вопрос закрыт...
|
|
|
|
| |
Пост N: 28
Зарегистрирован: 08.02.11
|
|
Отправлено: 21.10.11 09:18. Заголовок: Возвращаемое значени..
Возвращаемое значение есть. А имена файлов режет.
|
|
|
|
| moderator
|
Пост N: 275
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.10.11 20:50. Заголовок: SADSTAR4 пишет: име..
SADSTAR4 пишет: Только что проверил работу примера под Win7: имя файла восстанавливается корректно из корзины. Вероятно, Вам надо перепроверить настройку Вашей системы. Возможно, в реестре задано принудительное приведение имен файлов к виду 8.3
|
|
|
|
| |
Пост N: 29
Зарегистрирован: 08.02.11
|
|
Отправлено: 24.10.11 03:18. Заголовок: О!!! Никогда не обра..
О!!! Никогда не обращал на это внимания - обычно удаляю файлы Shift/Del. Сделал эксперимент - режутся только имена файлов с русскими буквами. Пол дня Инет рыл по этой проблеме - ничего не нашел. Может кто знает - что за заковыка такая? Где что исправить нужно? P.S. Еще эксперимент - такое обрезание только на FAT32-дисках. На NTFS - все Ок. P.S.2 Преобразую все старые разделы с FAT32 в NTFS
|
|
|
|