PureBasic


pkm_dll

Назначение

Получает список выделенных файлов из активного окна эксплорера.

Взаимосвязанные

Com2Selfiles

Работа с программой


Кратко: сформировать ini-файл, зарегистрировать dll, пользоваться.


Параметры ini-файла

[set] ; секция настроек
HotReadINI=0 ; предназначен для теста dll. При регистрации dll установить в 1, тогда каждый клик пункта меню сопровождается чтением ini-файла, что позволяет на лету менять параметры пункта (кроме NamePlag, Text и Bitmap). Когда пункт протестирован перейдите HotReadINI = 0 и горячее чтение прекратится. Чтобы начать тест заново надо перевести в 1 и сделать перелогин аккаунта.
Path=pkm.bat ; любой исполняемый файл, абсолютный путь, относительный от папки DLL и имя файла с поиском в %Path% или в папке DLL
Arg=/i ; дополнительные аргументы, кроме путей к выделенным файлам. Аргумент вставляется перед файлами.
ModeWorkDir=1 ; определяет рабочую папку. 0 - рабочая папка там где выбранные файлы, 1 - рабочая папка исполняемого файла
Text=My Item ; текст пункта, то что будет отображаться в меню. На любом языке, с пробелами.
Bitmap=1 ; если 1 то показывать значок пункта. Это bmp-файл (icon.bmp), размером 16x16 пиксел в папке DLL. 0 - не отображать.
Select=1 ; что выбрать. 1 - файлы, 2 - папки, 3 - файлы и папки. Остальные будут игнорироваться.
Separator=| ; задаёт разделитель между файлами. Например в батнике можно задать разделитель в цикле, чтобы не использовать пробел, являющийся частью имени файла. Тогда %1 является вся строка с файлами.
Quotes=" ; задаёт символ вокруг строки файлов, чтобы bat-файл воспринимал строку как 1 параметр, не разделяя на пробелы. Но иногда нужен вывод без них.
Charset=0 ; Кодировка файла 24 - Ascii, 25 - UTF-16 с BOM, что либо иное - UTF-8 с BOM.
Debug=0 ; режим отладки или вывода. 1, 2, 4, 8, 16, 32, 64.
    1 и 4 выдают сообщение, причём 4 выдаёт только имена, а 1 исполняемый файл и рабочий каталог
    2 и 8 - буфер обмена, но 8 выдаёт только имена, а 2 исполняемый файл и рабочий каталог. Причём если в сообщении нажать ОК, то выполнится команда, получается контроль файлов и согласие выполнения, а вариант с буфером обмена не запускает исполняемый файл поэтому этот вариант можно использовать чтобы получить имена в буфер обмена для использования списка файлов на форуме и т.д.
    16 - при 1 и 2 создаёт список файлов без путей. 1 и 2 выдаёт многострочный список вне зависимости от разделителя и кавычек.
    32 - сохраняет список файлов в файле %TEMP%\pkm_dll.txt (зависит от имени pkm_dll.dll файла)
    64 - пустая ком-строка для запуска программ, которым нежелательно передавать ком-строку, полезно совместно с флагом 32.


[dllreg] ; секция регистрации DLL
NamePlag=MyPlag1 ; внутреннее имя плага, не особо важно, но если DLL регистрируется более одного раза, то имя плага всегда должно быть другое, иначе это перезапишет секцию в реестре. Использовать латинские буквы и цифры без пробелов.
WhereAssoc=1 ; где регистрировать пункт: 1 - файлы, 2 - папки, 4 - диски. Сумма флагов даёт комбинации вариантов, например 1+2+4 = 7, то есть флаг 7 регистрирует пункт во всех.

Регистрация DLL

  1. Положить папку с dll например в системную папку. Для начала путь к dll без пробела для надёжности.
  2. Указать параметры в ini-файле, подробнее см. выше.
  3. Зарегистрировать dll с правами админа (zRegister_DLL.cmd). (чтобы перерегистрировать нужно выполнить zUnregister_DLL.cmd, сделать выход из аккаунта, чтобы подменить dll новой версией и снова зарегистрировать)

Использование

  1. Выделить несколько файлов, нажать правую кнопку мыши, вызвать пункт меню.
  2. Выполняется файл, указанный в "Path = "
  3. Файлы передаются исполняемому файлу в виде ком-строки.
  4. Повторить выше описанное, чтобы создать сколько угодно пунктов. Создать новую папку с копией dll с новыми параметрами ini-файла с созданием нового пункта меню.

Прочее

ini-файл читается только при регистрации и входе в аккаунт (при старте ОС). Это значит, что если необходимо поменять параметры в ini-файле, например пункт меню или исполняемый файл, или иконку (но не имя плагина), то это применится только после перезапуска эксплорера, аналогично после Выход -> Вход в аккаунт или перезагрузки. Но для теста введён параметр HotReadINI=0, если HotReadINI=1, то чтение ini-файла производится при каждом клике на пункте, это режим тестирования пункта без необходимости каждый раз делать перевыход, чтобы протестировать рабочую папку (ModeWorkDir), параметры запуска (Arg). После завершения теста переключить в HotReadINI=0. начать тест снова горячим переключением в HotReadINI=1 не получится, надо делать перелогин.

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

Программу можно использовать для получения списка файлов включив Debug=8 или 8+16=24 чтобы имена были без путей.

При использовании Debug=4 можно контролировать имена файлов получив сообщение перед запуском, чтобы знать, что передаётся необходимый набор файлов.

Использовать совместно с LauncherPB, что позволит сделать запуск в разных программах.

Сбой

При вызове контекстного меню в дереве папок возникает падение эксплорера при WhereAssoc = больше 2, то есть регистрация пункта меню для папок.