1

Тема: AHK: Разблокировка клавиши при отсутствии пикселя

RButton::8  ; пусковая клавиша
Loop
{
GetKeyState, state, Shift ; если зажат Shift прекратить нажатие ПКМ
if state = D
break

PixelGetColor, color,  298 , 900   ; Нахождение пикселя, по которому будет жаться ПКМ 
if color = 0x18CBF7
SendInput, {RButton}
While GetKeyState("RButton", "P")
GetKeyState, state, RButton, P
if state = P
{
SendInput, {Click}
sleep 20
}
GetKeyState, state, RButton ; если ПКМ отпущена, то прекратить работу
if state = U
break
}

В общем, в одной области загорается пиксель. В тот момент, когда он загорается, при нажатии пкм посылается клавиша 8, как только посылка удалась пиксель исчезает. ( пиксель появляется в ряде условий, зависящих от приложения ). Нужно, чтобы, когда пиксель в той области отсутствовал, не происходило замещение ПКМ на 8 и не блокировался ввод ПКМ, иными словами заблокировать этот код до тех пор пока не появится вновь этот пиксель. Я надеюсь понятно изложил свою мысль.

2

Re: AHK: Разблокировка клавиши при отсутствии пикселя

В тот момент, когда он загорается, при нажатии пкм посылается клавиша 8

В момент нажатия пкм, если цвет некого пикселя соответствует предопределённому…

#if PixelColor(298, 900) = 0x18CBF7
    RButton::Send {8}
#if

PixelColor(x, y) {
    PixelGetColor, color,  % x, % y
    return color
}

3

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Что-то я не до конца понял, куда это в скрипт вписывать.

4

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Это надо вписывать вместо.

5

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Есть просто создать скрипт с таким кодом, то выдается ошибка
Error at line 1.
Line Text: #if PixelGetColor, color, 298, 900
error: this line does not contain a recognized action
the program wil exit

6

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Вероятно, это не работает в AHK. В AHK_L - работает.

7 (изменено: creature.ws, 2012-11-21 20:17:36)

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Ссылка для скачивания на оф. сайте ведёт к дистрибутиву AHK v1.1
Даже не нужно сосредотачиваться и искать некий непонятный «AHK_L», достаточно обновиться.

Надеюсь, рано или поздно пользователи ahk v1.0 закончатся.

8 (изменено: Странник, 2012-11-21 22:00:37)

Re: AHK: Разблокировка клавиши при отсутствии пикселя

У меня в том и прикол, что AHK_L стоит

9

Re: AHK: Разблокировка клавиши при отсутствии пикселя

msgbox % A_AHKVersion

При выполнении этого кода в окне сообщения должен быть текст 1.1.09.00

10

Re: AHK: Разблокировка клавиши при отсутствии пикселя

1.0.48.05 AHK_L

11

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Дописывая после номера версии буковки A H K L вы не превращаете версию 2009 года выпуска в актуальную.

12

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Спасибо большое, работает на новой версии.

13

Re: AHK: Разблокировка клавиши при отсутствии пикселя

creature.ws пишет:

Ссылка для скачивания на оф. сайте ведёт к дистрибутиву AHK v1.1
Даже не нужно сосредотачиваться и искать некий непонятный «AHK_L», достаточно обновиться.

Надеюсь, рано или поздно пользователи ahk v1.0 закончатся.

А я правильно понял, что на сайте AHK наконец-то отказались от AHK и полностью перешли на _L, который теперь отдают по оффициальному каналу обновлений?

14

Re: AHK: Разблокировка клавиши при отсутствии пикселя

creature.ws пишет:

В тот момент, когда он загорается, при нажатии пкм посылается клавиша 8

В момент нажатия пкм, если цвет некого пикселя соответствует предопределённому…

#if PixelColor(298, 900) = 0x18CBF7
    RButton::Send {8}
#if

PixelColor(x, y) {
    PixelGetColor, color,  % x, % y
    return color
}

Теперь усложним скрипт. Нужно чтобы при нажатии(или зажатии) ПКМ не блокировался ввод (т.е. нажатие или зажатие) ПКМ, когда найден определенный пиксель в определенных координатах, но в то же время посылался ввод 8 при вводе ПКМ если найден определенный пиксель. Надеюсь понятно изложил свою мысль.

15

Re: AHK: Разблокировка клавиши при отсутствии пикселя

#if PixelColor(298, 900) = 0x18CBF7
    ~RButton::Send {8}
#if

PixelColor(x, y) {
    PixelGetColor, color,  % x, % y
    return color
}

Найдите одно отличие.

16

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Перед RButton стоит "~". Что за функцию несет этот знак?

17

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Run % "hh.exe " SubStr(A_AhkPath, 1, -3) "chm::/docs/Hotkeys.htm"

18

Re: AHK: Разблокировка клавиши при отсутствии пикселя

hh.exe ещё должно быть в системе, по умолчанию его нет, вроде.

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

