1

Тема: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Пожалуй единственный недостаток в AutoHotkey, если в Autodesk Maya запущено несколько окон (плагины, опции, оконные панели и т. п.), особенно где есть поле для ввода данных, чисел, текста, чего угодно, то, когда я скрываю и открываю текущее окно, например Капслоком в этот момент другое открытое окно обязательно начинает перехватывать действие и получается, что срабатывает через раз, приходится нажимать Капслок два раза, чтобы скрыть или открыть окно (выполнить команду), смотря на какое действие переназначена клавиша.

Можно как-то это исправить?

Живые примеры:

Capslock::
Send +f
KeyWait, Capslock
Return

!Capslock:: ; при нажатии alt capslock отправится alt shift f
Send !+{vk46}
KeyWait, Capslock
Return

2

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

#IfWinActive

3

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Как мне это правильно состыковать?
Ведь все окна, они находятся внутри Maya, а не отдельными программами.

4

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

У всех окон одинаковые WinTitle, WinText, ahk_class, ahk_id?

5

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Два простых окна:

1)

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Script Editor
ahk_class QWidget

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen:	1388, 470  (less often used)
In Active Window:	954, 316

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN:	QWidget19
Text:	qt_scrollarea_viewport
Color:	0x2E2E2E  (Blue=2E Green=2E Red=2E)

>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: 434     top: 154     width: 1059     height: 672

>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
mayaLayoutInternalWidget
scriptEditorPanel1
formLayout37
formLayout39
paneLayout1
mayaLayoutInternalWidget
qt_scrollarea_viewport
tabLayout2
mayaLayoutInternalWidget
qt_tabwidget_stackedwidget
formLayout41
qt_scrollarea_viewport
frameLayout6
mayaLayoutInternalWidget
formLayout38
flowLayout7
scriptEditorToolbarGotoLineButton
scriptEditorToolbarGotoField
searchSeperator
scriptEditorToolbarSearchDownUp
scriptEditorToolbarSearchDownButton
scriptEditorToolbarSearchField
executeSeperator
executeButton
executeAllButton
optionsSeperator
showLineNumbersButton
echoAllCommandsButton
showSeperator
showBothButton
showInputButton
showHistoryButton
clearSeperator
clearAllButton
clearInputButton
clearHistoryButton
fileSeperator
saveScriptToShelfButton
saveScriptButton
sourceScriptButton
openScriptButton

>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<
mayaLayoutInternalWidget
qt_splithandle_
mayaLayoutInternalWidget
mayaLayoutInternalWidget
mayaLayoutInternalWidget
qt_scrollarea_vcontainer
qt_scrollarea_hcontainer
mayaLayoutInternalWidget
qt_tabwidget_stackedwidget
formLayout44
qt_scrollarea_hcontainer
qt_scrollarea_viewport
textField5
qt_scrollarea_hcontainer
qt_scrollarea_hcontainer
qt_scrollarea_viewport
qt_scrollarea_hcontainer
qt_scrollarea_viewport
mayaLayoutInternalWidget
scriptEditorPanel1

>>>>( TitleMatchMode=slow Visible Text )<<<<
qt_splithandle_
cmdScrollFieldReporter1
formLayout40
MEL
cmdScrollFieldExecuter1

>>>>( TitleMatchMode=slow Hidden Text )<<<<
qt_splithandle_
tabLayout3
Quick Help
textScrollList1
qt_scrollarea_vcontainer
qt_scrollarea_vcontainer
formLayout42
cmdScrollFieldExecuter2
qt_scrollarea_vcontainer
formLayout43
cmdScrollFieldExecuter3
qt_scrollarea_vcontaine

2)

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
mUVsnap
ahk_class QWidget

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen:	1314, 549  (less often used)
In Active Window:	681, 195

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<

Color:	0xC8D0D4  (Blue=C8 Green=D0 Red=D4)

>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: 633     top: 354     width: 175     height: 112

>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
rowLayout1

>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<

>>>>( TitleMatchMode=slow Visible Text )<<<<
rowLayout2
cancel
getDist
accept
floatSlider1
floatField6

>>>>( TitleMatchMode=slow Hidden Text )<<<<

6

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

