Language: Русский English

Copy FileName to Clipboard - Shell extension v.1.0.2.1 (2016.02.24)

«Copy FileName to Clipboard - Shell extension» - встраивается в контекстное меню Проводника, и добавляет пункт «Копировать имя файла...».

Подобных программ много, я во времена WinXP пользовался Path2Clipboard. Но она не работает под 64-битными версиями Windows, а найти достойной альтернативы не удалось (в google нашлось не один десяток подобных программ - но либо тоже только для 32-битной Windows либо работающие неудобно). В Windows 7 есть штатное копирование имени файла если удерживать клавишу Shift при вызове контекстного меню (и очевидно этот факт снизил кол-во желающих написать такой софт), но во-первых там только один вариант (полное имя с путями), во-вторых надо ещё нажимать Shift, в-третьих там есть проблемы с Unicode->ANSI.

Вобщем искать надоело, и я написал соответствующее расширение проводника, в вариантах для 32-битной Windows (CopyFileNameExt32.dll) и для 64-битной Windows (CopyFileNameExt64.dll).

Скриншот (Windows XP)

Позволяет копировать имена файлов в буфер обмена в следующих вариантах:
- filename.ext - просто полное имя (с расширением);
- "filename.ext" - тоже самое но в кавычках (актуально если имя длинное или с пробелами);
- filename - только имя (без расширения);
- C:\Program Files\filename.ext - полный путь и полное имя с расширением;
- "C:\Program Files\filename.ext" - тоже самое но в кавычках;
- "C:\\Program Files\\filename.ext" - дополнительно удваиваются обратные слэши (надо например для программистов);
- C:\PROGRA~1\FILENA~1.EXT - путь и имя в формате 8.3 (помните, что в современной Windows это только локальное временное имя, на другом компьютере или просто через некоторое время этот же файл может получить совсем другой номер в коротком имени, либо вообще использование имён 8.3 может быть отключено через fsutil.exe);

Внимание, эта программа работает в адресном пространстве Проводника, поэтому при любых ошибках (хотя я их не нашёл - но по статистике этого исключать нельзя) - проводник (а вместе с ним и десктоп, панель задач, трей) будет падать (вероятно, с потерей каких-то данных). Программа распространяется бесплатно и автор не несёт ответственность за вероятные последствия. Вы используете эту программу на свой страх и риск. Если вы не согласны с этим - вы не должны использовать эту программу.

Если выбрано несколько файлов - то имена файлов будут скопированы в виде многострочного текста (с разделителем CR,LF).

Реализована проверка встречающихся букв. Значок перед строкой указывает на возможные проблемы и ограничения этого имени:
- 7b - 7bit - строка содержит только 7-битные символы ASCII (т.е. только английские буквы - самое беспроблемное);
- 8b - 8bit - строка содержит 8-битные символы (национальный алфавит), но все встреченные символы входят одновременно и в ANSI-таблицу и в OEM-таблицу установленные по умолчанию для неюникодных программ. На этом компьютере с таким именем проблем не будет, но на компьютерах с другой национальной локализацией проблемы будут (если не использовать на всех этапах Unicode);
- A - ANSI - строка содержит 8-битные символы национального алфавита которые найдены в текущей таблице ANSI, но не найдены в таблице OEM. Например для стандартной русской локализации где ANSI=CP1251 и OEM=CP866 - это будет при значке «©» или «™». Такую строку проблематично использовать в CMD-файлах и консольных программах. Ну и на компьютерах с другой локализацией - тоже;
- O - OEM - строка содержит 8-битные символы национального алфавита которые найдены в текущей таблице OEM, но не найдены в таблице ANSI. Например для стандартной русской локализации где ANSI=CP1251 и OEM=CP866 - это будет при значке «√» или псевдографике. Такую строку проблематично использовать в GUI-программах. Ну и на компьютерах с другой локализацией - тоже;
- U - Unicode - строка содержит символы которые не найдены в текущих 8-битных таблицах ANSI и OEM. Такую строку можно использовать только в Unicode.

Программа всегда копирует в буфер обмена текст в виде Unicode (CF_UNICODETEXT), а для его корректной вставки в программах не поддерживающих Unicode - буферу обмена присваивается идентификатор CF_LOCALE со значением SUBLANG_SYS_DEFAULT (оно соответствует установленному в настройках Windows в панели управления языку для неюникодных программ). Таким образом тут нет проблемы с выбором режима работы ANSI или Unicode - текст всегда будет правильно вставлен (кстати в отличии от штатного копирования имени файла у Windows 7, где такая проблема бывает).

