1 (изменено: A.Hillys, 2012-10-04 14:05:32)

Тема: AHK: Выполнение одновременно обоих условий.

Здравствуйте.
Помогите разрешить ламерский вопрос - как выполнить сразу оба условия на примере:

#IfWinActive, AutoCAD 2012

#IfWinNotExist, Формат текста

{ 
+CapsLock::Suspend

#UseHook

q::Send _draworder{Enter}_b{Enter}
w::Send _draworder{Enter}_f{Enter}
}
return

скрипт должен выполняться только тогда, когда активно окно Автокада и когда не существует окна "Формат текста".

2

Re: AHK: Выполнение одновременно обоих условий.

A.Hillys, ознакомься с этой темой, отредактируй свой пост.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Выполнение одновременно обоих условий.

Нужно, чтобы скрипт выполнялся при этих условиях или чтобы горячая клавиша срабатывала определенным образом при этих условиях?

BIG BROTHER IS WATCHING YOU.

4

Re: AHK: Выполнение одновременно обоих условий.

Чтобы указанные горячие клавиши срабатывали как им задано при этих условиях.
Т.е. клавиши Q и W должны переопределяться только при открытом Автокаде, не должны ни в каком другом активном окне и не должны при вызове встроенных автокадовских окон (например: "Форматирование текста", "Редактирование того-то", "Редактирование сего-то" и т.д.) Названия этих окон предполагаю постепенно добавлять.

5

Re: AHK: Выполнение одновременно обоих условий.

#IfWinActive, AutoCAD 2012

+CapsLock::
IfWinNotExist, Формат текста
Suspend
Return

$q::
IfWinNotExist, Формат текста
Send _draworder{Enter}_b{Enter}
Return

$w::
IfWinNotExist, Формат текста
Send _draworder{Enter}_f{Enter}
return

Только я сам профан и это возможно все неверно.

BIG BROTHER IS WATCHING YOU.

6 (изменено: A.Hillys, 2012-10-04 15:53:59)

Re: AHK: Выполнение одновременно обоих условий.

Не, не работает. В этом случае при открытом окне "Формат текста" клавиши не выводят вообще ничего.
Я предполагаю, есть какой-либо логический оператор "И", который объединит эти два условия, после выполнения которых начнется исполняться дальнейший скрипт.

7

Re: AHK: Выполнение одновременно обоих условий.

#IfWinActive, AutoCAD 2012

+CapsLock::
IfWinNotExist, Формат текста
Suspend
Return

~$q::
IfWinNotExist, Формат текста
Send _draworder{Enter}_b{Enter}
Else
Return

~$w::
IfWinNotExist, Формат текста
Send _draworder{Enter}_f{Enter}
return
BIG BROTHER IS WATCHING YOU.

8 (изменено: Korobkof, 2012-10-04 16:42:43)

Re: AHK: Выполнение одновременно обоих условий.

Нет, сам понял, неверно. Будет саму себя с требуемым вместе пропускать.

BIG BROTHER IS WATCHING YOU.

9

Re: AHK: Выполнение одновременно обоих условий.

#IfWinActive, AutoCAD 2012

+CapsLock::
IfWinNotExist, Формат текста
Suspend
Return

$q::
IfWinNotExist, Формат текста
Send _draworder{Enter}_b{Enter}
Else
Send q
Return

$w::
IfWinNotExist, Формат текста
Send _draworder{Enter}_f{Enter}
Else
Send w
return
BIG BROTHER IS WATCHING YOU.

10

Re: AHK: Выполнение одновременно обоих условий.

A.Hillys пишет:

Не, не работает. В этом случае при открытом окне "Формат текста" клавиши не выводят вообще ничего.
Я предполагаю, есть какой-либо логический оператор "И", который объединит эти два условия, после выполнения которых начнется исполняться дальнейший скрипт.

Нет, в описании сказано, что эти директивы взаимоисключающие и работает только последняя, как не объединяй.

BIG BROTHER IS WATCHING YOU.

11

Re: AHK: Выполнение одновременно обоих условий.

Если бы нужно было проверять только наличие/отсутствие нескольких окон, можно было бы использовать группу. Но как ее использовать для проверки наличия одного окна и отсутствия другого, я не представляю.

BIG BROTHER IS WATCHING YOU.

12 (изменено: A.Hillys, 2012-10-05 10:56:07)

Re: AHK: Выполнение одновременно обоих условий.

А тем не менее, это как-то реализовано: http://dwg.ru/pub/65, в последеней версии. И работает, жаль - исходника нет

13

Re: AHK: Выполнение одновременно обоих условий.

Таки из поста #9 тоже не работает?
Полагаю, реализация для тутошних аксакалов - плевое дело. Мои же творческие судороги обусловлены сугубо полной некомпетентностью.

BIG BROTHER IS WATCHING YOU.

14

Re: AHK: Выполнение одновременно обоих условий.

А поиск на что?
http://forum.script-coding.com/viewtopic.php?id=5533

15

Re: AHK: Выполнение одновременно обоих условий.

Таки вроде заработало
Спасибо огромное!!

16

Re: AHK: Выполнение одновременно обоих условий.

Malcev пишет:

А поиск на что?[/url]

Когда понятия не имеешь про #If, и не такое пропустишь.
А по "&&" поиск заставить искать не могу.
Все-таки поищу стену подходящую...

BIG BROTHER IS WATCHING YOU.

17 (изменено: Irbis, 2012-10-04 18:48:39)

Re: AHK: Выполнение одновременно обоих условий.

Прошел по ссылке из поста #12, (хоть и неправильно оформленной)
Такая неприятная багофича у того скрипта - работают хоткеи, только если язык системы по умолчанию -  английский. А всего-то делов - воспользоваться виртуальными кодами.
Небольшой пример, с группами окон:

SetTitleMatchMode 2
GroupAdd, ExTitle , Формат текста
GroupAdd, ExTitle , Редактирование

+CapsLock::Suspend

#If WinActive("AutoCAD 2012") && !WinExist("ahk_group ExTitle")
$vk51::SendInput _draworder{Enter}_b{Enter} ; Q
$vk57::SendInput _draworder{Enter}_f{Enter} ; W
#If
return

18

Re: AHK: Выполнение одновременно обоих условий.

Правильно ли я понимаю, что приведенный выше код работает только под AHK_L ANSI? Под обычным у меня не запускается.
А виртуальные коды собирался применить в дальнейшем

19 (изменено: creature.ws, 2013-02-05 07:31:50)

Re: AHK: Выполнение одновременно обоих условий.

Директива #if отсутствует в ahk-basiс. Вышеприведенный код работает в ahk-l. Использование ansi версии ahk-l перестало быть полезным, большинство скриптов расчитаны под использование в ahk-l unicode.