AutoIt3 Window Spy?
У первого окна заголовок Script Editor, у второго - mUVsnap.

7

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

И как мне сделать, чтобы окна работали без задержек?

Я какбы не разбираюсь сильно в программировании, поэтому туплю во многом. Уж простите.
Поэтому обратился к специалистам.

Мечта задействовать неактивные хоткеи в Майке.

8

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

И как мне сделать, чтобы окна работали без задержек?

...
Мечта задействовать неактивные хоткеи в Майке.

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

9 (изменено: Алексей, 2011-09-05 09:17:30)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Вопрос тот же. Я понять не могу мне надо для каждого нового окна прописывать имя?

Например у меня Alt+Caplock это тогглица окно Гипершейд и надо его оградить от всех остальных окон у которых есть поле для ввода данных, которое и перехватывает действие, когда я скрываю или открываю Гипершейд комбинацией клавиш. Но это не значит, что я не смогу огткрывать и другие окна другими комбинациями и они так же должны быть защищены от перехватывания, например тем же Гипершедом или СкриптЭдитором. Когда я нажимаю Alt+Caplock мне нужно, чтобы всегда тогглился Гипершейд и ничего не мешало этому процессу и так для всего остального. Вопрос остаётся прежним, но сформулирован по-другому.

Тогглица Гипершейд:

Capslock::
Send +f
KeyWait, Capslock
Return

10 (изменено: Алексей, 2011-09-05 13:07:25)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Видимо это специфика всех программ.

11

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Алексей, я так и не понял вопрос. Предлагаю изложить его с соблюдением правил русского языка.
Расскажите, как работает Autodesk Maya; как это приложение должно себя вести при использовании скрипта AutoHotkey?

Я сначала подумал, что AutoHotkey посылает нажатия клавиш не в то окно, которое Вам хотелось бы. Но после последнего сообщения совсем запутался.

12

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Внутри самой Майя можно открывать окна разного типа и назначения. Окна могут быть плавающие и встроенные. Любое окно может быть плавающим, а можно и встроить в интерфейс с помощью команд, а если это уже сделано заводом изготовителем, то окно можно одним движением мышки перетаскивать в любую точку экрана и оно будет вливаться в интерфейс автоматически. Это сделано с помощью Qt интерфейса, который встроили в Майя в недавнем времени. До этого интерфейс Майя был написан на 98% собственным встроенным языком MEL. Можно было производить абсолютные любые манипуляции с интерфейсом, изменять всё что угодно, порой даже диву даешься. Сейчас так же можно использовать MEL, но и Qt Python. Python так же встроили, как внутренний язык и подаются команды через Script Editor, как и MEL. есть ещё способы, но это не важно.

Например, окна:
* Attribute Editor - название говорит само за себя, обычное окно в котором производятся манипуляции со свойствами объектов в сцене.
* Script Editor - окно из которого подаются команды к ядру Майя. Это окно всегда перехватывает работу АвтоХоткея, т.к., имеет поле для ввода данных.
* UV Texture Editor - ПанельОкно (PanelWindow). Это окно отличается от остальных окон типом и предназначается для определенных целей в программе. Редактор ЮВ Шеллов\Текстур.

Для комфортной работы я использую два монитора и на всех расположены разные окна Майя. Маленькие окна, которые не занимают много места всё время висят, большие UV Texture Editor и т.п. сворачиваются, т.к., занимают много места (один монитор полностью), так устроен принцип работы для выполнения задач в 3Д редакторе Майя.

UV Texture Editor, это одно из окон, которое используется у меня при помощи АвтоХоткея.

Я сделал внутри Майя команду на запуск окна и на его сворачивание.
Проиграл команду окно открылось, проиграл ещё раз эту же команду окно свернулось, получился "тогглер"(toggle).
Назначил на эту команду сложную комбинацию клавиш, до которой пальцы не достанут и которая не используется программой, например Ctrl+Shift+Alt+P и АвтоХоткеем перевёл на CapsLock, (который кстати в Maya не доступен) иначе мне АвтоХоткей не понадобился бы.

Получается так: Я нажал CapsLock открылось окно UV Texture Editor, нажал ещё раз, окно свернулось.

