On-line: guests 0. In total there are: 0 [information..]
AuthorTopic





Post №: 663
Joined: 17.09.08
Rank: 0
link post  Posted: 29.10.14 23:13. Post subject: Запускалка файлов


Сочинил я недавно вспомогательную программу для Пагесов, которая вот что делает: в страницу простого текста я вставляю пути к файлам с которыми мне приходится работать (файлы с чертежами, или текстовые файлы, или pdf-файлы), мне их надо открывать или открывать папку, в которой они лежат. Так вот, при нажатии контрол+правая кнопка мыши программа выделяет тройным ЛКМ весь абзац (а путь к файлу — это один абзац), копирует в буфер обмена, а потом RUN то что в буфере обмена. В результате документ открывается, а если это путь к программе, то программа запустится, а если эта программа лежит в systm32 каталоге, то можно написать просто mspaint (например) в одной строчке и щелкнуть по ней контрол+ПКМ, и программа запустится. А если щелкнуть Альт+ПКМ, то открывается папка, в которой лежит этот файл.
Наверно не очень понятно описал, попробую завтра выложить здесь программу — она на ahk написано. Возможно, кому-нибудь будет нужна.

Спасибо: 0 
ProfileQuote Reply
Replys - 12 [new only]


moderator




Post №: 7882
Joined: 28.05.05
Location: Россия, Москва
Rank: 2
link post  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.

