Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Прерывание CopyFile / 22 сообщений из 22, страница 1 из 1
27.12.2018, 19:40
    #39754163
m52
m52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Здравствуйте,

Копирую файл с помощью CopyFile . В отличии от функции CopyFileEx, прервать CopyFile нельзя, но я хочу использовать именно CopyFile. Чтобы можно было прервать процесс копирования, я обернул ф-цию CopyFile в отдельный поток Thread и в случае отмены копирования просто уничтожаю Thread. Таким образом процесс копирования прерывается.

Проблема : при уничтожении Thread копируемый файл остается заблокированным. С файлом ничего нельзя сделать (ни удалить, ни переименовать), пишет что он занят другим приложением. Как не выгружая программу прибить поток, чтобы копируемый файл стал свободным?
...
Рейтинг: 0 / 0
27.12.2018, 20:05
    #39754183
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
- Доктор, когда я вот вот так вот делаю у меня болит

- А вы вот вот так вот не делайте
...
Рейтинг: 0 / 0
27.12.2018, 20:05
    #39754184
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
С прошлой аналогичной темы так ничему и не научился? Своё "хочу использовать именно
CopyFile" засунь куда подальше, наступи на горло собственной песне, подави ЧСВ и таки
используй CopyFileEx.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.12.2018, 20:12
    #39754190
m52
m52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Спасибо за типовые советы, забыл написать, чтобы CopyFileEx не предлагали.
...
Рейтинг: 0 / 0
27.12.2018, 20:33
    #39754199
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
m52,
Перезапустить свою программу, именно она и держит файл.
Делаешь дамп всей памяти, перезапускаешь и восстанавливаешь.
Второй вариант - влезть в ядро винды и добраться до таблицы залоченных файлов.
...
Рейтинг: 0 / 0
27.12.2018, 20:34
    #39754200
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
m52,

милейший, а почему вы новые темы создаете, а не продолжаете старые?
Вы тролль.
...
Рейтинг: 0 / 0
27.12.2018, 21:07
    #39754211
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
m52Спасибо за типовые советы, забыл написать, чтобы CopyFileEx не предлагали.Фэйтл Эраm52,
Вы тролль."Не толстый, а упитанный "(ц).
...
Рейтинг: 0 / 0
27.12.2018, 21:46
    #39754221
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Используя copyfile с прибитием потока невозможно освобождение ресурсов. Если ресурсы освободить нельзя то и файл будет заблокирован до закрытия процесса. Ваше пожелание невозможно выполнить.
...
Рейтинг: 0 / 0
27.12.2018, 22:00
    #39754225
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
m52,

Здесь смотрели? Или здесь ?
...
Рейтинг: 0 / 0
27.12.2018, 22:24
    #39754231
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
_Vasilisk_,

он 2 года уже с этим мучается
...
Рейтинг: 0 / 0
27.12.2018, 22:30
    #39754234
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
m52,

за два года можно написать свою CopyFile :) с бустом и исключениями (на самом деле там работы на час максимум).
...
Рейтинг: 0 / 0
27.12.2018, 22:37
    #39754235
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Жёваный крот.

А нельзя было зайти в CopyFile и увидеть, что она просто вызывает CopyFileEx с обнулёнными дополнительными параметрами, а последний параметр CopyFile преобразуется в флаг COPY_FILE_FAIL_IF_EXISTS??

Kernel32.CopyFile:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
mov edi,edi
push ebp
mov ebp,esp
xor eax,eax
cmp [ebp+$10],eax
setnz al
push eax
xor eax,eax
push eax
push eax
push eax
push dword ptr [ebp+$0c]
push dword ptr [ebp+$08]
call $73b77110 // Kernel32.CopyFileEx
pop ebp
ret $000c
...
Рейтинг: 0 / 0
27.12.2018, 22:46
    #39754240
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
X-CiteИспользуя copyfile с прибитием потока невозможно освобождение ресурсов. Если ресурсы освободить нельзя то и файл будет заблокирован до закрытия процесса. Ваше пожелание невозможно выполнить.
Можно запускать копифайл в отдельном приложении. И у бивать не тред, а процесс. Костылики, на счастье топикстартеру.
...
Рейтинг: 0 / 0
28.12.2018, 00:22
    #39754265
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Фэйтл Эра,

можно вообще 'copy' в консоли вызывать
...
Рейтинг: 0 / 0
28.12.2018, 01:34
    #39754282
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
GunSmokerА нельзя было зайти в CopyFile и увидеть, что она просто вызывает CopyFileEx с обнулёнными дополнительными параметрами, а последний параметр CopyFile преобразуется в флаг COPY_FILE_FAIL_IF_EXISTS??От ведь стервец! Всю интригу ТС-у обломал!
...
Рейтинг: 0 / 0
28.12.2018, 02:29
    #39754285
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
white_niggerGunSmokerА нельзя было зайти в CopyFile и увидеть, что она просто вызывает CopyFileEx с обнулёнными дополнительными параметрами, а последний параметр CopyFile преобразуется в флаг COPY_FILE_FAIL_IF_EXISTS??От ведь стервец! Всю интригу ТС-у обломал!
ТС пофиг, ему это уже говорили.
...
Рейтинг: 0 / 0
28.12.2018, 09:23
    #39754341
Beltar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
https://www.gunsmoker.ru/2008/10/x-y-z.html

Да и автор этой саги, смотрю, тоже здесь.
...
Рейтинг: 0 / 0
28.12.2018, 15:07
    #39754595
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
пользуй SHFileOperation
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.12.2018, 18:09
    #39754665
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Соколинский Борисm52,
Перезапустить свою программу, именно она и держит файл.
Делаешь дамп всей памяти, перезапускаешь и восстанавливаешь.
Второй вариант - влезть в ядро винды и добраться до таблицы залоченных файлов.
Ну зачем так сложно.
Можно написать свою функцию CopyFile, в ней - вызывать CopyFileEx.
И дальше можно спокойно использовать эту CopyFile, которую уже можно прервать. Проблема решена ;)
...
Рейтинг: 0 / 0
28.12.2018, 18:51
    #39754680
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
YuRockНу зачем так сложно... Мы не ищем легких путей.
ТС будет чем заняться, у нас повод повеселиться, лепота...
...
Рейтинг: 0 / 0
28.12.2018, 23:27
    #39754745
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Соколинский Борис,

Привет, дорогой. Мне кажется, от такого веселья бужущее ужасно, отнюдь, не лепота...
...
Рейтинг: 0 / 0
29.12.2018, 21:24
    #39755065
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание CopyFile
Gator,
Привет-привет, с наступающим!

Save tomorrow for tomorrow, think about today instead. (c)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Прерывание CopyFile / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]