1 (изменено: Sgy-x2, 2016-06-01 16:52:42)

Тема: AHK: Не существует выражение #IF

Здравствуйте. Есть такой переключатель, но когда я пытаюсь отключить горячую кнопку, через переменную, скрипт выдает ошибку, что не существует этого хоткея.

key20 = 1

if key20 = 0
	Hotkey, F1, Off
if key20 = 1
	Hotkey, F1, On

#if GetKeyState("CapsLock", "T")
F1::
	while GetKeyState("F1","P")
	MsgBox Тест		
#if

Return

2 (изменено: Drugoy, 2016-06-01 17:26:59)

Re: AHK: Не существует выражение #IF

Надо оборачивать условия #If в функцию.

3

Re: AHK: Не существует выражение #IF

Теоретически так должно, но говорит что условия не существует.

key20 = 1 

Hotkey, IF, GetKeyState("CapsLock", "T")
if key20 = 0
	Hotkey, F1, Off
if key20 = 1
	Hotkey, F1, On
Hotkey, IF

#IF GetKeyState("CapsLock", "T")
F1::
	while GetKeyState("F1","P")
		MsgBox Тест
#IF
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Не существует выражение #IF

serzh82saratov
Ошибка в третей строке.
Erro: Paramete #2 must match an existing #if expression

5

Re: AHK: Не существует выражение #IF

Я знаю:

serzh82saratov пишет:

но говорит что условия не существует.

с некоторыми другими условиями работает, надо разбиратся, сейчас время нет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Не существует выражение #IF

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

Hotkey, If, GetKeyState("CapsLock", "T")
Hotkey, F1, Off
Return

#If, GetKeyState("CapsLock", "T")
F1:: MsgBox
#If

У кого-то есть идеи?

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

7

Re: AHK: Не существует выражение #IF

serzh82saratov
Понятно, хотя нет не понятно, ну буду ждать. Пока сделал вот так.

key20 = 1

if key20 = 0
	Hotkey, F1, Off
if key20 = 1
	Hotkey, F1, On
	
F1::
GetKeyState, state, CapsLock, T
	IF state = D
	MsgBox Тест		

Return

8

Re: AHK: Не существует выражение #IF

Можно так, что интересно если попробовать передать параметры "CapsLock", "T" в StateCapsLock, то тоже самое, причём точно известно в что некоторых случаях с пользовательскими функциями и с параметрами всё прекрасно работает. Со встроенными функциями уже давно заметил конфликты в том числе и у самой директивы #IF.

key20 = 1

Hotkey, IF, StateCapsLock()
if key20 = 0
	Hotkey, F1, Off
if key20 = 1
	Hotkey, F1, On
Hotkey, IF

#IF StateCapsLock()
F1::
	while GetKeyState("F1","P")
		MsgBox Тест
#IF

StateCapsLock() { 
	Return GetKeyState("CapsLock", "T")
}
Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Не существует выражение #IF

Похоже на баг.

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

10

Re: AHK: Не существует выражение #IF

Так что тему можно переименовать в "Не существует выражение #IF"

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Не существует выражение #IF

teadrinker пишет:

Похоже на баг.

Надо Lexikos`у задать вопрос, почему так:

#IF InStr("a", "a")
#IF 
Hotkey, IF, InStr("a", "a")
Hotkey, 1, Label
Hotkey, IF
Return

Label:
	MsgBox  
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Не существует выражение #IF

Нужно экранировать:

#IF InStr("a", "a")
#IF 
Hotkey, IF, InStr("a"`, "a")
Hotkey, 1, Label
Hotkey, IF
Return

Label:
	MsgBox  
	Return

13

Re: AHK: Не существует выражение #IF

Точно, а ведь это азы, про запятые в параметрах команд. Значит вопрос снят.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: Не существует выражение #IF

Ага, точно.

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

15

Re: AHK: Не существует выражение #IF

Справка - Скрипты - Escape-последовательности пишет:

Так как в языке AutoHotkey запятые и знаки процента имеют специальное значение, то чтобы задать буквальные запятую и знак процента, используется знак акцента `. Исключениями из этого правила являются команда MsgBox, где в экранировании запятых нет необходимости, и запятые в последнем параметре любой команды - их также не нужно экранировать.

Хотя это не совсем верно, ведь это последний параметр.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Не существует выражение #IF

Hotkey, IF, InStr("a"`, "a")

Hotkey, If [, Expression]
FoundPos := InStr(Haystack, Needle [, CaseSensitive = false, StartingPos = 1, Occurrence = 1])

Видимо, выражение InStr("a"`, "a") рассматривается программой не как параметр, а как отдельная команда, "приклеенная" к команде Hotkey.

17

Re: AHK: Не существует выражение #IF

serzh82saratov пишет:

Хотя это не совсем верно, ведь это последний параметр.

Написал им вчера в багрепорт.

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

18

Re: AHK: Не существует выражение #IF

Я дико извиняюсь. А что по моему вопросу?

19

Re: AHK: Не существует выражение #IF

key20 = 1 

Hotkey, IF, GetKeyState("CapsLock"`, "T")
if key20 = 0
	Hotkey, F1, Off
if key20 = 1
	Hotkey, F1, On
Hotkey, IF

#IF GetKeyState("CapsLock", "T")
F1::
	while GetKeyState("F1","P")
		MsgBox Тест
#IF
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20 (изменено: Alectric, 2016-06-02 21:12:38)

Re: AHK: Не существует выражение #IF

key20=1

#if key20 and GetKeyState("CapsLock", "T")
F1::
	while GetKeyState("F1","P")
	tooltip Тест		
#if
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.