Представим у меня висит много других окон, которые и мешают правильной работе АвтоХоткея. Получаетсмя так, что приходится нажимать CapsLock два, три раза, чтобы свернуть окно, т.к., какой-нибудь Script Editor перехватывает действие на себя, на своё поле для ввода данных. Таких окон много, почти все наверное, которые перехватывают.

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

Вот ещё один момент, который я упустил. Я выделил пустую зону, чтобы снять выделение с окна, которое мешает, например Script Editor, нажал CapsLock открылось окно UV Texture Editor, далее, я нажимаю ещё раз CapsLock, UV Texture Editor сворачивается и тут же становится активным Script Editor, который и не даёт возможность снова запустить UV Texture Editor, пока я не сниму с него выделение щёлкнув по пустой зоне (по Майя) и только тогда, я смогу развернуть UV Texture Editor, но чаще всего приходится жать CapsLock два раза, чтобы открыть UV Texture Editor, как бы получается выделение само спадает со Script Editor'a команда доходит и окно открывается.

Видео записал, без звука, но думаю понятно будет.
http://www.screencast.com/t/LdtKuzSO

13 (изменено: creature.ws, 2011-09-08 13:58:47)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Правильный подход к объяснению

Уточню, "Гипершейд Тогглица" лишь в том случае, если назначенная на это действие горячая клавиша в Майа отправляется в "пустую зону". Т.е. желаемое поведение окон будет достигнуто если назначенная в ahk горячая клавиша будет всегда отправляться в "пустую зону"

Для этого есть команда ControlSend.
В поле "Control" следует вписать значение ClassNN отображаемое в AU3_Spy для "пустой зоны" (главного окна майа?)

14

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

И традиционный вопрос. Как мне это правильно состыковать? Будьте добры, помогите.
Нужно на каждую клавишу вписывать ControlSend или достаточно один раз?

Я сделал так, пока результат нулевой.

ControlSend [, QWidgetOwnDC4 ]

Capslock::
Send +f
KeyWait, Capslock
Return

!Capslock:: ; при нажатии alt capslock отправится alt shift f
Send !+{vk46}
KeyWait, Capslock
Return

Numpad8::
Send ^!p
KeyWait, Numpad8 ; Top
Return

Numpad5::
Send ^!k 
KeyWait, Numpad5 ; Home
Return

Numpad4::
Send ^!' 
KeyWait, Numpad4 ; Left
Return

15 (изменено: creature.ws, 2011-09-08 15:24:42)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Естественно нулевой
Синтаксис ControlSend описан по ссылке выше.
Нужно на каждую клавишу вписывать ControlSend, один раз недостаточно.
ControlSend это условно равнозначная замена Send в случае если клавиши следует отправлять в неактивное окно.

Вот нерабочая заготовка, для упрощения понимания:


Capslock::
ControlSend, XXX, +{vk46}, YYY
KeyWait, Capslock
Return
 
!Capslock:: 
ControlSend, XXX, !+{vk46}, YYY
KeyWait, Capslock
Return
 
Numpad8::
ControlSend, XXX, ^!{vk50}, YYY
KeyWait, Numpad8
Return
 
Numpad5::
ControlSend, XXX, ^!{vk4B}, YYY
KeyWait, Numpad5 
Return
 
Numpad4::
ControlSend, XXX, ^!{vkDE}, YYY
KeyWait, Numpad4 
Return

Внимание!
Вместо XXX вписать значение ControlNN из AU3_Spy для "пустой зоны"
Вместо YYY вписать заголовок окна содержащего "пустую зону" . В случае если окно имеет динамический заголовок - используйте class окна

16

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Я не нашел ControlNN, есть только ClassNN:
http://img62.imageshack.us/img62/7546/activwin.png

Заголовок получается это?

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Maya
ahk_class QWidget

17

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

creature.ws пишет:

В поле "Control" следует вписать значение ClassNN отображаемое в AU3_Spy для "пустой зоны" (главного окна майа?)

Повторы ранее сказанного неизбежно ведут к опечаткам.

ClassNN - QWidgetOwnDC4
заголовок - Maya

18 (изменено: Алексей, 2011-09-08 16:27:46)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

не работает!

Capslock:: 
ControlSend, QWidgetOwnDC4, +{vk46}, Maya
KeyWait, Capslock
Return

