Что нового

Блокировк клавиатуры во время варпа

hikki

Продвинутый
Сообщения
233
Репутация
99
20091012221026.jpg


Бот у меня варпает вот таким способом, через меню в верхнем левом углу. Но есть проблема, я иногда во время работы люблю пофлудить в какомнибудь чате, и, если я во время нажатия на стрелку и выбора буки начинаю чтолибо печатать то ниспадающее меню пропадает и бот тупо щелкает по экрану вместо выбора буки. Очевидное решение использовать BlockInput не помогло, также пропадает меню, наткнулся на BlockInputEx, но результат такойже.

Приведу кусок кода, может пригодится.
($main[0] и $main[1] это координаты вершины треугольника меню)
$MenuX и $MenuY; координаты середины меню, белая стрелочка на пару пикселов ниже и правее $main[0] и $main[1]
$MenuY

$bookmarkX=$main[0]+94 ; координаты бук для варпа Горизонталь, постоянно.
$bookmarkXwarp=$bookmarkX+200 ; координаты бук для варпа Горизонталь, смещение для клика
$belt_1=$main[1]+97; это координаты 1 буки по Y, остальные кратны 16 (при размере шрифта 11)

Код:
#Include <GUIConstantsEx.au3>
#Include <WinAPI.au3>
#Include <WindowsConstants.au3>

Global $Lock = False

$hDll = DllCallbackRegister('_KbdHook', 'long', 'int;wparam;lparam')
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hDll), _WinAPI_GetModuleHandle(0), 0)

warp($belt_1)

Func warp($bookmarkY)
WarpTest(); проверка на варп и посылает ктрл+спейс 
_KbdLock(1)
MouseClick("left", $MenuX+Random(3), $MenuY+Random(2), 1, 10)
    Sleep(1500)
MouseMove($bookmarkX+Random(10), $bookmarkY+Random(4), 10)
    Sleep(1500)
MouseClick("left", $bookmarkXwarp+Random(25), $bookmarkY+2+Random(4), 1, 20)
_KbdLock(0)
WarpTest_true() ;приостановка до конца варпа
EndFunc

Func _KbdLock($fLock)
    $Lock = $fLock
EndFunc   ;==>_KbdLock

Func _KbdHook($iCode, $wParam, $lParam)
    If ($iCode > -1) And ($Lock) Then
        Switch $wParam
            Case $WM_KEYDOWN, $WM_SYSKEYDOWN
                Return -1
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $iCode, $wParam, $lParam)
EndFunc   ;==>_KbdHook

Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hDll)
EndFunc   ;==>OnHotKeyExit


вот теперь работает все, спасибо Yashied
 

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
запускай бота на виртуальной машине а чаться с другого чара )
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Поставил плюс. Тоже когда-то страдал от этого :smile:
 
Автор
H

hikki

Продвинутый
Сообщения
233
Репутация
99
спасибо большое за репу)) но что нет возможности заблочить клавиатуру?
 

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
hikki сказал(а):
спасибо большое за репу)) но что нет возможности заблочить клавиатуру?
Не , просто Белфигор подумал что ты выложил решение проблемы а не вопрос как с этим справится
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Действительно думал что ты выложил решение. Я не особо в этом направлении ковырялся, просто поставил бота на другой комп и все
29.gif
 
Автор
H

hikki

Продвинутый
Сообщения
233
Репутация
99
Поправил первый пост, выложил рабочий код.
 
Верх