Системные требования: предполагается работоспособность на всех 32-битных и 64-битных версиях Windows XP SP3 (XP-64 SP2), Windows 2003, Windows Vista, Windows 7, Windows 2008, Windows 8, Windows 8.1, Windows 2012, Windows 10.

Вирусов в программе нет (для правильного CopyFileName.exe v1.0.2.1 MD5:845667ed27ca6b864a6f343ca635f437). Многие антивирусы ложно реагируют на инсталлятор, но писать каждому разработчику антивируса малопродуктивно. Для параноиков - вот сами DLL (на них антивирусы не реагируют), их можно установить вручную без инсталлятора.


История развития программы:
v.1.0.2.1 (2016.02.24)Исправлена логика автовыбора языка - язык теперь зависит от выбранного в панели управления регионального стандарта.
v.1.0.2.0 (2016.02.18)Мелкие доработки инсталлятора (манифесты для Win10).
v.1.0.1.6 (2013.12.12)Исправлена ошибка приводившая к падениям Проводника на некоторых 64-битных системах при копировании 8.3-имён, и инсталлятор упакован в UPX.
v.1.0.1.5 (2013.10.15)Исправлена ошибка приводившая к падениям Проводника на некоторых 64-битных системах, мелкие доработки инсталлятора.
v.1.0.1.2 (2012.08.03)Инсталлятор теперь не запакован в UPX (иначе многие антивирусы на него ложно срабатывали), в DLL ничего нового;
v.1.0.1.1 (2012.01.25)Мелкие доработки инсталлятора (RTF-справка с картинками встроена и т.п.), в DLL ничего нового;
v.1.0.1.0 (2012.01.06)Теперь в win64 регистрируется и 32-битная DLL, для работы в окнах Проводника вызываемых из 32-битных программ. Добавлена поддержка Windows 8;
v.1.0.0.3 (2011.11.30)Исправлена ошибка приводившая на некоторых компах к падениям Проводника (был конфликт с другими расширениями, которые некорректно обрабатывают отказ в IUnknown::QueryInterface - не по E_NOINTERFACE а по NULL в ppvObject);
v.1.0.0.2 (2011.11.23)Исправлена ошибка с подавлением работы некоторых других расширений оболочки при вызове на ярлыках (В Windows7 для .lnk-файлы оказалась несколько необычная работа IContextMenu::InvokeCommand - она сама приходит но с CMIC_MASK_NOASYNC);
v.1.0.0.1 (2011.01.06)Исправлена ошибка с подавлением работы некоторых других расширешний оболочки (в частности - средство удаления свойств файлов переставало работать, в IContextMenu::QueryContextMenu нужна была проверка CMF_OPTIMIZEFORINVOKE);
v.1.0.0.0 (2010.12.31)первая публичная версия;

Возможна установка программы без инсталлятора:
Для Windows 32битных - скопировать файл CopyFileNameExt32.dll в папку C:\Windows\System32\, и затем выполнить команду «RegSvr32 CopyFileNameExt32.dll».
Для Windows 64битных - скопировать файл CopyFileNameExt64.dll в папку C:\Windows\System32\, и затем выполнить команду «RegSvr32 CopyFileNameExt64.dll». Дополнительно можно скопировать CopyFileNameExt32.dll в C:\Windows\SysWOW64\ и выполнить команду «C:\Windows\SysWOW64\RegSvr32 CopyFileNameExt32.dll» - это позволит использовать копирование пути в окнах Проводника запускаемых в других программах.
Удаление:
Для Windows 32битных - разрегистрировать DLL командой «RegSvr32 /u CopyFileNameExt32.dll».
Для Windows 64битных - разрегистрировать DLL командами «RegSvr32 /u CopyFileNameExt64.dll» и «C:\Windows\SysWOW64\RegSvr32 /u CopyFileNameExt32.dll».
DLL-файлы остануться залоченным до перезагрузки компьютера (или перезапуска процесса explorer.exe), потом их можно удалить.

Для установки или удаления надо админские права, при нехватке прав - будет выдана ошибка 0x80070005 (E_ACCESSDENIED).

Создаваемые ключи реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CopyFileNameExtension
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_LOCAL_MACHINE\Wow6432Node\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\CopyFileNameExtension
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\CopyFileNameExtension
HKEY_CLASSES_ROOT\CLSID\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_CLASSES_ROOT\CopyFileNameExtension
HKEY_CLASSES_ROOT\CopyFileNameExtension.1