1

Тема: AHK: Блокировать кнопку при появлении картинки

Написал следующий код - при появлении картинки, который при появлении картинки блокирует зажатие шифта.
Но работает как-то не так при зажатии шифта - курсор мелькает, как-будто шифт-таки нажимается.
Что тут не так?

loop
{
   ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, D:\strelka.png
   if !ErrorLevel
   {
      while GetKeyState("LShift")
         LShift:: return
   }
   Sleep, 50
}   

2

Re: AHK: Блокировать кнопку при появлении картинки

Так попробуй:


loop
{
   ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, D:\strelka.png
   Hotkey, LShift, Block, % !ErrorLevel ? "On" : "Off"
   Sleep, 50
}  

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

3

Re: AHK: Блокировать кнопку при появлении картинки

Так же помигивает.

4 (изменено: Irbis, 2013-09-27 10:15:19)

Re: AHK: Блокировать кнопку при появлении картинки

Зачем изобретать велосипед?

#if pict(&x,  &y)
LShift:: return 
#if 
return

pict(&x,  &y)
{ 
ImageSearch, x, y, 0, 0,
A_ScreenWidth,
A_ScreenHeight, D:\strelka.png
  return  !ErrorLevel
}
         

это в случае, если нужно сохранить найденные координаты. Если нет, то параметры в функцию можно не передавать.

5

Re: AHK: Блокировать кнопку при появлении картинки

Error at line 6.
The following variable name contains illegal character "&x"

6

Re: AHK: Блокировать кнопку при появлении картинки

Irbis
Действительно так лучше, зачем проверять в цикле когда надо только при нажатии.
А что имелось ввиду под &.

Malcev пишет:

The following variable name contains illegal character "&x"

Попробуй так:


#if pict(x, y)
LShift:: return 
#if 
return

pict(ByRef x, ByRef y)
{ 
    ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, D:\strelka.png
    return !ErrorLevel
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: Malcev, 2013-09-27 17:29:59)

Re: AHK: Блокировать кнопку при появлении картинки

Мигает так же. Наверное перехват у программы идет быстрее.
При том вариант Irbis работает хуже, чем мой или serzh82saratov.

8

Re: AHK: Блокировать кнопку при появлении картинки

Так тоже мигает?

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

9

Re: AHK: Блокировать кнопку при появлении картинки

Да.

10

Re: AHK: Блокировать кнопку при появлении картинки

Так что именно мигает. Когда нажимаешь на LShift должно мигать, в смысле без блокировок, и в какой то программе?

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

11

Re: AHK: Блокировать кнопку при появлении картинки

При таком запущенном коде, блокируется как надо?


   OnExit, Exit
   hHookKeybd := DllCall("SetWindowsHookEx" . (A_IsUnicode ? "W" : "A")
      , Int, WH_KEYBOARD_LL := 13
      , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
      , Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
      , UInt, 0, Ptr)
   Return

Exit:
   DllCall("UnhookWindowsHookEx", Ptr, hHookKeybd)
   ExitApp

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   Critical
   If NumGet(lParam+0, 0, "UInt") = 160 ; 160 dec vk code LShift
        Return 1
   Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam)
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Блокировать кнопку при появлении картинки

На первой строчке надо #Persistent написать?
Все-равно мигает.
Я зажимаю Shift при запущенном коде и курсор мигает так как-будто, то я нажимаю на шифт, то отпускаю.

13

Re: AHK: Блокировать кнопку при появлении картинки

Может так:

Lshift::
Sendplay,{lshift up}
Keywait,lshift
Return
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

14

Re: AHK: Блокировать кнопку при появлении картинки

Не, так не работает вообще.