19

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Есть. В новых ОС был «выпилен» «winhlp32.exe»: Download WinHlp32.exe for Windows 7 from Official Microsoft Download Center.

20

Re: AHK: Разблокировка клавиши при отсутствии пикселя

У меня в XP точно не было (2004 г.), я его скачивал, помню. А в Win 7 есть, вроде.

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

21

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Это у Вас какая-то неправильная ОС была .

22

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Ну, может, зато проработала 8 лет без переустановок .

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

23

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Неплохо, у меня максимум был — 7 лет. Потом, со сменой железа, сменил на Windows XP.

24

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Скажу, не хвастаясь, она и сейчас у меня работает на новом железе!

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

25 (изменено: Странник, 2012-12-13 11:03:35)

Re: AHK: Разблокировка клавиши при отсутствии пикселя

В процессе тестирования возникла ошибка. Нужно, чтобы при нахождении пикселя #2 происходила блокировка ввода ПКМ. Пытался через BlockInput сделать, но конкретно задать что нужно блокировать не смог.

26 (изменено: creature.ws, 2012-12-13 14:18:04)

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Почему вы это поведение называете ошибкой?
О каком «втором пикселе» идёт речь?

27

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Потому что по моей схеме, в программе где я употребляю скрипт, вызывает меню, считающейся для меня ошибкой, когда нажимать ПКМ без перехвата клавиши 8. Я хочу сделать отдельный (второй) пиксель, который загорается, когда мне не нужно по условию программы щелкнуть ПКМ. Если это будет, то меню не будет появляться от нажатия ПКМ, но при этом будет перехват при нахождении пикселя номер 1 и блокировка ввода ПКМ при нахождении второго пикселя ( который появляется сам по своим заданным условиям независимо от скрипта )

28

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Может быть, кто-то и понял сообщение выше, но не я, извиняйте.

29

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Видимо, речь идет об доп.условии, что-то вроде

#if (PixelColor(298, 900) = 0x18CBF7) && (PixelColor(X, Y) != Color)

где X, Y и Color - координаты и цвет второго пикселя

30

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Грубо говоря нужно к скрипту сделать блокировку ввода конкретно ПКМ если найден второй пиксель и если первый не найден, а также нужно считывать пиксель под курсором, чтобы если, к примеру, найден белый пиксель под курсором, то посылался перехват ввода ПКМ на 8, но не шло само нажатие ПКМ в приложение.

31

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Как комбинировать условия показано в сообщении #29.

32

Re: AHK: Разблокировка клавиши при отсутствии пикселя

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

33 (изменено: creature.ws, 2012-12-18 07:01:19)

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Не знаю как считывать пиксель под курсором,

PixelGetColor, OutputVar, X, Y
Где X, Y — координаты пикселя, цвет которого нужно получить.
MouseGetPos, OutputVarX, OutputVarY
При выполнении этой команды в переменных, названных как OutputVarX и OutputVarY, будут сохранены координаты курсора.

34

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Мне кажется все гораздо проще. Можно ли в AHK сделать так, чтобы блокировался ввод ПКМ в определенных координатах, но при этом работал перехват нажатия ПКМ на 8?
И второй вопрос на которой мне так и не отвечают. Как сделать блокировку ввода конкретной клавиши?

35 (изменено: creature.ws, 2012-12-18 19:07:43)

Re: AHK: Разблокировка клавиши при отсутствии пикселя

перехват нажатия ПКМ на 8

Уточните, что имеется в виду.

Можно ли в AHK сделать так, чтобы блокировался ввод ПКМ в определенных координатах

#if ClickCoord(123, 234)
    RButton::return
#if

ClickCoord(x0, y0) {
    MouseGetPos, x, y
    return x = x0 && y = y0
}

Как сделать блокировку ввода конкретной клавиши?

Конкретная клавиша::return

Настоятельно рекомендую начинать поиск ответов со справки. Это позволит мимоходом набраться востребованной в дальнейшем информации.

36

Re: AHK: Разблокировка клавиши при отсутствии пикселя

перехват нажатия ПКМ на 8

Уточните, что имеется в виду.

В коде:

#if PixelColor(317 , 898) = 0x29F7FF
    ~RButton::Send {8}
#if

PixelColor(x, y) {
    PixelGetColor, color,  % x, % y
    return color
}

Есть строчка

~RButton::Send {8}

, которая отвечает за перехват ввода ПКМ на 8. То есть я хочу сказать, что ПКМ я кликаю в той области, в которой должен блокироваться ввод ПКМ, соответственно отсюда вывод, что если блокируется ввод ПКМ, то и блокируется ввод 8. Знак ~ убирать нельзя, иначе будет конфликт в процессе работы приложения.

37

Re: AHK: Разблокировка клавиши при отсутствии пикселя

Спасибо за разъяснение. Мне кажется, приведенных примеров более чем достаточно.