1

Тема: AHK: Переменное значение WinMenuSelectItem

К сожалению, в в теме по мультизадачности клавиши не получил ответа на этот вопрос, поэтому, создал отдельную тему.
Следующий скрипт на основе примера от Irbis открывает новую вкладку в текстовом редакторе по первому нажатию горячей клавиши и открывает новый файл по второму нажатию:

Count := 0
F10::
arr:= ["^n", "^o"], Period := 1000
SendInput % arr[Count := Count*((A_PriorHotkey = A_ThisHotkey)&&(A_TimeSincePriorHotkey<1000))+1]
return

Хотелось бы иметь столь же лаконичный вариант сценария, но с использованием команды WinMenuSelectItem

Count := 0
F10::
arr:= ["File,New", "File,Open..."], Period := 1000
WinMenuSelectItem, SciTE, % arr ????????
return

Как упоминал ранее, было бы отлично, если бы скрипт умел различать заданные параметры и отправлять соответсвующую команду:

Count := 0
F10::
arr:= ["File,New", "^o"], Period := 1000
; если переменная содержит пункты меню, то
WinMenuSelectItem, SciTE, % arr ????????
; иначе 
SendInput % arr[Count := Count*((A_PriorHotkey = A_ThisHotkey)&&(A_TimeSincePriorHotkey<1000))+1]
return 

Спасибо!

2

Re: AHK: Переменное значение WinMenuSelectItem

Так наверное можно:
(Если в пункте меню присутствует запятая, то вписываем ``)
Типа вместо "Cyrillic, Russian" - "Cyrillic`` Russian".

Count := 0
F10::
arr:= ["File,New", "^o"], Period := 1000
var := arr[Count := Count*((A_PriorHotkey = A_ThisHotkey)&&(A_TimeSincePriorHotkey<1000))+1]
if var contains file,new
{
   StringSplit, varArr, var,`,
   if var contains ``
   {
      loop % varArr0
         StringReplace, varArr%A_Index%, varArr%A_Index%, ``, `,, All
   }
   if (varArr0 = 1)
      WinMenuSelectItem, Notepad, , % varArr1
   if (varArr0 = 2)
      WinMenuSelectItem, Notepad, , % varArr1, % varArr2
   if (varArr0 = 3)
      WinMenuSelectItem, Notepad, , % varArr1, % varArr2, % varArr3
   if (varArr0 = 4)
      WinMenuSelectItem, Notepad, , % varArr1, % varArr2, % varArr3, % varArr4
}
else 
   SendInput % var
return 

3

Re: AHK: Переменное значение WinMenuSelectItem

Malcev, к сожалению, отправляется только значение для SendInput, т.е. только второе нажатие вызывает какое-либо действие. Если поменять значения переменной местами, то срабатывает первое нажатие соответственно:

arr:= ["^o", "File,New"]

4

Re: AHK: Переменное значение WinMenuSelectItem

Странно. У меня в notepad работает.
Может вы не заменили WinMenuSelectItem, Notepad на название окна своего приложения?

5

Re: AHK: Переменное значение WinMenuSelectItem

Malcev, да, точно, не обратил внимания на это. Похоже, что вопрос решен! Большое спасибо! Сейчас попробую еще объединить с режимами.