19 (изменено: creature.ws, 2011-09-08 16:30:38)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Чтож, устанавливать майу ради тестирования не возьмусь
Ничем не могу помочь.

20 (изменено: Алексей, 2011-09-08 17:12:52)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Понимаю, спасибо и на этом.

Не работает в плане вообще ничего не запускается и не реагирует.

21

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Алексей, судя по видеоролику, проблема в том, что при переключении между режимами в фокус ввода попадает ненужное окно (в некотором роде "последнее активное"). В результате нажатия посылаются в него, а не в целевое окно. Требуется направить нажатия в главное окно, правильно?

22

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

ypppu, да, именно последнее активное, даже больше скажу, последняя выделенная ячейка для ввода.

Требуется, чтобы окна, ячейки не перехватывали действия АвтоХоткея, чтобы, я не нажимал по два, три раза на кнопку для того чтобы открыть Uv Texture Editor. Естественно ЮВТекстурЭдитором ничего не ограничивается у меня много окон, которые нужно тогглить.

Как это решить, я не знаю, если направить нажатие в главное окно поможет решить проблему, то правильно.

23

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Алексей, я заменил в Вашем коде коману Send на ControlSend:

Capslock::
ControlSend, , +f, Maya, , ,
KeyWait, Capslock
Return
 
!Capslock:: ; при нажатии alt capslock отправится alt shift f
ControlSend, , !+{vk46}, Maya, , ,
KeyWait, Capslock
Return

24

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

ypppu, спасибо за помощь.

Вот что получилось. После нажатия на КапсЛюк, один раз запустился ЮВТекстурЭдитор и на этом всё, больше он не реагировал на нажатие никак, не сворачивался и не разворачивался. Закрыл его вручную, снова жму КапсЛюк, не реагирует.

Только после перезапуска скрипта, ТекситурЭдитор опять один раз запустился и на этом замолк.

25

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

А если так попробовать?

Capslock::
ControlSend, , +f, Maya, , ,
Return
 
!Capslock:: ; при нажатии alt capslock отправится alt shift f
ControlSend, , !+{vk46}, Maya, , ,
Return

26

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Так тоже самое, один раз запустился и замер. Темболее KeyWait, это очень нужная вещь.

27

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

А если Shift+F нажимать вручную, а не через AutoHotkey, Maya ведёт себя как задумано?

28

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Угу, ведёт себя не как задуманно.

29

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Можно это вылечить?

