Возможно дело в persistent, попробуй убери его
» AutoHotkey
Директивы #if влияют лишь на нижележащие горячие клавиши.
Код: #If (A_Cursor = "IBeam")
Код: #If (A_Cursor = "IBeam")
aidomars 16:06 08-05-2013
Цитата:
Нет, это я и сам уже пробовал. Впрочем, эта директива #persistent здесь, скорее всего, вообще лишняя. Я её убрал, но это ни на что не повлияло: при ручном запуске файла группы учитываются, при запуске через #include - игнорируются.
creature_ws 16:16 08-05-2013
Цитата:
Здесь не к месту.
Цитата:
Возможно дело в persistent, попробуй убери его
Нет, это я и сам уже пробовал. Впрочем, эта директива #persistent здесь, скорее всего, вообще лишняя. Я её убрал, но это ни на что не повлияло: при ручном запуске файла группы учитываются, при запуске через #include - игнорируются.
creature_ws 16:16 08-05-2013
Цитата:
Директивы #if влияют лишь на нижележащие горячие клавиши.
Код: #If (A_Cursor = "IBeam")
Здесь не к месту.
Цитата:
А чем эти правила нарушает мой скрипт??
Цитата:
Я её просто для наглядности привёл
Т.е. как выглядит скрипт неизвестно, но вопрос «чем же он неправилен» вы задаёте. Теперь суть ваших вопросов мне понятна, постараюсь не вмешиваться в ваше развлечение.
oshizelly
Вставь в главный скрипт вместо #Include код того скрипта и посмотри где останов происходит и доходит ли выполнение вообще до GroupAdd.
Вставь в главный скрипт вместо #Include код того скрипта и посмотри где останов происходит и доходит ли выполнение вообще до GroupAdd.
aidomars 22:02 08-05-2013
Цитата:
Не совсем понял, почему сомнение. Ведь строки собственно кода, блокирующего клавишу Insert, расположены НИЖЕ строк, задающих исключения. Следовательно, раз клавиша блокируется, то обработка скрипта доходит до последней строки скрипта.
Цитата:
Уже вставлял. Результат такой: при определении исключаемых классов прямо в строке с директивой #IfWinNotActive исключения учитываются:
Код: #IfWinNotActive, ahk_class TTOTAL_CMD
{
Insert::return
NumpadIns::return
}
Цитата:
посмотри где останов происходит и доходит ли выполнение вообще до GroupAdd.
Не совсем понял, почему сомнение. Ведь строки собственно кода, блокирующего клавишу Insert, расположены НИЖЕ строк, задающих исключения. Следовательно, раз клавиша блокируется, то обработка скрипта доходит до последней строки скрипта.
Цитата:
Вставь в главный скрипт вместо #Include код того скрипта
Уже вставлял. Результат такой: при определении исключаемых классов прямо в строке с директивой #IfWinNotActive исключения учитываются:
Код: #IfWinNotActive, ahk_class TTOTAL_CMD
{
Insert::return
NumpadIns::return
}
Цитата:
Но если этот же самый скрипт с определением через группы вставить в отдельный файл, то код работает, как ожидалось
Противоречит разуму, странно.
Есть ли возможность с помощью autohotkey с определенным интервалом посылать определенному окну(класс окна, заголовок) определенную комбинацию клавиш?
Есть
В актуальной версии Autohotkey добавлена поддержка Windows Vista+ командам SoundSet, SoundGet etc.
Цитата:
Цитата:
Support for Windows Vista and later was added in v1.1.10.SoundSet
А есть ли способ узнать - какой контрол активный? (класс активного контрола)
Например, есть две кнопки - ОК и Отмена, одна активна (при нажатии на Enter она нажмётся), вторая нет.
Или определить активную панель файлового менеджера.
Или хотя бы как проверить активность из списка известных классов ? (например, известно, что в 32-х битном Тотал коммандере левая панель имеет ClassNN: TMyListBox2, а правая - ClassNN:TMyListBox1. Цель - узнать активную.
И второй вопрос (не смог найти в справке).
Есть ли в AutoHotkey аналог Select...Case или единственный вариант - if... else if... else if... ?
Например, есть две кнопки - ОК и Отмена, одна активна (при нажатии на Enter она нажмётся), вторая нет.
Или определить активную панель файлового менеджера.
Или хотя бы как проверить активность из списка известных классов ? (например, известно, что в 32-х битном Тотал коммандере левая панель имеет ClassNN: TMyListBox2, а правая - ClassNN:TMyListBox1. Цель - узнать активную.
И второй вопрос (не смог найти в справке).
Есть ли в AutoHotkey аналог Select...Case или единственный вариант - if... else if... else if... ?
LonerDergunov
1. WinGetClass, class, A
MsgBox, Класс активного окна "%class%"
2. Вроде нет
1. WinGetClass, class, A
MsgBox, Класс активного окна "%class%"
2. Вроде нет
aidomars
Спасибо, но немного не то. Класс не окна, а активного контрола.
Ночь темна и полна ужасов , столько искал и нового узнал..., а утром сразу нашёл в справке - команда ControlGetFocus
Спасибо, но немного не то. Класс не окна, а активного контрола.
Ночь темна и полна ужасов , столько искал и нового узнал..., а утром сразу нашёл в справке - команда ControlGetFocus
А ну да, сбил с толку Тотал коммандер
Решил попробовать в качестве альтернативного решения запускать скрипты из нескольких AHK-файлов через батник .BAT. Однако если скрипт уже запущен, то, как известно, AHK выдаёт запрос на подтверждение перезапуска. Как в параметрах командной строки указать, чтобы запрос не выдавался или чтобы автоматически отвечалось "Yes"? Искал ответы на офф-форуме и в Гугле, но нашёл только массу советов по передаче скрипту параметров командной строки запускаемой проги, а это совсем не то...
И ещё (возможно, немного офф-топ, но уж заодно спрошу) : после запуска скрипта окна командного процессора остаются висеть, приходится закрывать их потом вручную. Можно ли как-то сделать, чтобы они закрывались автоматически?
Спасибо!
И ещё (возможно, немного офф-топ, но уж заодно спрошу) : после запуска скрипта окна командного процессора остаются висеть, приходится закрывать их потом вручную. Можно ли как-то сделать, чтобы они закрывались автоматически?
Спасибо!
oshizelly
Цитата:
Если одновременно несколько разных AHK запускать - то ничего не должно выдаваться. А вот если один и тот же скрипт несколько раз запускать - то для регулировки поведения есть директива #SingleInstance.
Цитата:
Это про консоль речь? Вызывать её с параметром /k (ошибся) /c
cmd.exe /k (или %comspec% /k ) cmd.exe /c (или %comspec% /c )
Цитата:
запускать скрипты из нескольких AHK-файлов через батник .BAT. Однако если скрипт уже запущен, то, как известно, AHK выдаёт запрос на подтверждение перезапуска
Если одновременно несколько разных AHK запускать - то ничего не должно выдаваться. А вот если один и тот же скрипт несколько раз запускать - то для регулировки поведения есть директива #SingleInstance.
Цитата:
окна командного процессора остаются висеть, приходится закрывать их потом вручную.
Это про консоль речь? Вызывать её с параметром /k (ошибся) /c
cmd.exe /k (или %comspec% /k ) cmd.exe /c (или %comspec% /c )
LonerDergunov 12:46 10-06-2013
Цитата:
Прошу прошения, не въехал. Если сейчас строка в батнике выгляди, допустим, так:
Код: start "C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"
Цитата:
Это про консоль речь? Вызывать её с параметром /k
cmd.exe /k (или %comspec% /k )
Прошу прошения, не въехал. Если сейчас строка в батнике выгляди, допустим, так:
Код: start "C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"
oshizelly
%comspec% /k start ......
Хотя в данном случае start вообще не нужен, достаточно просто:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"
%comspec% /k start ......
Хотя в данном случае start вообще не нужен, достаточно просто:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"
LonerDergunov 16:25 10-06-2013
Цитата:
Чего-то я не так делаю. Или, может, объяснил ситуацию не очень внятно.
Одна строка была приведена в моём предыдущем посте как образец, а вообще-то в этом батнике их несколько.
Однако при использовании префикса %comspec% /k запускается только скрипт из первой строки, а последующие строки игнорируются.
Пробовал писать его и в начале только первой строки, и в начале каждой. Результат всё равно один и тот же: запускается только скрипт из первой строки.
А если убрать команду start, то вообще выдаётся ошибка: нет, мол, такой внутренней команды. И ведь не поспоришь, действительно нет такой команды
А окно консоли так и остаётся висеть.
Цитата:
%comspec% /k start ......
Хотя в данном случае start вообще не нужен, достаточно просто:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"
Чего-то я не так делаю. Или, может, объяснил ситуацию не очень внятно.
Одна строка была приведена в моём предыдущем посте как образец, а вообще-то в этом батнике их несколько.
Однако при использовании префикса %comspec% /k запускается только скрипт из первой строки, а последующие строки игнорируются.
Пробовал писать его и в начале только первой строки, и в начале каждой. Результат всё равно один и тот же: запускается только скрипт из первой строки.
А если убрать команду start, то вообще выдаётся ошибка: нет, мол, такой внутренней команды. И ведь не поспоришь, действительно нет такой команды
А окно консоли так и остаётся висеть.
удалено. предыдущее сообщение поправил.
ответил в личку.
ответил в личку.
Имеются три скрипта:
Код: #!F12::
Send {Home}
Send {Shift Down}
Send {End}
Send {Shift Up}
Send ^c
Код: #!F12::
Send {Home}
Send {Shift Down}
Send {End}
Send {Shift Up}
Send ^c
Код: #!F12::Send {Home}+{End}^{vk43}
#!F11::Send +{End}^{vk43}
#!F10::Send +{Home}^{vk43}
creature_ws
Работает! Спасибо!
Я сначала делал так:
Код: #!F12::
Send {Home}
Send +{End}
Send ^с
Работает! Спасибо!
Я сначала делал так:
Код: #!F12::
Send {Home}
Send +{End}
Send ^с
Цитата:
Может потому, что код не в одну строку
Это без разницы.
Цитата:
Shift нажимался одновременно с End, выделение строки не происходило
Чтобы удерживать нажатой или отпустить клавишу, поместите в фигурные скобки её имя и слово Down (вниз) или Up (вверх). Например:
Send {b down}{b up}
Send {TAB down}{TAB up}
Send {Up down} ; Нажать клавишу "Стрелка вверх".
Sleep 1000 ; Держать её нажатой 1 секунду.
Send {Up up} ; Отпустить.
aidomars
Спасибо за подробное объяснение.
Но если
Цитата:
почему так работает
Код: #!F12::Send {Home}+{End}^{vk43}
#!F11::Send +{End}^{vk43}
#!F10::Send +{Home}^{vk43}
Спасибо за подробное объяснение.
Но если
Цитата:
Это без разницы
почему так работает
Код: #!F12::Send {Home}+{End}^{vk43}
#!F11::Send +{End}^{vk43}
#!F10::Send +{Home}^{vk43}
Цитата:
а так нет
Поставьте Return в месте окончания действия горячей клавиши.
Если горячая кл. выполняется в строку, то в Return нет необходимости.
aidomars
Вот он, последний штрих! Теперь все работает.
Спасибо!
Вот он, последний штрих! Теперь все работает.
Спасибо!
Подскажите, каким образом можно заблокировать кнопку мыши над определёнными окнами/контролам
Вот например такой случай - при открытом окне Тотала заблокировать клик левой кнопки мыши по определённым контролам. Вот такая конструкция не работает:
Код: #NoEnv
#NoTrayIcon
#Persistent
#SingleInstance force
#IfWinActive, ahk_class TTOTAL_CMD
LButton::
{
ControlGetFocus, aControl, ahk_class TTOTAL_CMD
if ((aControl = "THeaderClick1") || (aControl = "THeaderClick2"))
Return
else
Send, {LButton}
}
Return
Вот например такой случай - при открытом окне Тотала заблокировать клик левой кнопки мыши по определённым контролам. Вот такая конструкция не работает:
Код: #NoEnv
#NoTrayIcon
#Persistent
#SingleInstance force
#IfWinActive, ahk_class TTOTAL_CMD
LButton::
{
ControlGetFocus, aControl, ahk_class TTOTAL_CMD
if ((aControl = "THeaderClick1") || (aControl = "THeaderClick2"))
Return
else
Send, {LButton}
}
Return
Код: #If, CheckUp()
LButton::Return
CheckUp()
{
MouseGetPos,,, winID, nameControl
WinGetClass, winClass, % "ahk_id"winID
Return, winClass="TTOTAL_CMD" And nameControl~="THeaderClick(1|2)" ? True:False
}
OnMyDSeeAtAll
Спасибо. Ваши лаконичные и в то же время ёмкие решения продолжают меня поражать.
Спасибо. Ваши лаконичные и в то же время ёмкие решения продолжают меня поражать.
Страницы: 12345678910111213141516171819202122232425262728293031323334
Предыдущая тема: как добавить ивритские шрифты
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.