Мазов Гоша aka Carc
  • Aml Pages ВКонтакте
  • Aml Pages on Facebook
  • Личный блог http://nonp.blogspot.com
  • Твиттер
  • ICQ: 86905722 (стабильно invisible, так что пишем не дожидаясь)
  • amlpages@amlpages.com
  • Спасибо: 0 
    ProfileQuote Reply





    Post №: 664
    Joined: 17.09.08
    Rank: 0
    link post  Posted: 30.10.14 00:53. Post subject: Carc пишет: 1) Но в..


    Carc пишет:

     quote:
    1) Но в принципе такое можно делать и через ссылки


    В том-то и задумка, чтобы без ссылок сделать. А ещё я сделал ash для раскраски путей к файлам и они выглядят как ссылки (другого цвета по крайней мере).

    Carc пишет:

     quote:
    2) + есть старинная команда "Открыть как URL" - выделяем текст, правой кнопкой, выбираем команду "Открыть как URL" - Пагесы просто передают ее в ShellExecute на самом деле.


    И здесь задумка как раз в том, чтобы ничего не выделять, контекстное меню не вызывать, в нужный пункт меню не целится.

    Спасибо: 0 
    ProfileQuote Reply
    moderator




    Post №: 7883
    Joined: 28.05.05
    Location: Россия, Москва
    Rank: 2
    link post  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) и готово...

    Хотя не в способах достижения результат дело, главное что бы глаз и пальцы радовало

    Мазов Гоша aka Carc
  • Aml Pages ВКонтакте
  • Aml Pages on Facebook
  • Личный блог http://nonp.blogspot.com
  • Твиттер
  • ICQ: 86905722 (стабильно invisible, так что пишем не дожидаясь)
  • amlpages@amlpages.com
  • Спасибо: 0 
    ProfileQuote Reply





    Post №: 665
    Joined: 17.09.08
    Rank: 0
    link post  Posted: 30.10.14 10:26. Post subject: Вот ash: ; Путь на д..


    Вот ash:

     quote:
    ; Путь на диске D
    [Pairs0]
    Color=0,127,50
    Pairs0='D:\ '
    Count=1
    AutoColor=0

    ; Путь на диске C
    [Pairs1]
    Color=100,0,50
    Pairs0='C:\ '
    Count=1
    AutoColor=0

    ; Путь в локальной сети
    [Pairs2]
    Color=0,0,125
    Pairs0='\\ '
    Count=1
    AutoColor=0




    Вот прога:


     quote:
    #IfWinActive, Aml Pages 9.

    ;F2::Send ^{vk53}
    XButton1::PostMessage, 0x111, 32800, 0, ,Aml
    XButton2::PostMessage, 0x111, 32801, 0, ,Aml
    ~RButton & LButton::WinHide, Aml Pages

    ^RButton::
    GoSub GetParagraph
    Run, %FullFileName%, , UseErrorLevel
    return

    !RButton::
    GoSub GetParagraph
    Run, %dir%, , UseErrorLevel
    return

    #IfWinActive

    GetParagraph:
    MouseClick, left, , , 3
    clipboard =
    Send ^{vk43}
    ClipWait
    MouseClick
    StringTrimRight, FullFileName, clipboard, 2
    SplitPath, FullFileName, name, dir, ext, name_no_ext, drive
    return



    Спасибо: 0 
    ProfileQuote Reply





    Post №: 666
    Joined: 17.09.08
    Rank: 0
    link post  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 несколько неестественно получилось.

    Спасибо: 0 
    ProfileQuote Reply
    moderator




    Post №: 7885
    Joined: 28.05.05
    Location: Россия, Москва
    Rank: 2
    link post  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 и .... что-то там... Наверное проще через меню: открыть абзац как путь: и поехали.

    Мазов Гоша aka Carc
  • Aml Pages ВКонтакте
  • Aml Pages on Facebook
  • Личный блог http://nonp.blogspot.com
  • Твиттер
  • ICQ: 86905722 (стабильно invisible, так что пишем не дожидаясь)
  • amlpages@amlpages.com
  • Спасибо: 0 
    ProfileQuote Reply





    Post №: 667
    Joined: 17.09.08
    Rank: 0
    link post  Posted: 30.10.14 10:41. Post subject: Carc пишет: #define..


    Carc пишет:

     quote:
    #define ID_EDIT_OPEN_AS_URL 33235


    Ага, попробую прикрутить. А нет ли ещё такой команды с ID, которая бы копировала в буфер обмена весь текущий абзац текста?

    Спасибо: 0 
    ProfileQuote Reply
    moderator




    Post №: 7886
    Joined: 28.05.05
    Location: Россия, Москва
    Rank: 2
    link post  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)
    Дальше можно прямо из него без буфера обмена получить текст абзаца, а можно и выделение изменить. Дальше дело техники.

    Мазов Гоша aka Carc
  • Aml Pages ВКонтакте
  • Aml Pages on Facebook
  • Личный блог http://nonp.blogspot.com
  • Твиттер
  • ICQ: 86905722 (стабильно invisible, так что пишем не дожидаясь)
  • amlpages@amlpages.com
  • Спасибо: 0 
    ProfileQuote Reply





    Post №: 668
    Joined: 17.09.08
    Rank: 0
    link post  Posted: 30.10.14 13:05. Post subject: Carc пишет: А если ..


    Carc пишет:

     quote:
    А если без выделения, то такого в Aml Pages нет. Можно только через плагины сделать: есть HWND редактора текста (AP плагину его выдает), дальше с остановками везде
    ITextRange - получаем из HWND (TOM - Text Object Model)
    Дальше можно прямо из него без буфера обмена получить текст абзаца, а можно и выделение изменить. Дальше дело техники.



    Наверно, с выделением текста проще.

    Кстати, если выделять текст вручную ЛКМ в области слева от текста, то в выделение попадает замыкающий символ перевода строки и запуск URL не срабатывет, надо в ручную с шифтом и стрелкой влево снять выделение последнего символа. Это ограничивает запускалку УРЛов по удобству.

    Спасибо: 0 
    ProfileQuote Reply
    moderator




    Post №: 7887
    Joined: 28.05.05
    Location: Россия, Москва
    Rank: 2
    link post  Posted: 30.10.14 16:11. Post subject: SetQ пишет: Кстати,..


    SetQ пишет:

     quote:
    Кстати, если выделять текст вручную ЛКМ в области слева от текста, то в выделение попадает замыкающий символ перевода строки и запуск URL не срабатывет, надо в ручную с шифтом и стрелкой влево снять выделение последнего символа. Это ограничивает запускалку УРЛов по удобству.


    О спасибо! за репорт!
    Поправлю, будет удалять лидирующие пробелы\переносы тогда перед выполнением.

    Мазов Гоша aka Carc
  • Aml Pages ВКонтакте
  • Aml Pages on Facebook
  • Личный блог http://nonp.blogspot.com
  • Твиттер
  • ICQ: 86905722 (стабильно invisible, так что пишем не дожидаясь)
  • amlpages@amlpages.com
  • Спасибо: 0 
    ProfileQuote Reply





    Post №: 669
    Joined: 17.09.08
    Rank: 0
    link post  Posted: 30.10.14 18:49. Post subject: Carc пишет: Поправл..


    Carc пишет:

     quote:
    Поправлю, будет удалять лидирующие пробелы\переносы тогда перед выполнением.


    И замыкающие! У меня такая строчка работает:

     quote:
    StringTrimRight, FullFileName, clipboard, 2



    Спасибо: 0 
    ProfileQuote Reply
    moderator




    Post №: 7888
    Joined: 28.05.05
    Location: Россия, Москва
    Rank: 2
    link post  Posted: 02.11.14 11:17. Post subject: SetQ пишет: И замык..


    SetQ пишет:

     quote:
    И замыкающие! У меня такая строчка работает:


    Ну само собой. Я вот только думаю, а если в выделенном текста короткий путь, не попробовать ли его предварительно преобразовать в длинный через GetLongPathName?

    Мазов Гоша aka Carc
  • Aml Pages ВКонтакте
  • Aml Pages on Facebook
  • Личный блог http://nonp.blogspot.com
  • Твиттер
  • ICQ: 86905722 (стабильно invisible, так что пишем не дожидаясь)
  • amlpages@amlpages.com
  • Спасибо: 0 
    ProfileQuote Reply
    Reply:
    1 2 3 4 5 6 7 8 9
    большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

    показывать это сообщение только модераторам
    не делать ссылки активными
    Username, Password:      register    
    Тему читают:
    - user online
    - user offline
    All times are GMT  3 Hours. Hits today: 17
    You can: smiles yes, images yes, types yes, poll no
    avatars yes, links on, premoderation off, edit new post no