30

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Попробуйте запустить Maya, затем AU3_Spy, затем скрипт (последний вариант). Один раз нажмите CapsLock при активном окне Maya, затем снимите показания AU3_Spy и выложите в этой теме (как в соощении #16).

31

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Вот пожалуйста, сделал всё, как вы говорили.

http://img820.imageshack.us/img820/1349/activewinspymayauvtexed.png

32

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Вроде понятно, у окна меняется заголовок (window title) с "Maya" на "UV Texture Editor". Я завтра что-нибудь придумаю, пока сами поэкспериментируйте с кодом.

33

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Конечно меняется, ведь я открыл окно UV Texture Editor нажатием на КапсЛок. Эти данные относятся к окну UV Texture Editor, т.к., оно на данный момент было активно и АвтоХоткейСпайСпай вывел инфу для этого окна.

34

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Проверьте такой код:


Capslock::
IfWinExist, Maya
ControlSend, , +f, Maya, , ,
Else
{
IfWinExist, UV Texture Editor
ControlSend, , +f, UV Texture Editor, , ,
}
Return

!Capslock:: ; при нажатии alt capslock отправится alt shift f
IfWinExist, Maya
ControlSend, , !+{vk46}, Maya, , ,
Else
{
IfWinExist, UV Texture Editor
ControlSend, , !+{vk46}, UV Texture Editor, , ,
}
Return

35

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Так работает, но только, если самому запустить ТекстурЭдитор и предварительно его выделить. Тогглица, если всё время выделять ТекстурЭдитор, иначе не реагирует. Если выделено "ничего", т.е., вьюпорт Майя, тогда КаплЛюк работает, как родная Майская кнопка "F".

36

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Проверьте такой код:


Capslock::
IfWinExist, Maya
ControlSend, , +f, Maya, , ,
Else
{
IfWinExist, UV Texture Editor
WinActivate , UV Texture Editor
ControlSend, , +f, UV Texture Editor, , ,
}
Return

!Capslock:: ; при нажатии alt capslock отправится alt shift f
IfWinExist, Maya
ControlSend, , !+{vk46}, Maya, , ,
Else
{
IfWinExist, UV Texture Editor
WinActivate , UV Texture Editor
ControlSend, , !+{vk46}, UV Texture Editor, , ,
}
Return

37 (изменено: Алексей, 2011-09-14 21:58:46)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Так лучше, но очень странно происходит работа.

Во первых, не всегда срабатывает, иногда приходится жать на КапсЛюк два, три раза, чтобы свернуть ТекстурЭдитор, а иногда, чтобы его развернуть.
Нажимая КапсЛюк видно, что подсвечивается окно ТекстурЭдитора, а при свернутом состоянии окно Майя.

Примерно такая схема:
Один клик подсветилось окно, второй клик окно свернулось, далее, один клик подсветилось окно Майя, второй, открылся ТекстурЭдитор.

Примерно, вот так на данный момент это работает.

ypppu, спасибо большое, что помогаете, я очень признателен.



Обновление:
-------------------
Заметил, что часто бывает такая вещь, когда тогглю окно. Я говорил, что окна подсвечиваются, а потом сворачиваются или разворачиваются, так вот, ещё иногда (бывает через раз), а возможно даже в каком-то определенном порядке срабатывает команда назначенная на клавишу "F", т. е., проскакивает обычное родное нажатие клавишей "F" в Майя. Получается так: Нажал посветилось окно ТекстурЭдитора, нажал ТекстурЭдитор свернулся, нажал подсветилось окно Майя, нажал сработала родная Майская команда, которая находится на кливише "F", далее снова жму КапсЛюк, открывается ТекстурЭдитор. Например в развернутом ТекстурЭдиторе может произойти тоже самое.

Ещё плюс ко всему этому иногда игнорируется нажатие, сколько раз не нажимай КапсЛюк, хоть сто раз ничего не реагирует только видно рамку выделенного окна и чтобы, оно, как-то, снова заработало, нужно тыкнуть мышкой в окно Майя или ТекстурЭдитора, просто пошевелить, повозить и т. п., и только тогда прорывает и окно снова тогглица.

38

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна


time := 1000 ; попробуйте изменять от 100 до 1000
Capslock::
IfWinExist, Maya
WinActivate , Maya
Sleep, %time%
ControlSend, , +f, Maya, , ,
Else
{
IfWinExist, UV Texture Editor
WinActivate , UV Texture Editor
Sleep, %time%
ControlSend, , +f, UV Texture Editor, , ,
}
Return

!Capslock:: ; при нажатии alt capslock отправится alt shift f
IfWinExist, Maya
WinActivate , Maya
Sleep, %time%
ControlSend, , !+{vk46}, Maya, , ,
Else
{
IfWinExist, UV Texture Editor
WinActivate , UV Texture Editor
Sleep, %time%
ControlSend, , !+{vk46}, UV Texture Editor, , ,
}
Return

Вот такой ещё вариант. В верхней строчке можно время задержки после активации окна

39

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

В таком случае ругается:

http://img269.imageshack.us/img269/5924/autohotkey.png

40

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Вы какой-то не такой код запускаете. Он явно отличается от моего. Проверьте построчно.

41

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Всё точно проверил, скопировал. Предыдущий отличался лишь потому, что у меня ещё есть несколько строчек кода, для проверки на повторный запуск АвтоХоткея и строка для того, чтобы АвтоХоткей работал только в Майя.

Всё удалил, оставил только ваш код:
http://img840.imageshack.us/img840/5107/autohotkey2.png

42

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

В начале зачем-то стоит "Return" и не хватает "Capslock::".

43 (изменено: Алексей, 2011-09-14 22:37:22)

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Так это оно не полностью выводи инфу, видимо только самое важное.

Вот, что я пытаюсь запустить:

http://img593.imageshack.us/img593/7519/autohotkey3.png

44

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Алексей, на будущее обратите внимание на §4.12. Это и Вам быстрее, и отвечающим проще. И код у нас пишется всё-таки текстом, а не картинками.

45

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Алексей пишет:

Так это оно не полностью выводи инфу, видимо только самое важное.

Насколько я понимаю, оно выводит строчку с ошибкой, плюс несколько соседних строчек. Может быть, Вы не сохраняете изменения, или запускаете не тот скрипт?

46

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Всё проверил, точно, запускаю именно, то, что нужно.

47

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна


time := 1000 ; попробуйте изменять от 100 до 1000

Capslock::
IfWinExist, Maya
{
WinActivate , Maya
Sleep, %time%
ControlSend, , +f, Maya, , ,
}
Else
{
     IfWinExist, UV Texture Editor
     {
     WinActivate , UV Texture Editor
     Sleep, %time%
     ControlSend, , +f, UV Texture Editor, , ,
     }
}
Return

!Capslock:: ; при нажатии alt capslock отправится alt shift f
IfWinExist, Maya
{
WinActivate , Maya
Sleep, %time%
ControlSend, , !+{vk46}, Maya, , ,
}
Else
{
     IfWinExist, UV Texture Editor
     {
     WinActivate , UV Texture Editor
     Sleep, %time%
     ControlSend, , !+{vk46}, UV Texture Editor, , ,
     }
}
Return

Нашёл возможную ошибку и внёс изменения.

48

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Работает, но хуже чем было в самом начале, всё так же перехватывается другими окнами и срабатывает через раз.

49

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Ну тогда могу только предложить глубже изучать AutoHotkey и искать решение самостоятельно.

50

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

А если попробовать так:


#IfWinActive ahk_class QWidget

Capslock::
ControlClick, x0 y0, Maya
Send +f
KeyWait, Capslock
Return
 
!Capslock:: ; при нажатии alt capslock отправится alt shift f
ControlClick, x0 y0, Maya
Send !+{vk46}
KeyWait, Capslock
Return
 
Numpad8::
ControlClick, x0 y0, Maya
Send ^!p
KeyWait, Numpad8 ; Top
Return
 
Numpad5::
ControlClick, x0 y0, Maya
Send ^!k 
KeyWait, Numpad5 ; Home
Return
 
Numpad4::
ControlClick, x0 y0, Maya
Send ^!'
KeyWait, Numpad4 ; Left
Return

#IfWinActive

51

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

creature.ws, с тысячи шагов из револьвера прострелил мишень ровно в десятку.
Работает! Боже мой РАБОТАЕТ!!! ПРЕМНОГО благодарен Вам!

ypppu, отдельная, бесконечная благодарнасть и Вам.

52

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Беда!

Оказалось не всё так гладко, как показалось.
Первый код работает совершенно, это который одиночный CapsLock, а вот второй, который (Ctrl+CapsLock) вот он то и барахлит.

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

Может неправильно составлен код?

Поможите пожалуйста разрешить эту проблему.

Работает отлично:

Capslock::
ControlClick, x0 y0, Maya
Send +f
KeyWait, Capslock
Return

Работает не корректно:

!Capslock::
ControlClick, x0 y0, Maya
Send !+{vk46}
KeyWait, Capslock
Return

53

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

vk46 - виртуальный код клавиши F, некорректности в нём нет.
ControlClick, x0 y0, Maya - топорный способ передать фокус «главному окну Maya»

Лучше вас никто в поведении maya не разберётся

54

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Дело в том, что первый вариант, (когда только КапсЛок) видно, как окна игнорятся и ничего не выделяется, никакие ячейки для ввода, вообще ничего, происходит чистый тоггл.
Второй код, где добавлен Контрол к КапЛоку, в этом случает подсвечивается окно и через раз оно препятствует закрытию основному окну.

Тут даже и не понятно, что может быть. Может это происходит из-за того, что добавляется (Ctrl) к КапсЛоку и поэтому оно работает не правильно.

55

Re: AHK: Вторичные окна Панели перехватывают команду для первичного окна

Я кажись понял! Топорный способ передачи фокуса окну Майя происходит, когда окно развёрнуто, а нужно, когда окно свернулось, ведь это основная причина перехвата. Получается в обоих случаях нужно, чтобы фокус был в окне Майя в свёрнутом и развёрнутом состоянии.

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