Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование, администрирование, скрипты в Windows DropHandler для любого файла


Информационный Канал Subscribe.Ru


DropHandler для любого файла

DropHandler для любого файла

Автор: Полухин Владимир

Дата: 31.03.2004

DropHandler для любого файла

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

Эта необходимость возникла при использовании скриптов. Почти каждый день мне приходится писать скрипты. Perl, wsh, пакетные файлы. И очень часто бывает нужно передавать скрипту параметры командной строки. Рассмотрим пример perl-скрипта (кто не хочет можно пропустить), который приводит к нижнему регистру имена файлов в определённой папке.

## Если такая папка существует
if(-d $ARGV[0])
{             
 ## прочитать директорию
 opendir DIR, "$ARGV[0]"; @dirlist = readdir(DIR); closedir(DIR);
 foreach $dir (@dirlist)
 {                  
  rename("$ARGV[0]/$dir",$ARGV[0].'/'.lc($dir));
 }
}

Первый способ выполнения скрипта (запуск вручную из консоли):

c:\perl\bin\perl c:\scripts\lowreg.pl c:\temp\testdir

Хе-хе. Мало кто делает так:).


Второй способ (используем bat-файл):

Делаем bat-файл lowreg.bat:

c:\perl\bin\perl c:\scripts\lowreg.pl %1

и в окне проводника перетаскиваем на него папку, которую надо обработать. Удобнее. Но мне надоело плодить файлы с расширением .bat для каждого скрипта.


Третий способ:

Описываем (извиняюсь за выражение) в реестре тип .pl. Для этого делаем reg-файл и импортируем его в реестр:

REGEDIT4

[HKEY_CLASSES_ROOT\.pl]
@="perl"

[HKEY_CLASSES_ROOT\perl\shell]

[HKEY_CLASSES_ROOT\perl\shell\run]

[HKEY_CLASSES_ROOT\perl\shell\run\command]
@="c:\\perl\\bin\\perl.exe %1 %*"

[HKEY_CLASSES_ROOT\perl\shellex\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

Теперь bat-файл не нужен – можно перетащить папку прямо на pl-файл, который в благодарность нам радостно подсветится!

Осталось дать волю воспалённой фантазии и добить свою винду.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное