Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Drag and Drop c Explorer


Автор: Ak47black 21.4.2007, 16:46
Как переташить не из проводника, а в проводник.
Я имею ввиду только получение пути куда он был переташен, итем из TListView?

Автор: Ak47black 21.4.2007, 17:33
Хотя-бы как http://www.torry.net/vcl/system/draganddrop/dragdrop0307.zip компоненты переделать что-бы добиться результата?

Автор: Guedda 21.4.2007, 17:54
А тебе необходимо копировать, или перемещать?

Автор: Ak47black 21.4.2007, 17:54
Цитата

А тебе необходимо копировать, или перемещать?

Нет, только путь получить, оттуда куда кинул.  smile 

Автор: Ak47black 22.4.2007, 15:56
Неукого нету некаких идей чтоли?

Автор: Snowy 22.4.2007, 16:03
http://forum.vingrad.ru/index.php?showtopic=84137&view=findpost&p=650739

Автор: Ak47black 22.4.2007, 16:26
Не опять нето, но близко.
Я уже перерыл весь интернет то точно  smile , такая несложная задача на первый взгляд, а ответа ну нигде нету.
Мне сами файлы не нужно копировать или перемешать, а только путь получить, 
Цитата

DropSource и IDataObject

только копируют и перешают как я вижу, можно-ли каким нибудь путем до них достучаться что-бы они путь выдали?

Автор: Snowy 23.4.2007, 11:46
Тут проблема.
Никто тебе путь не скажет.
Механизм просто отдаёт список приложению.
А копирует оно или что другое делает - это личное дело приложения, которому ты отдаёшь данные.
И уж темболее куда - это его личное дело.

Автор: Ak47black 23.4.2007, 12:57
Snowy, я конечно зашел в тупик  smile , но я вот только одного понять немогу,
допустим я взял какой-нибудь известый ftp клиент - например SmartFtp
, при помоши его можно зайти на какойнибудь удаленый сервер и оттуда удаленый файл перетянуть допустим на рабочий стол и файл начнеться скачиваться.
Тоесть как я понимаю приложению какимто образом доходит куда качать > smile 

Автор: Snowy 23.4.2007, 13:03
Он тянет во временную папку, а потом уже отдаёт файл.
То есть делается драгндроп, в момент дропа, возникает колбэк.
В этом колбэке происходит скачивание в темп, с последующей отдачей этого темпа.
Вот уже временный файл потом копируется в заданное место.
В примерах к компоненту есть пример с распаковкой.
Там это всё расписано.
Разумеется вместо реальной распаковки, создаётся пустой файл, но механизм понятен.
Аналогично делается и скачивание и т.п. случаи, когда файл должен возникать в момент дропа.

Автор: Ak47black 23.4.2007, 13:11
 smile 
Цитата

В примерах к компоненту есть пример с распаковкой.

Это где? (В каких примерах, где они)
Цитата

Вот уже временный файл потом копируется в заданное место.

Ну там же произходит наполнение файла по мере скачивания(тоесть куда кинул), тоесть без временного вроде.

Автор: Snowy 23.4.2007, 13:16
Это вот тут:
http://www.torry.net/vcl/system/draganddrop/dragdrop0307.zip

Автор: Ak47black 23.4.2007, 13:26
В архиве уже сушествуют файлы, а тут как получаеться что по мере скачивания он подтаскивает куски файла ?( както у меня в голове неукладываеться), чтото нетак.
Файл там (который был кинут) по мере скачивания заполняеться  smile 

Автор: Snowy 23.4.2007, 13:38
Смотри ExtractDemo.
Метод ExtractFile.
По сути всё готово - просто написать свою реализацию ExtractFile, ну или переименовать по-своему, например DownloadFile. Не важно...
Просто действия должны выполняться в OnDrop.

Добавлено через 2 минуты и 33 секунды
Цитата(Ak47black @  23.4.2007,  13:26 Найти цитируемый пост)
В архиве уже сушествуют файлы
Неееет. Существует архив.
А файлы нужно ещё распаковать.
То есть в примере перед тем, как файлы окончательно будут отданы, они должны быть созданы.
Аналогично и при скачивании.
Перед тем, как окончательно отдашь, нужно их создать, то бишь скачать и положить в темп.

Автор: Ak47black 23.4.2007, 14:03
Цитата

Перед тем, как окончательно отдашь, нужно их создать, то бишь скачать и положить в темп. 

А там при скачивании сразу в файл записываеться.
Тоесть там где файл дропнул там появняеться файл с размером 0 байт и начинает заполнять по мере скачивания, тоесть он не после скачивания перемешаеться.

Автор: Ak47black 23.4.2007, 15:21
Если
поставить в настройках
user posted image
то если сделать дроп
то списке задач 'Transfer Queue', всё-таки у этого файла путь будет тотже куда его кинули.
Тоесть какимто образом тут это реализовано и путь как-то получаеться.

Автор: Snowy 23.4.2007, 15:58
Ну, как извращенский вариант, можно так:
Скармливаем файл нулевого размера, ловим где в системе создался новый файл и дальше его подло юзаем.

Автор: Ak47black 23.4.2007, 16:02
 smile Snowy, ну раз МелкийСофт непозаботился то мож и так , только как
Цитата

ловим где в системе создался новый файл

?

Автор: Ak47black 23.4.2007, 18:27
Может как-нибудь можно зная Handle проводника, узнать у него путь?

Автор: Ak47black 23.4.2007, 20:30
Мда Snowy, ты прав был, во что я нашол
Цитата

I'm the author of the Drag and Drop Component Suite.

I assume that you found the Extract demo on my home page - the one that uses the same technique as WinZip.

Unfortunately, as you correctly concluded, this alone can not solve your problem. To my knowledge (and I know a lot <g>), it is not possible for the drop source to get any information at all about the drop destination.

The only solution I can think of is to install a temporary copy hook handler which monitors the file you have created in the temp directory (using the WinZip technique). When the file is dropped and the explorer moves the files to its new destination (the folder where the user dropped it), you will receive notification of the new path.

To learn about copy hook handlers, check out Delphi's ShellExt demo application (delphi\demos\ActiveX\ShellExt) and specifically the ICopyHook interface.


Автор: Snowy 24.4.2007, 10:26
Ну про это я и говорю - отдаём нулевой файл и смотрим, куда он пошёл дальше.
Хук на explorer вполне подходит. Хотя не исключаю и других вариантов отслеживания.
Например по принципу FileMon.

Автор: Ak47black 24.4.2007, 13:44
Snowy, а
Цитата

Например по принципу FileMon. 

Это как, может без Хук?, очень интересно узнать как тогда  smile  ?

Автор: Snowy 24.4.2007, 14:07
Попробуй поиск по форуму  smile 

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