Posted: 29.10.14 23:13. Post subject: Запускалка файлов
Сочинил я недавно вспомогательную программу для Пагесов, которая вот что делает: в страницу простого текста я вставляю пути к файлам с которыми мне приходится работать (файлы с чертежами, или текстовые файлы, или pdf-файлы), мне их надо открывать или открывать папку, в которой они лежат. Так вот, при нажатии контрол+правая кнопка мыши программа выделяет тройным ЛКМ весь абзац (а путь к файлу — это один абзац), копирует в буфер обмена, а потом RUN то что в буфере обмена. В результате документ открывается, а если это путь к программе, то программа запустится, а если эта программа лежит в systm32 каталоге, то можно написать просто mspaint (например) в одной строчке и щелкнуть по ней контрол+ПКМ, и программа запустится. А если щелкнуть Альт+ПКМ, то открывается папка, в которой лежит этот файл. Наверно не очень понятно описал, попробую завтра выложить здесь программу — она на ahk написано. Возможно, кому-нибудь будет нужна.
Post №: 7882
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 29.10.14 23:33. Post subject: SetQ пишет: Сочинил..
SetQ пишет:
quote:
Сочинил я недавно вспомогательную программу для Пагесов, которая вот что делает: в страницу простого текста я вставляю пути к файлам с которыми мне приходится работать (файлы с чертежами, или текстовые файлы, или pdf-файлы), мне их надо открывать или открывать папку, в которой они лежат. Так вот, при нажатии контрол+правая кнопка мыши программа выделяет тройным ПКМ весь абзац (а путь к файлу — это один абзац), копирует в буфер обмена, а потом RUN то что в буфере обмена. В результате документ открывается, а если это путь к программе, то программа запустится, а если эта программа лежит в systm32 каталоге, то можно написать просто mspaint (например) в одной строчке и щелкнуть по ней контрол+ПКМ, и программа запустится. А если щелкнуть Альт+ПКМ, то открывается папка, в которой лежит этот файл. Наверно не очень понятно описал, попробую завтра выложить здесь программу — она на ahk написано. Возможно, кому-нибудь будет нужна.
Интересно... 1) Но в принципе такое можно делать и через ссылки
2) + есть старинная команда "Открыть как URL" - выделяем текст, правой кнопкой, выбираем команду "Открыть как URL" - Пагесы просто передают ее в ShellExecute на самом деле.
Ну например, написал я в тексте cmd.exe, выделил всю строку cmd.exe, + Shift+F10, выбираю открыть как URL = оп-па, запустился командный интерпретатор Windows.
Posted: 30.10.14 00:53. Post subject: Carc пишет: 1) Но в..
Carc пишет:
quote:
1) Но в принципе такое можно делать и через ссылки
В том-то и задумка, чтобы без ссылок сделать. А ещё я сделал ash для раскраски путей к файлам и они выглядят как ссылки (другого цвета по крайней мере).
Carc пишет:
quote:
2) + есть старинная команда "Открыть как URL" - выделяем текст, правой кнопкой, выбираем команду "Открыть как URL" - Пагесы просто передают ее в ShellExecute на самом деле.
И здесь задумка как раз в том, чтобы ничего не выделять, контекстное меню не вызывать, в нужный пункт меню не целится.
Post №: 7883
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 30.10.14 01:03. Post subject: SetQ пишет: В том-т..
SetQ пишет:
quote:
В том-то и задумка, чтобы без ссылок сделать. А ещё я сделал ash для раскраски путей к файлам и они выглядят как ссылки (другого цвета по крайней мере).
Дык отлично, лишний аш завсегда пригодиться...
SetQ пишет:
quote:
И здесь задумка как раз в том, чтобы ничего не выделять, контекстное меню не вызывать, в нужный пункт меню не целится.
Ну разумно. Другой бы спорил. В принципе могу дать и ID этой команды, "Открыть как URL" - они вообще у меня редко меняются.
А вообще, такое, конечно, не сложно сделать как плагин. Plugin API AP кстати дает прямой доступ к редактору текста (кагбэ компонет известен - RichEdit, HWND его апи наружу выдает). Выделить абзац в RichEdit можно и без кликов (ITextRange::Expand(tomPara) и готово...
Хотя не в способах достижения результат дело, главное что бы глаз и пальцы радовало
Posted: 30.10.14 10:27. Post subject: Carc пишет: В прин..
Carc пишет:
quote:
В принципе могу дать и ID этой команды, "Открыть как URL" - они вообще у меня редко меняются.
Давай! Какой?
Carc пишет:
quote:
А вообще, такое, конечно, не сложно сделать как плагин. Plugin API AP кстати дает прямой доступ к редактору текста (кагбэ компонет известен - RichEdit, HWND его апи наружу выдает). Выделить абзац в RichEdit можно и без кликов (ITextRange::Expand(tomPara) и готово...
Тоже думал про плагин, на ahk несколько неестественно получилось.
Post №: 7885
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 30.10.14 10:36. Post subject: SetQ пишет: Давай! ..
SetQ пишет:
quote:
Давай! Какой?
#define ID_EDIT_OPEN_AS_URL 33235
В принципе, я могу вообще сервисную функцию в AP в Plugin API сделать, нечто вида
enum CMDS_OF_AMLPAGES {CMDAP_???, CMDAP_????} WORD CommandTypeOfAmlToRealCommandID(CMDS_OF_AMLPAGES cmd) {//будет список команд, она по нему будет возвращать реальный Command ID прямо из кода }
Хотя повторюсь, эти ID я уж и не помню когда последний раз менялись.
SetQ пишет:
quote:
Тоже думал про плагин, на ahk несколько неестественно получилось.
Да там и писать то немного. Можно через встраиваемые меню в Aml Pages, можно подписаться на события редактора текста, и что-то в них делать отследить тот WM_DBLCLK и .... что-то там... Наверное проще через меню: открыть абзац как путь: и поехали.
Post №: 7886
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 30.10.14 11:51. Post subject: SetQ пишет: Ага, по..
SetQ пишет:
quote:
Ага, попробую прикрутить. А нет ли ещё такой команды с ID, которая бы копировала в буфер обмена весь текущий абзац текста?
#define ID_EDIT_COPY_RIGHT 33555 Копирование всегда из правой панели (не важно, что там панель папки, или текст, или что)
А если без выделения, то такого в Aml Pages нет. Можно только через плагины сделать: есть HWND редактора текста (AP плагину его выдает), дальше с остановками везде ITextRange - получаем из HWND (TOM - Text Object Model) Дальше можно прямо из него без буфера обмена получить текст абзаца, а можно и выделение изменить. Дальше дело техники.
Posted: 30.10.14 13:05. Post subject: Carc пишет: А если ..
Carc пишет:
quote:
А если без выделения, то такого в Aml Pages нет. Можно только через плагины сделать: есть HWND редактора текста (AP плагину его выдает), дальше с остановками везде ITextRange - получаем из HWND (TOM - Text Object Model) Дальше можно прямо из него без буфера обмена получить текст абзаца, а можно и выделение изменить. Дальше дело техники.
Наверно, с выделением текста проще.
Кстати, если выделять текст вручную ЛКМ в области слева от текста, то в выделение попадает замыкающий символ перевода строки и запуск URL не срабатывет, надо в ручную с шифтом и стрелкой влево снять выделение последнего символа. Это ограничивает запускалку УРЛов по удобству.
Post №: 7887
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 30.10.14 16:11. Post subject: SetQ пишет: Кстати,..
SetQ пишет:
quote:
Кстати, если выделять текст вручную ЛКМ в области слева от текста, то в выделение попадает замыкающий символ перевода строки и запуск URL не срабатывет, надо в ручную с шифтом и стрелкой влево снять выделение последнего символа. Это ограничивает запускалку УРЛов по удобству.
О спасибо! за репорт! Поправлю, будет удалять лидирующие пробелы\переносы тогда перед выполнением.
Post №: 7888
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 02.11.14 11:17. Post subject: SetQ пишет: И замык..
SetQ пишет:
quote:
И замыкающие! У меня такая строчка работает:
Ну само собой. Я вот только думаю, а если в выделенном текста короткий путь, не попробовать ли его предварительно преобразовать в длинный через GetLongPathName?
All times are GMT
3 Hours. Hits today: 6
You can: smiles yes, images yes, types yes, poll no
avatars yes, links on, premoderation off, edit new post no