Что нового

эмуляция нажатия клавиш

skaaater

Новичок
Сообщения
4
Репутация
0
Добрый день. Такая проблема, хочу написать программу, чтобы при попадании в центр экрана определенного цвета, автоматический нажимались клавиши :
1.Правая кнопка мыши
Задержка 20 мсек
2.Левая кнопка мыши
Задержка 20 мсек
3.Цифра "3" (верхняя цифр. клавиатура)
Задержка 20 мсек
4.Цифра "1" (верхняя цифр. клавиатура)

Уже запутался в этих клавишах, не подскажете как написать (доработать) код?

Вот сам код (помечено куда нужно вставить)


Код:
#Region   #AutoIt3Wrapper_Version=Beta
 #AutoIt3Wrapper_Icon=icon.ico  
#AutoIt3Wrapper_Outfile=zzz.exe  
#AutoIt3Wrapper_Compression=4  
#AutoIt3Wrapper_Compile_Both=y  
#AutoIt3Wrapper_UseX64=y  
#AutoIt3Wrapper_Res_Comment=papkamod  
#AutoIt3Wrapper_Res_Description=papkamod  
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0  
#AutoIt3Wrapper_Res_Language=1049  
#AutoIt3Wrapper_Res_requestedExecutionLevel=highestAvailable  
#EndRegion   
#Include <Resources.au3>  
#Include <HotKey.au3>  
If WinExists(@ScriptName) Then Exit  
AutoItWinSetTitle(@ScriptName)    


Opt("MouseCoordMode", 0)  
Opt("TrayIconHide", 1)  
Opt("PixelCoordMode", 2)  
Opt("MouseClickDelay", 1)   
Opt("MouseClickDownDelay", 100)     

Global $Cscript = 1   
Global $PAUSARASBROSA = 10   
Global Const $VK_OEM_PLUS = 0xBB   
Global Const $VK_OEM_MINUS = 0xBD     

MsgBox(48, "Hello",10)    

_HotKeyAssign($VK_HOME, 'TogglePause')   
_HotKeyAssign($VK_END, 'Terminate')     

_HotKeyAssign($VK_OEM_PLUS, 'Zna4eniePLUS')   
_HotKeyAssign($VK_OEM_MINUS, 'Zna4enieMINUS')      
While 1    
While $Cscript = 1    
; координаты поиска и цвета  
$left='492'  
$top='429'  
$right='533'  
$bottom='434'  
$color='15878679';Цвет пиксела      

$pos = PixelSearch ( $left, $top, $right, $bottom, $color)   
If Not @error Then ; если цвет найден выполняем условие      

; Вот здесь нужно чтобы выполнилось нажатие клавиш  	  	  

EndIf  
If $Cscript <> 1 Then   
ToolTip("ПАУЗА", 0, 0)  
Beep(500,100)   
ToolTip("")   
EndIf  
WEnd    

While $Cscript = 0    
sleep(1000)  
If $Cscript <> 0 Then   
ToolTip("ЗАПУСК", 0, 0)  
Beep(500,100)  
ToolTip("")  
EndIf  
WEnd  
WEnd      

Func Zna4eniePLUS()   
$PAUSARASBROSA = $PAUSARASBROSA + "5"  
ToolTip("Задержка - "&$PAUSARASBROSA, 0, 0)   
sleep(300)   
ToolTip("")     

EndFunc    Func Zna4enieMINUS()   
$PAUSARASBROSA = $PAUSARASBROSA - "5"  
ToolTip(" + "&$PAUSARASBROSA, 0, 0)   
sleep(300)   
ToolTip("")   
EndFunc        

Func TogglePause()  
$Cscript = NOT $Cscript  
EndFunc     

Func Terminate()  
ToolTip("Autoshot -  ВЫКЛЮЧЕНИЕ", 0, 0)   
Beep(500,500)       
Exit 0  
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
skaaater,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А нажать на "Send" и получить русскоязычную справку по команде нэ?
 

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Белфигор сегодня злой :D

А по теме:
Код:
$pos = PixelSearch ( $left, $top, $right, $bottom, $color)   
If Not @error Then
 MouseClick("right", $x, $y)
 sleep(20)
 MouseClick("left", $x, $y)
 sleep(20)
 Send("{3}")
 sleep(20)
 Send("{1}")
 Sleep(20)
Else
 Tooltip("Ждём точку")
endif
 
Автор
S

skaaater

Новичок
Сообщения
4
Репутация
0
_ToBe_. Спасибо, только одно но, клики мыши работают, а нажатия с клавиатуры нет. В этом то и была проблемма
 

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Проверь если
Код:
Send("{3}")
работает, к примеру в блокноте... Если работает, тогда мне единственное что приходит в голову - это тайминги... Т.е. после нажатия ПКМ, потом ЛКМ, наверно появляется какое-то окошко или менюшка, куда надо ввести цифры... Так вот Автоит это делает раньше, чем нужно :D Попробуй увеличь задержку между отправкой не на 20мс, а на 200мс - 2 сек.
 

Andrei7

Новичок
Сообщения
72
Репутация
3
Попробуй увеличь задержку между отправкой не на 20мс, а на 200мс - 2 сек.
а может правильней было бы ждать появление нужного окна и потом уже кликать?
 

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Andrei7
Тоже верно, но кто знает что там у него происходит после Действий мыши? Может окно вообще сворачивается :D

В любом случае - надо дождаться, когда закончится действие мыши, появится какой-то результат, и в него уже отсылать цифры ;D
 
Автор
S

skaaater

Новичок
Сообщения
4
Репутация
0
_ToBe_, нет дело не в задержке, может быть нажатие происходит на "боковой" клавиатуре? Мне нужно чтобы нажатие происходило на верхней цифровой клавиатуре.



А по поводу для чего он нужен. Есть игра, с помощью этой программы будет происхдить так называемый "фаст зум"(Снайперская винтовка). Принцип прост: входим в зум(пкм) - делаем выстрел(лкм) - берем нож(3) - берем AWM(1) и все это очень быстро.
 

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Код:
Send("{3}")

- это как раз таки верхние цифры... Ибо боковые пишутся так:
Код:
Send("{NUMPAD3}")
 

Biforz

Новичок
Сообщения
19
Репутация
0
Клавиши ты не сможешь просто так реализовать!
Так как в игре "Crossfire" стоит защита X-trap, которая блокирует твои действия. Нужно переписывать библиотеки, которые прилогались в комплекте к твоему файлу...
 

seriousstas

Новичок
Сообщения
32
Репутация
0
Я совсем зелёнка в скриптостроении (пока только общие понятия)
Подскажите , такое возможно с помощью AutoIt :

Жму Ctrl+1 первый раз - выполняется например Alt+Q
вротой Alt+W
третий Alt+E
и так по кругу
?
 
Верх