1 (изменено: CDLebo, 2017-09-09 18:43:26)

Тема: AHK: Исполнение скрипта в определенной области экрана

Здравствуйте! Есть скрипт, который при зажатии определенной кнопки делает следующее: Зажать Shift и быстро нажимать ЛКМ. Хочу сделать чтоб этот скрипт действовал не во всей области экрана, а в определенно. Пример: Я зажал кнопку исполнения скрипта, скрипт начинает действие, но за определенной зоной он не делает никаких нажатий, а как только мышка зашла в зону действий он начинает зажимать Shift и быстро нажимать ЛКМ. Прошу помощи в создании такого скрипта. Всем заранее спасибо!
https://pp.userapi.com/c638631/v638631396/62b89/TZfG9lEPBFU.jpg Красная зона - зона, в которой будет происходить действие скрипта.
Сам скрипт:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

Numpad2::ExitApp

*x::
   While GetKeyState("x", "P")
   {
   send {LShift down}
      Click
      Sleep, 50 
	  send {LShift up}
   }
   Return

2 (изменено: svoboden, 2017-09-09 19:55:31)

Re: AHK: Исполнение скрипта в определенной области экрана

Вот вариант:

#Persistent
timer = 50
H = 4

SetTimer, CheckTimeIdle, % timer
SetTimer, TimeIdle, % timer
return

CheckTimeIdle:
H--
CoordMode, Mouse
Global x1 := 0, y1 := 0, x2 := 300, y2 := 300
    MouseGetPos, x, y
    if !(x < x1 || x > x2 || y < y1 || y > y2)
        send +{Click}
    if H = 0
    SetTimer, CheckTimeIdle, off
    SetTimer, CheckTimeIdle, off
return

TimeIdle:
    SetTimer, CheckTimeIdle, On
return

Тут Global x1 := 0, y1 := 0, x2 := 300, y2 := 300 сам напиши координаты нужной области, а здесь timer = 50 устанавливаешь скорость кликов.

3

Re: AHK: Исполнение скрипта в определенной области экрана

svoboden
Спасибо за помощь, попробую использовать этот скрипт. Подскажи как можно определить нужные мне координаты?

4

Re: AHK: Исполнение скрипта в определенной области экрана

Подберите. Так Global x1 := 0, y1 := 0, x2 := 200, y2 := 200 определяет верхний левый угол.

5

Re: AHK: Исполнение скрипта в определенной области экрана

http://forum.script-coding.com/viewtopi … 710#p81710
Зачем таймер, если по факту нажатия надо?

#IF needcoord(0,0,100,100)
Shift::MsgBox,,,,0.1
#IF

needcoord(x1,y1,x2,y2) {
    MouseGetPos, x, y
    if !(x < x1 || x > x2 || y < y1 || y > y2)
        Return 1 
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.27.03 (Unicode 32-bit).

6

Re: AHK: Исполнение скрипта в определенной области экрана

Поиск в помощь:

7 (изменено: svoboden, 2017-09-09 23:00:55)

Re: AHK: Исполнение скрипта в определенной области экрана

Не знаю, я подумал, ему надо без активации на кнопку. Вот примерные координаты его вопроса Global x1 := 100, y1 := 100, x2 := 450, y2 := 500, если пользователь сам не подобрал их.

8 (изменено: svoboden, 2017-09-09 22:43:39)

Re: AHK: Исполнение скрипта в определенной области экрана

serzh82saratov пишет:

Зачем таймер, если по факту нажатия надо?

Ну, это как-то совсем просто. Можно было бы пользователю не задавать такой вопрос, а самому найти ответ.

9 (изменено: CDLebo, 2017-09-13 08:04:57)

Re: AHK: Исполнение скрипта в определенной области экрана

Очень хороший человек помог мне и сделал скрипт, НО хотелось бы кое-что подредактировать. В Данный момент при зажатии кнопки скрипт проверяет, находится ли он в зоне действий и если находится, то начинает жать Shift+LCM. Единственное НО это то, что в момент когда он зашел в зону действий для него эта зона становится всем экраном, тобишь рамки спадают и это действие исполняется в любой части экрана, пока я не отожму кнопку и не нажму заново. Помогите сделать правильно. Спасибо.

#IF needcoord(1100,578,1470,1005)
$V::

Loop
{
if not GetKeyState("V", "P")
break
Send +{Click}
}
return
#IF

needcoord(x1,y1,x2,y2) {
    MouseGetPos, x, y
    if !(x < x1 || x > x2 || y < y1 || y > y2)
        Return 999999 
}
esc::exitapp

10 (изменено: svoboden, 2017-09-13 15:54:46)

Re: AHK: Исполнение скрипта в определенной области экрана

1::
timer = 50
Global x1 := 100, y1 := 100, x2 := 450, y2 := 500

SetTimer, CheckTimeIdle, % timer
return

CheckTimeIdle:
CoordMode, Mouse
    MouseGetPos, x, y
    if !(x < x1 || x > x2 || y < y1 || y > y2)
        Send +{Click}
	    if (x < x1 || x > x2 || y < y1 || y > y2)
    SetTimer, CheckTimeIdle, off
return
1::
Loop {
    Sleep, 10
    Gosub, Label
    GetKeyState, state, 1, P
    if state = U
    break
}
return

Label:
sleep 50
CoordMode, Mouse
x1 := 100, y1 := 100, x2 := 450, y2 := 500
    MouseGetPos, x, y
    if !(x < x1 || x > x2 || y < y1 || y > y2)
        Send +{Click}
	    if (x < x1 || x > x2 || y < y1 || y > y2)
return

11

Re: AHK: Исполнение скрипта в определенной области экрана

svoboden огромное спасибо!