Простой вызов нативных команд из меню выбора макросов

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 8 times

Простой вызов нативных команд из меню выбора макросов

Post by sToLp » Thu 23 Nov, 2017 17:34

Сконструировал вот макрос, который по двойному нажатию модификатора Shift в меню выбора макросов, запущенного из панелей, запускает нативную команду, соответствующую ключу, которым было вызвано данное меню выбора.

Он составлен на случаи, когда собираешься вызвать внутреннюю команду Far, не заботясь о том, не навешаны ли на данный ключ макросы, перебивающие нативную команду. А, вызвав меню выбора макросов просто нажимаешь дважды Shift и получаешь-таки ожидаемый результат.

Хотелось бы ещё расширить возможности этого макроса так:
а) чтобы он мог работать из меню выбора макросов, запущенных макросами из любой макрообласти, а не только из Shell;
и
б) чтобы в случаях отсутствия нативной команды выдавалось бы сообщение об этом.

Но у меня, увы, не достаёт для этого компетенции. Поэтому желательна помощь форумчан.

Attachments
{{_запускНативныхКомандСоответствующихМенюВыбораМакросовВызванногоИзПанелей(sToLpПоJD)menShe.lua
(4.63 KiB) Downloaded 151 times

User avatar
John Doe
Бюрократ
Posts: 12360
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 171 times

Простой вызов нативных команд из меню выбора макросов

Post by John Doe » Thu 23 Nov, 2017 19:22

Настоятельно прошу вас воздержаться от использования Лишних функций.
Нет никакого желания разбираться чего вы там из них наворотили.

Code: Select all

local maxDelay = 500 -- промежуток времени между двумя нажатиями пусковой клавиши (в миллисекундах)
local t = 0
local ID = "165AA6E3-C89B-4F82-A0C5-C309243FD21B"
Macro {
description=[[Выйти из меню выбора lua-макросов, с запуском соответствующей данному меню нативной команды по двойному нажитию Shift`а
(задумка sToLp реализуется методами, перенятыми на форуме Far)]];
  area="Menu";
  key="Shift"; -- нажимать дважды подряд
  id="F7F35368-2574-4EB9-98CD-6E3D7C74A5F1";
  condition=function()
    if Menu.Id==ID then
      local t1 = Far.UpTime
      local delay = t1-t
      t = t1
      return delay<maxDelay
    -- данный condition обеспечивает срабатывание ключа на двойное нажатие
    -- и работу макроса только в меню выбора макросов, запущенном макросом из панелей
    end
  end;
  action=function()
    local key=Object.Title:match"| (.+)$"
    Keys("F10") -- возврат из меню
    Keys(key)
  end;
}
а) примерно так (но не тестировал)
б) это можно сделать используя вашу базу стандартных сочетаний, другого пути нет.

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 8 times

Простой вызов нативных команд из меню выбора макросов

Post by sToLp » Thu 23 Nov, 2017 21:46

John Doe wrote:
Thu 23 Nov, 2017 19:22
sToLp wrote:
Thu 23 Nov, 2017 17:34
чтобы он мог работать из меню выбора макросов, запушенных макросами из любой макрообласти, а не только из Shell
примерно так
Изящно и шикарно! Очень Вам благодарен за помощь!

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

Ниже прикрепляю версию макроса от John Doe для тех, кто захочет макрос скачать.

John Doe wrote:
Thu 23 Nov, 2017 19:22
sToLp wrote:
Thu 23 Nov, 2017 17:34
чтобы в случаях отсутствия нативной команды выдавалось бы сообщение об этом
это можно сделать используя вашу базу стандартных сочетаний, другого пути нет.
"База стандартных сочетаний" сама по себе несообразно велика по сравнению с данным изящным макросом. В интересах освоения способов применения макросов попробую-таки всё же с нею и данным макросом поупражняться. И посмотрю, что из этого получится. Хотя, сугубо интуитивно, совсем не хочется утяжелять данный макрос. И, поскольку нет простого способа выявления отсутствия назначения нативных команд на клавиши и их сочетания, то, наверное, пока целесообразно всё же будет довольствоваться фактом отсутствия реакции на попытки вызова внутренних команд клавишами, на которые таковые ещё не назначены.


John Doe wrote:
Thu 23 Nov, 2017 19:22
Настоятельно прошу вас воздержаться от использования Лишних функций
Большое спасибо Вам за вполне конкретный совет! Попробую освоить указанную махину информации. Но не могу гарантировать, что практический результат будет скорым.
Attachments
{{_запускНативныхКомандСоответствующихМенюВыбораМакросов(JD)men.lua
(1.83 KiB) Downloaded 169 times

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 8 times

Простой вызов нативных команд из меню выбора макросов

Post by sToLp » Fri 24 Nov, 2017 20:10

sToLp wrote:
Thu 23 Nov, 2017 21:46
John Doe wrote:
Thu 23 Nov, 2017 19:22
sToLp wrote:
Thu 23 Nov, 2017 17:34
чтобы в случаях отсутствия нативной команды выдавалось бы сообщение об этом
это можно сделать используя вашу базу стандартных сочетаний, другого пути нет.
"База стандартных сочетаний" сама по себе несообразно велика по сравнению с данным изящным макросом. В интересах освоения способов применения макросов попробую-таки всё же с нею и данным макросом поупражняться. И посмотрю, что из этого получится.
Собственно получается, на мой взгляд, вполне приемлемо. С учётом вышеуказанной громоздкости "Базы стандартных сочетаний", как Вы её называете.

Для удобства работы с предваряющими сообщениями добавил макрос для их выполнения также двойными нажатиями Shift`а. Чтобы можно было в меню выбора макросов дважды нажать Shift, увидеть диалог с предупреждением, и снова дважды нажав всё тот же Shift получить ожидаемый результат.
Attachments
{{_запускНативныхКомандСоответствующихМенюВыбораМакросов-сВыводомДопИнфы(JD)[20171124-2]men.lua
(168.93 KiB) Downloaded 116 times

2useven10
Posts: 3911
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 164 times

Простой вызов нативных команд из меню выбора макросов

Post by 2useven10 » Fri 24 Nov, 2017 20:33

sToLp wrote:
Fri 24 Nov, 2017 20:10
и снова дважды нажав всё тот же Shift
итого 4 -- ещё 1 раз и sticky keys появится.

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 8 times

Простой вызов нативных команд из меню выбора макросов

Post by sToLp » Fri 24 Nov, 2017 20:44

2useven10 wrote:
Fri 24 Nov, 2017 20:33
sToLp wrote:
Fri 24 Nov, 2017 20:10
и снова дважды нажав всё тот же Shift
итого 4 -- ещё 1 раз и sticky keys появится.
В Win10 это легко отключается, если что.

Post Reply

Return to “Нужна помощь”