Что нового

Как в файл-менеджере найти выделенные файлы?

Mihaj

Новичок
Сообщения
18
Репутация
0
Собственно, это и всё. Как в файловом менеджере найти предварительно выделенные ручками файлы? Например, чтобы с ними по очереди что-н сделать. (Неважно что,- как до них добраться?) ... Или, может быть, кто-н точно знает, что это невозможно - не молчите тогда, выдайте сию горькую правду ...
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
 
Автор
M

Mihaj

Новичок
Сообщения
18
Репутация
0
Похоже второе то, что нужно. Огромное спасибо!
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Возможно заинтересует моя программка Com2Selfiles, суть в следующем, вызвать Ctrl+C, чтобы в буфере оказался список файлов, потом открыть буфер с помощью WinAPI, смотрите _ClipBoard_GetData(), там есть константа CF_HDROP, потом передаём дескриптор функции DragQueryFile(), даже нагуглил пример.
 
Автор
M

Mihaj

Новичок
Сообщения
18
Репутация
0
Возможно заинтересует моя программка Com2Selfiles
Дело в том, что я не программист. Хотя очень долго был с ними рядом (с кем поведешься, от того наберешься). Мне не просто освоить совсем незнакомый синтаксис. Я очень хорошо для непрограммиста знаю алгоритмирование, благодаря чему могу что-то увидеть в не очень специфическом незнакомом коде, но и только ... Но я собираюсь запостить тему в "Столе заказов", и Вы сможет там выложить эту информацию. Может быть это поймет и сможет воспользоваться более квалифицированный участник ...
Сообщение автоматически объединено:

Возможно заинтересует моя программка Com2Selfiles,
Создал тему в "Столе заказов"
 
Последнее редактирование:

RaZum

Знающий
Сообщения
78
Репутация
14
А разве из файлового менеджера в буфер неподают имена файлов по Ctrl+C ?
 
Автор
M

Mihaj

Новичок
Сообщения
18
Репутация
0
Имена попадают, но только вместе с файлами :smile:
 

RaZum

Знающий
Сообщения
78
Репутация
14
Незнаю какой конкретно файловый менеджер.
Пример для ТС.
Код:
$hWnd = WinActivate ("Total Commander")
If WinWaitActive ($hWnd, 2) Then
	Send ("^{C}")
	Sleep (100)
	$sData = ClipGet()
	If @Error Then Exit
	MsgBox (4096, "Содержимое буфера обмена", $sData)
EndIf
 
Последнее редактирование:
Автор
M

Mihaj

Новичок
Сообщения
18
Репутация
0
А разве из файлового менеджера в буфер неподают имена файлов по Ctrl+C ?
Тут не написано, что речь об эмуляции Ctrl+C в скрипте. Об этом я ничего не знаю. А в настоящем файл-менеджере, если использовать эту комбинацию, то копируются именно файлы целиком, ну и, конечно, с названиями :smile:. Я не знаю AutoIt, но из общих соображений, практически уверен, что и в нем происходит то же самое. Другое дело, что MsgBox() выдает на гора только то, что может - текстовые значения, – в данном случае, это имена файлов. Значит так он устроен, и это нормально ... (Я не могу это проверить, но я тебе верю.)
Ну и, отсюда – даже если из закачанных в буфер файлов можно извлечь их имена, то учитывая что объем их может составить и сотни мегабайт, даже гигабайты, это совершенно неприемлемо, если нам надо получить всего лишь их имена ...
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
63
А в настоящем файл-менеджере, если использовать эту комбинацию, то копируются именно файлы целиком, ну и, конечно, с названиями :smile:.
В буфер копируются всего лишь ссылки на файлы, и только в случае дальнейшей вставки из буфера в какую-либо папку запускается копирование файлов, вместо полных путей. У пользователя складывается мнение, что в буфер попадают сами файлы. Так проще обычному пользователю объяснить общий принцип буфера обмена, не вдаваясь в честные детали происходящего.
 
Автор
M

Mihaj

Новичок
Сообщения
18
Репутация
0
В буфер копируются всего лишь ссылки на файлы, и только в случае дальнейшей вставки из буфера в какую-либо папку запускается копирование файлов, вместо полных путей.
Когда писал коммент мелькнула мысль, что может быть устроено так, как вы написали, но решил, что это было бы слишком хорошо, чтобы быть правдой :smile: Рад, если ошибся :smile:. Что касается использования тогда этой возможности, чтобы добраться до файлов ... Технически, кажется осуществимо, но уже выяснил, что имеется возможность нахождения файлов по критерию их "выделенности", что должно позволить сразу получать и имена файлов и считывать их даты ... Впрочем, окончательно, как практичнее ... надо пробовать ...
 

Oki

Продвинутый
Сообщения
452
Репутация
63
Когда писал коммент мелькнула мысль, что может быть устроено так, как вы написали, но решил, что это было бы слишком хорошо, чтобы быть правдой :smile: Рад, если ошибся :smile:.
Сомнения несложно развеять. Можно запастись внешним диском, который сначала не подключать к компьютеру. Затем создать тестовые файлы, которые займут всё доступное дисковое пространство. Выделить все эти файлы, а заодно ещё какое-то количество файлов такого размера, чтобы не было никаких сомнений, что копироваться им попросту некуда (ни на диски, ни в оперативную память). Затем скопировать "файлы" в буфер обмена Windows. И только после этого подключить внешний диск, открыть через файловый менеджер на нём любую папку и задействовать вставку скопированного. Удачный результат копирования докажет, что содержимое файлов в буфере обмена не сидело, но вполне себе скопировалось.
Сообщение автоматически объединено:

Или даже ещё проще, пусть и менее доказательно. Скопировать "файл" в буфер обмена, тут же файл удалить с диска, а затем вставить из буфера и наслаждаться отказом по причине, что файла нигде нет, в том числе в буфере. Да-да, там была только ссылка на файл.
Сообщение автоматически объединено:

О, даже ещё нагляднее. Только что опробовано. Создать текстовый файл. Написать там, например, число (можно и не только число). Сохранить файл. Скопировать файл в буфер. Удалить файл с диска. Создать файл под таким же именем в той же папке. Написать там другое число. Сохранить файл. Вставить из буфера "старый файл". Убедиться в том, что скопировалось новое сожержимое файла. Всё по той же причине: в буфере обмена сидела лишь ссылка на полный путь к файлу.
 
Последнее редактирование:
Верх