Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
ShellMenu 1.0 Функция добавления приложения в Контекстное меню.
Краткая инструкция по параметрам: * Полный путь и имя файла приложения - Например: C:\App.exe или Переменная! * Имя приложения в разделе реестра - Все ясно из названия!...)) * Текст выводимый в контекстном меню - Все ясно из названия!...)) * Расширение для контекстного меню - К какому расширению добавить Контекстное меню. Указать с точкой, например: .exe или .txt! Если вместо расширения указать "All" (без кавычек), тогда добавится ко всем файлам! Если указать "Dir" (без кавычек), тогда к папкам! *Для удаления контекстного меню указать - True, все понятно!...))
Тут по поводу контекстного меню как то поднимался вопрос о добавлении значка. Не помню, решили его тогда или нет. Если есть желание, поиши тему. Может быть что то добавишь. Я имею ввиду возможность добавления значков. Там по моему что то в 7ке не получалось. Не помню точно. Не хочешь читать хелп?
mishem, Я искал в интернете про то как иконку прицепить, все то что предлагали на XP не работало, писали даже это: Для добавления значка в пункт контекстного меню необходимо написать свой COM-компонент... Кстати и Necronomicon тоже писал в теме Комментарий: Интеграция иконки в КМ делается через dll библиотеку, которая регистрируется в системе.
Видимо в XP так просто иконку не вставить! А про 7-ку пишут, что там все работает! Но на 7-ке увы протестить не смогу!
Сергей, Нее!...)) Просто немного знаю AutoIt и CMD, для написания скриптов достаточно!...)) VBS не изучал, но принцип понятен! + Google! Все мечтаю проф. языки изучить, но все лень одолевает!
Всем привет) Как сделать чтоб с контекстного меню путь файла отправлялся в переменную (можно и в буфер обмена) и потом в моей Neobook программе вставлялся?
Добавлено (22 Июня 2022, 12:43) --------------------------------------------- Damien89, Как сделать чтоб с контекстного меню путь файла отправлялся в переменную (можно и в буфер обмена) и потом в моей Neobook программе вставлялся?
Привет В контекстном меню Windows? Там есть команда "Копировать как путь". Если по этому пункту щелкнуть, то путь к файлу будет в буфере обмена. За буфером обмена можно следить с помощью плагина zmFunctions (Пётр Павлов) и анализировать его, если содержимое буфера меняется. Например, если третий и четвертый символы содержимого буфера являются двоеточием и левой косой чертой (:\ ), то скорее всего это путь к локальному файлу и его можно использовать в проекте NeoBook (VisualNEO Win).
Если же нужна функция в своём контекстном меню (в своей программе), то выходит, что файлы нужно выбирать через свою же программу. Тогда помогут плагины позволяющие строить дерево файлов, например плагины asShell (Андрей Солодянкин), NeoFM-FTP (NeoSoft Corp., SinLios), tmFileListBox (Alberto Meyer, TechMedia), hpwTreeView 1.44 (Hans-Peter Wickern), FileUtils (Drazen Glojnaric, Marije Ljolje). Но можно список файлов (командой FileList) и загнать их в объект список, можно использовать плагин dec_Plus 1.9 (David Esperalta), можно плагином lgaFileSys (Leif G. Andersson) поместить список файлов в текстовой файл...
Вадим, да, из контекстного меню Windows. Вот я добавил через ShellMenu 1.0 свою программу в контекстное меню файлов, а как путь сделать не знаю. По факту, мне нужно добавить функцию копирования полного пути файла/папки в буфер обмена в контекстное меню винды. А там, я из буфера прочту в переменную и в свою программу.
А зачем добавлять свою программу в контекстное меню, если вам нужно только путь скопировать? В контекстном меню уже есть нужный пункт меню "Копировать как путь". То есть, Windows это сама умеет делать. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Вадим, умеет, но с зажатой Shift! Мне же надо "собрать" файлы через контекстное меню себе в программу для дальнейшего запуска. Ума не приложу как сделать...Интересно, как работает меню "Отправить" в винде?
Вот пример демо-проекта (нужен плагин zmFunctions, весь код на кнопке и в подпрограмме). Этот пример работает, но я обнаружил, что если путь содержит символы Юникода, то в место букв получим знаки вопроса, что конечно же совершенно не приемлемо. И, в общем-то я должен был этого ожидать, поскольку NeoBook не поддерживает Юникод. К сожалению, ожидать, что она будет его поддерживать в ближайшее время не приходится. NeoBook разрабатывалась с 1993 года и переписать её заново в новой версии Delphi – это космически непростая задача.
Приложенный пример полезен тем, что показывает как использовать монитор буфера обмена. Кнопка включает такой монитор (хотя команду с кнопки можно поместить и на вкладку Запуск, в свойствах проекта). А далее плагин отслеживает изменилось ли содержимое буфера обмена и если изменилось, то выполняет назначенную подпрограмму. В этом примере в подпрограмме проверяется – хранится ли комбинация символов :\ начиная с третьей позиции в буфере обмена (первая позиция будет кавычкой, а вторая именем диска). Если да, то выводится окно сообщения в котором указан путь к файлу, он же отображается и в окне программы.
Не понимаю, надо добавить свой собственный пункт в контекстное меню "Отправить"?
Добавлено (23 Июня 2022, 20:14) --------------------------------------------- Есть платный плагин zmw[Self]Control 1.1 (Zaeem, RCMedia Services) в нём есть команда zmwAddContextMenu = Добавить пункт меню в контекстное меню проводника файлов, а также добавить подменю в созданное меню. Я только не знаю, можно ли на пункт меню поместить подпрограмму. Спрошу автора. А пока можете протестировать этот плагин, скачав пробную версию здесь: https://zmware.rcmediaservices.net/zmwselfcontrol/
Вадим, мы сейчас общаемся в ветке ShellMenu 1.0, которая как раз и создает пункт контекстном меню винды. Только пункт надо повесить копирование пути выделенного файла
В своей программе создайте (в качестве демонстрации) текстовой объект "Надпись" в который поместите глобальную переменную [CommandLine]. В этой переменной окажутся имена всех файлов, которые вы отправите через меню "Отправить" своей программе (первой строчкой будет путь к самой программе, а следующие – пути к выбранным файлам). Чтобы через меню "Отправить" программа не открывалась каждый раз заново запретите запуск более одной копии проекта (в свойствах проекта).
Нужно сделать ярлык на свою программу (которая должна получить имена файлов) в папке для ярлыков меню "Отправить".
Чтобы открыть эту папку нажмите Win+R и в открывшемся окошке "Выполнить" введите shell:sendto после чего нажмите Enter.
В открывшейся папке увидите все пункты меню "Отправить".
Добавьте в эту папку ярлык на свою скомпилированную программу (название ярлыка можно изменить).
Демо-проект прикладываю.
Добавлено (23 Июня 2022, 22:01) ---------------------------------------------
Не гуру, конечно, но я рад пользе! Тоже люблю NeoBook (VisualNEO Win)
Спасибо за пример обхода кракозябр! Надо будет на досуге разобраться с этой функцией – понять где она может быть полезна, а где её границы применимости. Если вам это всё уже известно, опишите, пожалуйста.
Я получил ответ от Роберта, партнёра Заима (Zaeem – автор плагина zmw[Self]Control, на этом форуме зарегистрирован под ником zmworks7). Оставлю ответ Роберта здесь, если кто-то захочет решить похожую задачу с помощью плагина (перевод с английского):
Цитата
Сначала задействуйте команду zmwAddContextMenu для настройки меню и его действия.
Затем, когда запустится паб, на который вы направите эту команду, при запуске поставьте:
... эти значения (разобранные элементы) будут меняться по позициям в зависимости от того, запущен ли он из IDE или компилируется. Поэтому проверьте компиляцию.
If"[Count]" ">" "1"
.... в compile, первым элементом будет имя и путь самого паба. Затем идет %path%, передаваемый командой из контекстного меню.
... в данном случае мы проверяем расширение, чтобы убедиться, что это то, что нужно этому пабу.... [Parm2] – это путь, который отправляется в pub для обработки.
ExtractFileExt"[Param2]" "[ext]"
If"[ext]" "<>" ".wrap" AlertBox"Error!" "This process requires a *.wrap file." Else .ExtractFilePath "[Param2]" "[FilePath]" GoSub"UNWrap" Endif Endif
Есть также способ настроить реакцию двойного щелчка на тот же результат.
First engage this command to configure the menu and it's action.
Then, when the pub you direct this to launches, in the startup put: