1 (изменено: Twilight, 2021-04-12 15:28:27)

Тема: AHK: Проблемы с выполнением части "else" кода

Я новичок в ahk, пока в нем совсем не разбираюсь. Захотел объединить 2 части кода с помощью if/else, но скрипт никак не хочет выполнять вторую часть кода, хотя они идентичны. Код не очень длинный.


GetKeyState, state, LButton

AK := true
m::
AK := !AK

Insert:: Hotkey, *~$LButton, Toggle
x := (A_ScreenWidth / 2)													;1
y := (A_ScreenHeight / 2)
*~$LButton::
 if(AK)
	 while GetKeyState("LButton"), P
		{    
			x := (A_ScreenWidth / 2)													;1
			y := (A_ScreenHeight / 2)
			w = 3
			h = 3
			Color = 0xFF0000
			WS_EX_TRANSPARENT := 0x20
			WS_EX_LAYERED := 0x80000
			Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound
			Gui, Color, % Color
			Gui, Show, x%x% y%y% w%w% h%h% NA
			WinSet, ExStyle, % "+" WS_EX_LAYERED|WS_EX_TRANSPARENT
			
			Sleep, 100
			
		des:
		Gui Destroy
		Return
		}
 else		
	 while GetKeyState("LButton"), P
		{    
			x := (A_ScreenWidth / 2)													;1
			y := (A_ScreenHeight / 2)
			w = 3
			h = 3
			Color = 0xFF0000
			WS_EX_TRANSPARENT := 0x20
			WS_EX_LAYERED := 0x80000
			Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound
			Gui, Color, % Color
			Gui, Show, x%x% y%y% w%w% h%h% NA
			WinSet, ExStyle, % "+" WS_EX_LAYERED|WS_EX_TRANSPARENT
			
			Sleep, 91
			
		des1:
		Gui Destroy
		Return
		}

2

Re: AHK: Проблемы с выполнением части "else" кода

Оптимизации в коде совсем мало. Зачем копировать всё подряд?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: Проблемы с выполнением части "else" кода

Скорее всего проблема из-зa "des" внутри цикла, но сейчас все работает

4

Re: AHK: Проблемы с выполнением части "else" кода

__Михаил__
Это начальные установки двух похожих скриптов, поэтому много лишнего, но я уже разобрался. Спасибо, в любом случае.

5

Re: AHK: Проблемы с выполнением части "else" кода

Задача от скрипта какая? Отобразить точку и тут же убрать?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6

Re: AHK: Проблемы с выполнением части "else" кода

__Михаил__
Задача скрипта -  отображать точку в разных положениях через промежутки времени.
Это только часть кода, я пытался разобраться, почему не срабатывала часть кода после "else" и, поэтому, скопировал только первоначальные установки для дальнейших изменений, а не всю программу, в обе части "if - else".
Я просто упростил код, но результат не изменился, "else" часть не работала.
В итоге мне помог знакомый. Как я понял, проблема оказалась в том, что я вписал "goto, des" и сам "des" в один цикл, хотя "Gui Destroy" должна быть в конце кода.
Уже проблема решена, спасибо, что ответили.