C2H5OH
AutoIT Гуру
- Сообщения
- 1,473
- Репутация
- 333
народ, киньте прогу или код, чтоб читать флаги - реальный ввод клав/мышки или эмуляция
А подумать лень?
Если бы был такой код, то ботов не было бы.
:IL_AutoIt_1:
народ, киньте прогу или код, чтоб читать флаги - реальный ввод клав/мышки или эмуляция
этот вариант отпал и не стоит даже думать в его сторону.Может стоит попробовать, открыть экранную клавиатуру, скрыть её, посылать ей контролсенды или это абсурд? :D
Модифицировал пример из справки по функции _WinAPI_SetWindowsHookEx :киньте прогу или код, чтоб читать флаги - реальный ввод клав/мышки или эмуляция
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
Opt('MustDeclareVars', 1)
Global $hHook, $hStub_KeyProc, $buffer = ""
GUICreate("12345", 200, 150)
GUICtrlCreateEdit("", 0, 0)
GUISetState()
_Main()
Func _Main()
OnAutoItExitRegister("Cleanup")
Local $hmod
$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
While 1
Sleep(10)
WEnd
EndFunc ;==>_Main
;===========================================================
; callback function
;===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If DllStructGetData($tKEYHOOKS, "vkCode") = 27 Then Exit
Local $flags = DllStructGetData($tKEYHOOKS, "flags")
Switch $flags
Case $LLKHF_ALTDOWN
ConsoleWrite("$LLKHF_ALTDOWN" & @CRLF)
Case $LLKHF_EXTENDED
ConsoleWrite("$LLKHF_EXTENDED" & @CRLF)
Case $LLKHF_INJECTED
ConsoleWrite("$LLKHF_INJECTED" & @CRLF)
Case $LLKHF_UP
ConsoleWrite("$LLKHF_UP: scanCode - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & "vkCode - " & DllStructGetData($tKEYHOOKS, "vkCode") & @CRLF)
EndSwitch
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Func Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc ;==>Cleanup
#include <WinAPIEx.au3>
#include <APIConstants.au3>
GUICreate("", 150, 110)
$btn1 = GUICtrlCreateButton("Send", 10, 10)
$btn2 = GUICtrlCreateButton("ControlSend", 10, 40)
$btn3 = GUICtrlCreateButton("Keybd_Event", 10, 70)
GUISetState()
Do
Switch GUIGetMsg()
Case $btn1
WinActivate("12345")
Send("w")
Case $btn2
ControlSend("12345", "", "Edit1", "w")
Case $btn3
WinActivate("12345")
_WinAPI_Keybd_Event($VK_W, 0, 0, 0)
Case -3
Exit
EndSwitch
Until 0
Opt("SendAttachMode", 1)
Код:Func _KeyProc($nCode, $wParam, $lParam) Local $tKEYHOOKS $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then
AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
Opt('MustDeclareVars', 1)
HotKeySet("{F9}", "_Quit")
Global $hHook, $hStub_MouseProc, $buffer = ""
Global Const $MSLLHOOKSTRUCT = $tagPOINT
GUICreate("12345", 200, 150)
Global $_GUI_DATA_INPUT=GUICtrlCreateEdit("", 0, 0)
GUISetState()
_Main()
Func _Main()
OnAutoItExitRegister("Cleanup")
$hStub_MouseProc = DllCallbackRegister("_MouseProc", "int", "int;wparam;ptr")
$hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL,DllCallbackGetPtr($hStub_MouseProc),_WinAPI_GetModuleHandle(0))
While 1
Sleep(100)
WEnd
EndFunc ;==>_Main
Func _MouseProc($nCode, $wParam, $lParam)
local $info
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
Local $mHOOKS = DllStructCreate($MSLLHOOKSTRUCT, $lParam)
Local $mouseData = DllStructGetData($info,3)
Local $time = DllStructGetData($info,5)
Local $flags = DllStructGetData($mHOOKS, "flags")
GUICtrlSetData($_GUI_DATA_INPUT,DllStructGetData($info,1)&" " & $flags)
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc
Func Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_MouseProc)
EndFunc ;==>Cleanup
Func _Quit()
Cleanup()
exit
EndFunc
Send
{F1} - {F12} Функциональные клавиши
Send("{F5}")
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
Opt("SendKeyDownDelay", 30) ; задержка между нажатием и отпусканием одной клавиши
Opt("SendKeyDelay", 100) ; задержка между отпусканием клавиши и нажатием следующей
OnAutoItExitRegister("Cleanup")
$hStub_KeyProc = DllCallbackRegister("KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
While 1
Sleep(1000)
WEnd
Func KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
If $wParam = $WM_KEYDOWN Then
If DllStructGetData($tKEYHOOKS, "vkCode") = 0x37 Then ; код клавиши "7"
SendKey()
Return -1
EndIf
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc
Func Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc
Func SendKey()
Send("{down}{down}{enter}")
EndFunc