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

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

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

Post by sToLp »

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

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

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

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

Attachments
{{_запускНативныхКомандСоответствующихМенюВыбораМакросовВызванногоИзПанелей(sToLpПоJD)menShe.lua
(4.63 KiB) Downloaded 183 times
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

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: 114 times
Been thanked: 12 times

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

Post by sToLp »

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 198 times
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

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 151 times
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

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: 114 times
Been thanked: 12 times

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

Post by sToLp »

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 “Нужна помощь”