Что нового

[Автоматизация] временная приостановка функции

Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Re: [Автоматизация] поиск на странице определённого текста IE

Александр
Александр сказал(а):
If _Check_Text($oIE, $s_Text) = True Then
Выдаёт ошибку:
Код:
C:\Users\NightlyBlooD\Desktop\AutoIt v3 Script (2) - ?????.au3 (80) : ==> Variable used without being declared.:
If _Check_Text($oIE, $s_Text) = True Then
If _Check_Text(^ ERROR
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Re: [Автоматизация] поиск на странице определённого текста IE

Zaramot
Ещё раз внимательно посмотрел ваш код, и понял что функция не будет повторяться, а всего лишь будет выполнена один раз...
тут скорее всего придётся работать с AdlibRegister() чтоб постоянно повторять функцию... но тут тоже есть загвоздка... с приостановкой и возобновлением функции (с приостановленного места)


Добавлено:
Сообщение автоматически объединено:

можно конечно же создать ещё один скрипт но той-же технологии, только 2 окна IE будут много "употреблять" оперативной памяти, что крайне не выгодно мне с моим "железом"
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Re: [Автоматизация] поиск на странице определённого текста IE

Trans
Я так понимаю что проблема в функции _Start, правильно ? Если да, то проверьте этот скрипт:
Код:
#Region#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\Pictures\favicon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_File_Add=image001.bmp, 2, 200
#AutoIt3Wrapper_Res_File_Add=logo.png, PNG, LOGO
#AutoIt3Wrapper_Res_File_Add=Start.png, PNG, START
#EndRegion
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Include <GDIPlus.au3>
#Include <Icons.au3>
#Include <WinAPIEx.au3>
Opt("TrayAutoPause",0)
Global $fState
Global $fState2
HotKeySet('{F11}', '_HideShow')
HotKeySet('{F10}', '_HideShow2')

#Region ### START Koda GUI section ### Form=
$GUI = GUICreate("World of the Rest - Click'er", 339, 169, 194, 114)
$Pic1 = GUICtrlCreatePic("", 0, 0, 339, 168)
GUICtrlSetState(-1, $GUI_DISABLE)
$Pic2 = GUICtrlCreatePic("", 215, 95,120, 70)
GUICtrlSetState(-1, $GUI_DISABLE)
$Login = GUICtrlCreateInput("", 120, 9, 130, 21, -1, 1)
$Pass = GUICtrlCreateInput("", 120, 36, 130, 23, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL), 1)
$Host = GUICtrlCreateInput("http://worldofrest.com.ua", 120, 65, 130, 21, -1, 1)
$Udar = GUICtrlCreateInput("1", 120, 91,  55, 21, -1, 1)
$Obnovlenie = GUICtrlCreateInput("5", 120, 117, 55, 21, -1, 1)
$ReLogin = GUICtrlCreateInput("30", 120, 143, 55, 21, -1, 1)
$Send = GUICtrlCreateButton("", 260, 9, 74, 51, $BS_BITMAP)
$Exit = GUICtrlCreateButton("", 260, 65, 74, 22)
$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 200)
_SetHImage($Pic1, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Startup()
$hImage = _LoadResourceImage($hInstance, "PNG", "LOGO")
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
_SetHImage($Pic2, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
GUISetState()
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Send
    Global $oLogin =  (GUICtrlRead($Login))
    Global $oPass =  (GUICtrlRead($Pass))
    Global $My_Host =  (GUICtrlRead($Host))
    Global $Udar_Wait = (GUICtrlRead($Udar))*1000
    Global $Obn_Wait = (GUICtrlRead($Obnovlenie))*1000
    Global $ReLogin_Wait = (GUICtrlRead($ReLogin))*60000
    Global $oURL = $My_Host & '/wap/login.php?user_name=' & $oLogin & '&user_pass=' & $oPass
            Win_Wor()
            _Start()
            GUISetState(@SW_HIDE, $GUI)
Case $Exit
        _IEQuit ($oIE)
        Exit
    EndSwitch
WEnd

Func _Start()
If _CheckIfWordExist('Вы получили травму') = True Then
	AdlibUnRegister('_Refresh')
    AdlibUnRegister('_ReLogin')
    AdlibUnRegister('_Click')
    _HealTouch()
    ;Sleep(1000)
	AdlibRegister('_Refresh', $Obn_Wait)
    AdlibRegister('_ReLogin', $ReLogin_Wait)
    AdlibRegister('_Click', $Udar_Wait)
Else
    AdlibRegister('_Refresh', $Obn_Wait)
    AdlibRegister('_ReLogin', $ReLogin_Wait)
    AdlibRegister('_Click', $Udar_Wait)
EndIf
EndFunc


Func _HideShow2()
    $fState2 = Not $fState2
    If $fState2 Then
        GUISetState(@SW_HIDE, $GUI)
    Else
        GUISetState(@SW_SHOW, $GUI)
    EndIf
EndFunc
;##################################Script Functions#####################################

Func _ClickButton(ByRef $_Obj, $sName)
    If Not IsObj($oIE) Then Return
    If Not IsObj($_Obj) Then Return ;если $_Obj не $oIE
    $oButtons = _IETagNameGetCollection($_Obj, 'input')
    If @error Then Return
    For $oButton In $oButtons
        If $oButton.Name == $sName Then
            _IEAction($oButton, "click")
            If @error Then Return
            _IELoadWait($oIE)
            Return
        EndIf
    Next
EndFunc

Func _Refresh()
    $random = Random(1, 6, 1)
        If $random = 1 Then
            $RandomURL = '/wap/main.php'
        ElseIf $random = 2 Then
            $RandomURL = '/wap/game.php'
        ElseIf $random = 3 Then
            $RandomURL = '/wap/inventar.php'
        ElseIf $random = 4 Then
            $RandomURL = '/wap/teritory.php'
        ElseIf $random = 5 Then
            $RandomURL = '/wap/face.php'
        ElseIf $random = 6 Then
            $RandomURL = '/wap/anekdots.php'
        EndIf
    _IENavigate($oIE, $My_Host & $RandomURL)
EndFunc

Func _ReLogin()
    _IENavigate($oIE, $oURL)
EndFunc

Func _Click()
     _ClickButton($oIE, 'bitvraga')
 EndFunc
 
 Func _HealTouch()
_IENavigate ($oIE, 'http://worldofrest.com.ua/wap/lechit.php?ID=13160656')
_IELoadWait ($oIE)
$FormLechit=_IEFormGetCollection($oIE,0)
$namelechit =_IEFormElementGetObjByName($oForm,"namelechit")
$kolres = _IEFormElementGetObjByName($oForm,"kolres")
_IEFormElementSetValue($namelechit,$oLogin)
_IEFormElementSetValue($kolres,"10")
_IEAction($FormLechit, "click")
EndFunc

Func _CheckIfWordExist($iWORD)
    $iHTML = _IEDocReadHTML($oIE)
    If StringInStr($iHTML, $iWORD) Then
        Return True
    Else
        Return False
    EndIf
EndFunc
 
;##################################End Script Functions##################################





; Simple example: Embedding an Internet Explorer Object inside an AutoIt GUI
;
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
Func Win_Wor()
    Local  $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward
    Local $GUI_Button_Home, $GUI_Button_Stop, $msg
    Global $oIE
    Global $WinIE
    $oIE = ObjCreate("Shell.Explorer.2")

    ; Create a simple GUI for our output
    $WinIE = GUICreate("World Of The Rest", 480, 320, 0 , 0, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
    $GUIActiveX = GUICtrlCreateObj ($oIE, 0, 0, 480, 320)

    GUISetState(@SW_HIDE, $WinIE)       ;Show GUI

    $oIE.navigate($oURL)

    ; Waiting for user to close the window

EndFunc   ;==>Example

Func _HideShow()
    $fState2 = Not $fState2
    If $fState2 Then
        GUISetState(@SW_HIDE, $WinIE)
    Else
        GUISetState(@SW_SHOW, $WinIE)
    EndIf
EndFunc


#cs ----------------------------------------------------------------------------
Графические функции
#ce ----------------------------------------------------------------------------
Func _LoadResourceImage($hInstance, $sResType, $sResName, $iResLanguage = 0)

    Local $hInfo, $hData, $pData, $iSize, $hMem, $pMem, $hStream, $hImage

    If $iResLanguage Then
        $hInfo = _WinAPI_FindResourceEx($hInstance, $sResType, $sResName, $iResLanguage)
    Else
        $hInfo = _WinAPI_FindResource($hInstance, $sResType, $sResName)
    EndIf
    $hData = _WinAPI_LoadResource($hInstance, $hInfo)
    $iSize = _WinAPI_SizeOfResource($hInstance, $hInfo)
    $pData = _WinAPI_LockResource($hData)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    $hMem = DllCall("kernel32.dll", "ptr", "GlobalAlloc", "uint", 2, "ulong_ptr", $iSize)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    $pMem = DllCall("kernel32.dll", "ptr", "GlobalLock", "ptr", $hMem[0])
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $pMem[0], "ptr", $pData, "ulong_ptr", $iSize)
    DllCall("kernel32.dll", "int", "GlobalUnlock", "ptr", $hMem[0])
    $hStream = _WinAPI_CreateStreamOnHGlobal($hMem[0])
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    _GDIPlus_Startup()
    $hImage = DllCall("gdiplus.dll", "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "ptr*", 0)
    If (@error) Or ($hImage[0]) Or (Not $hImage[2]) Then
        $hImage = 0
    EndIf
    _GDIPlus_Shutdown()
    DllCall("kernel32.dll", "ptr", "GlobalFree", "ptr", $hMem[0])
    If Not IsArray($hImage) Then
        Return SetError(1, 0, 0)
    EndIf
    Return $hImage[2]
EndFunc   ;==>_LoadResourceImage
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Автоматизация] поиск на странице определённого текста IE

Trans, вот вам функция слушателя, дальше вам главное правильно написать алгоритм вашего кода.

1. Запустите скрипт
2. Набирайте в поисковике слово "Heal" и внимательно смотрите в консоль SciTE

Код:
#include <IE.au3>

Global $sWord = "Heal"
Global $bHealTouch = False

$oIE = _IECreate("http://ya.ru")
$oError = ObjEvent("AutoIt.Error","_Error")    
AdlibRegister("_ListenerKeyWord")

While 1  ; Основной цикл
	Sleep(250)
WEnd

AdlibUnRegister("_ListenerKeyWord")
$oIE = 0

Func _ListenerKeyWord()
	
	Local $oRng
	$oRng = $oIE.document.body
	
	If IsObj($oRng) Then
		
		$oRng = $oRng.createTextRange()
		
		If $oRng.findText($sWord) == True Then
			_HealTouch()
		Else
			_MyFunc()
		EndIf
	EndIf
EndFunc

Func _MyFunc()
	ConsoleWrite("Работает функция _MyFunc" & @CRLF)
EndFunc

Func _HealTouch()
	ConsoleWrite("Работает функция _HealTouch" & @CRLF)
EndFunc

Func _Error()
	AdlibUnRegister("_ListenerKeyWord")
	$oIE = 0
	Exit
EndFunc
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Re: [Автоматизация] поиск на странице определённого текста IE

Zaramot
Zaramot сказал(а):
Код:
#Region#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\Pictures\favicon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_File_Add=image001.bmp, 2, 200
#AutoIt3Wrapper_Res_File_Add=logo.png, PNG, LOGO
#AutoIt3Wrapper_Res_File_Add=Start.png, PNG, START
#EndRegion
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Include <GDIPlus.au3>
#Include <Icons.au3>
#Include <WinAPIEx.au3>
Opt("TrayAutoPause",0)
Global $fState
Global $fState2
HotKeySet('{F11}', '_HideShow')
HotKeySet('{F10}', '_HideShow2')

#Region ### START Koda GUI section ### Form=
$GUI = GUICreate("World of the Rest - Click'er", 339, 169, 194, 114)
$Pic1 = GUICtrlCreatePic("", 0, 0, 339, 168)
GUICtrlSetState(-1, $GUI_DISABLE)
$Pic2 = GUICtrlCreatePic("", 215, 95,120, 70)
GUICtrlSetState(-1, $GUI_DISABLE)
$Login = GUICtrlCreateInput("", 120, 9, 130, 21, -1, 1)
$Pass = GUICtrlCreateInput("", 120, 36, 130, 23, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL), 1)
$Host = GUICtrlCreateInput("http://worldofrest.com.ua", 120, 65, 130, 21, -1, 1)
$Udar = GUICtrlCreateInput("1", 120, 91,  55, 21, -1, 1)
$Obnovlenie = GUICtrlCreateInput("5", 120, 117, 55, 21, -1, 1)
$ReLogin = GUICtrlCreateInput("30", 120, 143, 55, 21, -1, 1)
$Send = GUICtrlCreateButton("", 260, 9, 74, 51, $BS_BITMAP)
$Exit = GUICtrlCreateButton("", 260, 65, 74, 22)
$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 200)
_SetHImage($Pic1, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Startup()
$hImage = _LoadResourceImage($hInstance, "PNG", "LOGO")
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
_SetHImage($Pic2, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
GUISetState()
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Send
    Global $oLogin =  (GUICtrlRead($Login))
    Global $oPass =  (GUICtrlRead($Pass))
    Global $My_Host =  (GUICtrlRead($Host))
    Global $Udar_Wait = (GUICtrlRead($Udar))*1000
    Global $Obn_Wait = (GUICtrlRead($Obnovlenie))*1000
    Global $ReLogin_Wait = (GUICtrlRead($ReLogin))*60000
    Global $oURL = $My_Host & '/wap/login.php?user_name=' & $oLogin & '&user_pass=' & $oPass
            Win_Wor()
            _Start()
            GUISetState(@SW_HIDE, $GUI)
Case $Exit
        _IEQuit ($oIE)
        Exit
    EndSwitch
WEnd

Func _Start()
If _CheckIfWordExist('Вы получили травму') = True Then
    AdlibUnRegister('_Refresh')
    AdlibUnRegister('_ReLogin')
    AdlibUnRegister('_Click')
    _HealTouch()
    ;Sleep(1000)
    AdlibRegister('_Refresh', $Obn_Wait)
    AdlibRegister('_ReLogin', $ReLogin_Wait)
    AdlibRegister('_Click', $Udar_Wait)
Else
    AdlibRegister('_Refresh', $Obn_Wait)
    AdlibRegister('_ReLogin', $ReLogin_Wait)
    AdlibRegister('_Click', $Udar_Wait)
EndIf
EndFunc


Func _HideShow2()
    $fState2 = Not $fState2
    If $fState2 Then
        GUISetState(@SW_HIDE, $GUI)
    Else
        GUISetState(@SW_SHOW, $GUI)
    EndIf
EndFunc
;##################################Script Functions#####################################

Func _ClickButton(ByRef $_Obj, $sName)
    If Not IsObj($oIE) Then Return
    If Not IsObj($_Obj) Then Return ;если $_Obj не $oIE
    $oButtons = _IETagNameGetCollection($_Obj, 'input')
    If @error Then Return
    For $oButton In $oButtons
        If $oButton.Name == $sName Then
            _IEAction($oButton, "click")
            If @error Then Return
            _IELoadWait($oIE)
            Return
        EndIf
    Next
EndFunc

Func _Refresh()
    $random = Random(1, 6, 1)
        If $random = 1 Then
            $RandomURL = '/wap/main.php'
        ElseIf $random = 2 Then
            $RandomURL = '/wap/game.php'
        ElseIf $random = 3 Then
            $RandomURL = '/wap/inventar.php'
        ElseIf $random = 4 Then
            $RandomURL = '/wap/teritory.php'
        ElseIf $random = 5 Then
            $RandomURL = '/wap/face.php'
        ElseIf $random = 6 Then
            $RandomURL = '/wap/anekdots.php'
        EndIf
    _IENavigate($oIE, $My_Host & $RandomURL)
EndFunc

Func _ReLogin()
    _IENavigate($oIE, $oURL)
EndFunc

Func _Click()
     _ClickButton($oIE, 'bitvraga')
 EndFunc
 
 Func _HealTouch()
_IENavigate ($oIE, 'http://worldofrest.com.ua/wap/lechit.php?ID=13160656')
_IELoadWait ($oIE)
$FormLechit=_IEFormGetCollection($oIE,0)
$namelechit =_IEFormElementGetObjByName($oForm,"namelechit")
$kolres = _IEFormElementGetObjByName($oForm,"kolres")
_IEFormElementSetValue($namelechit,$oLogin)
_IEFormElementSetValue($kolres,"10")
_IEAction($FormLechit, "click")
EndFunc

Func _CheckIfWordExist($iWORD)
    $iHTML = _IEDocReadHTML($oIE)
    If StringInStr($iHTML, $iWORD) Then
        Return True
    Else
        Return False
    EndIf
EndFunc
 
;##################################End Script Functions##################################





; Simple example: Embedding an Internet Explorer Object inside an AutoIt GUI
;
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
Func Win_Wor()
    Local  $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward
    Local $GUI_Button_Home, $GUI_Button_Stop, $msg
    Global $oIE
    Global $WinIE
    $oIE = ObjCreate("Shell.Explorer.2")

    ; Create a simple GUI for our output
    $WinIE = GUICreate("World Of The Rest", 480, 320, 0 , 0, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
    $GUIActiveX = GUICtrlCreateObj ($oIE, 0, 0, 480, 320)

    GUISetState(@SW_HIDE, $WinIE)       ;Show GUI

    $oIE.navigate($oURL)

    ; Waiting for user to close the window

EndFunc   ;==>Example

Func _HideShow()
    $fState2 = Not $fState2
    If $fState2 Then
        GUISetState(@SW_HIDE, $WinIE)
    Else
        GUISetState(@SW_SHOW, $WinIE)
    EndIf
EndFunc


#cs ----------------------------------------------------------------------------
Графические функции
#ce ----------------------------------------------------------------------------
Func _LoadResourceImage($hInstance, $sResType, $sResName, $iResLanguage = 0)

    Local $hInfo, $hData, $pData, $iSize, $hMem, $pMem, $hStream, $hImage

    If $iResLanguage Then
        $hInfo = _WinAPI_FindResourceEx($hInstance, $sResType, $sResName, $iResLanguage)
    Else
        $hInfo = _WinAPI_FindResource($hInstance, $sResType, $sResName)
    EndIf
    $hData = _WinAPI_LoadResource($hInstance, $hInfo)
    $iSize = _WinAPI_SizeOfResource($hInstance, $hInfo)
    $pData = _WinAPI_LockResource($hData)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    $hMem = DllCall("kernel32.dll", "ptr", "GlobalAlloc", "uint", 2, "ulong_ptr", $iSize)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    $pMem = DllCall("kernel32.dll", "ptr", "GlobalLock", "ptr", $hMem[0])
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $pMem[0], "ptr", $pData, "ulong_ptr", $iSize)
    DllCall("kernel32.dll", "int", "GlobalUnlock", "ptr", $hMem[0])
    $hStream = _WinAPI_CreateStreamOnHGlobal($hMem[0])
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    _GDIPlus_Startup()
    $hImage = DllCall("gdiplus.dll", "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "ptr*", 0)
    If (@error) Or ($hImage[0]) Or (Not $hImage[2]) Then
        $hImage = 0
    EndIf
    _GDIPlus_Shutdown()
    DllCall("kernel32.dll", "ptr", "GlobalFree", "ptr", $hMem[0])
    If Not IsArray($hImage) Then
        Return SetError(1, 0, 0)
    EndIf
    Return $hImage[2]
EndFunc   ;==>_LoadResourceImage

Выдаёт ошибку после нажатия на кнопку старт (большая кнопка)
Код:
>Running:(3.3.6.1):C:\Program Files\AutoIt3_v3.3.6.1\autoit3.exe "C:\Users\NightlyBlooD\Desktop\Zaramot.au3"    
C:\Program Files\AutoIt3_v3.3.6.1\Include\IE.au3 (2021) : ==> Variable must be of type "Object".:
Return SetError($_IEStatus_Success, 0, $o_object.document.documentElement.outerHTML)
Return SetError($_IEStatus_Success, 0, $o_object.document^ ERROR
->10:07:54 AutoIT3.exe ended.rc:1
>Exit code: 1    Time: 3.653



Добавлено:
Сообщение автоматически объединено:

Garrett

если сделать по вашему коду, тогда функция _My_Func будет повторяться постоянно пока не будет определённого текста на станице, а данный вариант не подходит, из-за того, что у меня функция _Start состоит из:
Код:
Func _Start()
AdlibRegister('_Refresh', $Obn_Wait)
AdlibRegister('_ReLogin', $ReLogin_Wait)
AdlibRegister('_Click', $Udar_Wait)
EndFunc

Если воспользоваться вашим примером, тогда функция _Start постоянно запускаться...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Автоматизация] поиск на странице определённого текста IE

Trans [?]
тогда функция _My_Func будет повторяться
Это пример слушателя, вы можете использовать его на своё усмотрение, к примеру, вставить вместо функции динамически меняющуюся переменную, которую в последствие обрабатывать в основном коде.

что у меня функция _Start состоит из
Код:
Func _Start()
AdlibRegister('_Refresh', $Obn_Wait)
AdlibRegister('_ReLogin', $ReLogin_Wait)
AdlibRegister('_Click', $Udar_Wait)
EndFunc
У вас функция _Start состоит из трёх постоянно зацикленных функций.

Если воспользоваться вашим примером, тогда функция _Start постоянно запускаться...
Тогда напрашивается вопрос, чем зацикленная функция в моём примере отличается от вашей :smile:
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Re: [Автоматизация] поиск на странице определённого текста IE

Garrett
Garrett сказал(а):
Тогда напрашивается вопрос, чем зацикленная функция в моём примере отличается от вашей :smile:
У этих функций стоит определённое время, а если их пустить через вашу, то эти функции будут постоянно повторяться не зависимо от установленного времени...
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Re: [Автоматизация] поиск на странице определённого текста IE

Garrett
Можете проверить...

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\Pictures\favicon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_File_Add=image001.bmp, 2, 200
#AutoIt3Wrapper_Res_File_Add=logo.png, PNG, LOGO
#EndRegion
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Include <GDIPlus.au3>
#Include <Icons.au3>
#Include <WinAPIEx.au3>
Opt("TrayAutoPause",0)
Global $sWord = "Вы получили травму"
Global $bHealTouch = False
Global $fState
Global $fState2
HotKeySet('{F11}', '_HideShow')
HotKeySet('{F10}', '_HideShow2')

#Region ### START Koda GUI section ### Form=
$GUI = GUICreate("World of the Rest - Click'er", 339, 169, 194, 114)
$Pic1 = GUICtrlCreatePic("", 0, 0, 339, 168)
GUICtrlSetState(-1, $GUI_DISABLE)
$Pic2 = GUICtrlCreatePic("", 215, 95,120, 70)
GUICtrlSetState(-1, $GUI_DISABLE)
$Login = GUICtrlCreateInput("", 120, 9, 130, 21, -1, 1)
$Pass = GUICtrlCreateInput("", 120, 36, 130, 23, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL), 1)
$Host = GUICtrlCreateInput("http://worldofrest.com.ua", 120, 65, 130, 21, -1, 1)
$Udar = GUICtrlCreateInput("1", 120, 91,  55, 21, -1, 1)
$Obnovlenie = GUICtrlCreateInput("5", 120, 117, 55, 21, -1, 1)
$ReLogin = GUICtrlCreateInput("30", 120, 143, 55, 21, -1, 1)
$Send = GUICtrlCreateButton("", 260, 9, 74, 51, $BS_BITMAP)
$Exit = GUICtrlCreateButton("", 260, 65, 74, 22)
$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 200)
_SetHImage($Pic1, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Startup()
$hImage = _LoadResourceImage($hInstance, "PNG", "LOGO")
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
_SetHImage($Pic2, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
GUISetState()
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Send
	Global $oLogin =  (GUICtrlRead($Login))
	Global $oPass =  (GUICtrlRead($Pass))
	Global $My_Host =  (GUICtrlRead($Host))
	Global $Udar_Wait = (GUICtrlRead($Udar))*1000
	Global $Obn_Wait = (GUICtrlRead($Obnovlenie))*1000
	Global $ReLogin_Wait = (GUICtrlRead($ReLogin))*60000
	Global $oURL = $My_Host & '/wap/login.php?user_name=' & $oLogin & '&user_pass=' & $oPass
			Win_Wor()
            _GlobalStart()
			GUISetState(@SW_HIDE, $GUI)
Case $Exit
		_IEQuit ($oIE)
        Exit
    EndSwitch
WEnd


Func _GlobalStart ()
	AdlibRegister("_ListenerKeyWord")
EndFunc


Func _ListenerKeyWord()

    Local $oRng
    $oRng = $oIE.document.body

    If IsObj($oRng) Then

        $oRng = $oRng.createTextRange()

        If $oRng.findText($sWord) == True Then
            _HealTouch()
        Else
            _Start()
        EndIf
    EndIf
EndFunc


Func _Start()
AdlibRegister('_Refresh', $Obn_Wait)
AdlibRegister('_ReLogin', $ReLogin_Wait)
AdlibRegister('_Click', $Udar_Wait)
EndFunc


 Func _HealTouch()
_IENavigate ($oIE, 'http://worldofrest.com.ua/wap/lechit.php?ID=13160656')
_IELoadWait ($oIE)
$FormLechit=_IEFormGetCollection($oIE,0)
$namelechit =_IEFormElementGetObjByName($FormLechit,"namelechit")
$kolres = _IEFormElementGetObjByName($FormLechit,"kolres")
_IEFormElementSetValue($namelechit,$oLogin)
_IEFormElementSetValue($kolres,"10")
_IEAction($FormLechit, "click")
EndFunc


Func _HideShow2()
    $fState2 = Not $fState2
    If $fState2 Then
        GUISetState(@SW_HIDE, $GUI)
    Else
        GUISetState(@SW_SHOW, $GUI)
    EndIf
EndFunc
;##################################Script Functions#####################################

Func _ClickButton(ByRef $_Obj, $sName)
    If Not IsObj($oIE) Then Return
    If Not IsObj($_Obj) Then Return ;если $_Obj не $oIE
    $oButtons = _IETagNameGetCollection($_Obj, 'input')
    If @error Then Return
    For $oButton In $oButtons
        If $oButton.Name == $sName Then
            _IEAction($oButton, "click")
            If @error Then Return
            _IELoadWait($oIE)
            Return
        EndIf
    Next
EndFunc

Func _Refresh()
    $random = Random(1, 6, 1)
        If $random = 1 Then
            $RandomURL = '/wap/main.php'
        ElseIf $random = 2 Then
            $RandomURL = '/wap/game.php'
        ElseIf $random = 3 Then
            $RandomURL = '/wap/inventar.php'
        ElseIf $random = 4 Then
            $RandomURL = '/wap/teritory.php'
        ElseIf $random = 5 Then
            $RandomURL = '/wap/face.php'
		ElseIf $random = 6 Then
            $RandomURL = '/wap/anekdots.php'
        EndIf
    _IENavigate($oIE, $My_Host & $RandomURL)
EndFunc

Func _ReLogin()
    _IENavigate($oIE, $oURL)
EndFunc

Func _Click()
     _ClickButton($oIE, 'bitvraga')
 EndFunc

;##################################End Script Functions##################################





; Simple example: Embedding an Internet Explorer Object inside an AutoIt GUI
;
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
Func Win_Wor()
    Local  $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward
    Local $GUI_Button_Home, $GUI_Button_Stop, $msg
	Global $oIE
	Global $WinIE
    $oIE = ObjCreate("Shell.Explorer.2")

    ; Create a simple GUI for our output
	$WinIE = GUICreate("World Of The Rest", 480, 320, 0 , 0, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
    $GUIActiveX = GUICtrlCreateObj ($oIE, 0, 0, 480, 320)

    GUISetState(@SW_SHOW, $WinIE)       ;Show GUI

    $oIE.navigate($oURL)

    ; Waiting for user to close the window

EndFunc   ;==>Example

Func _HideShow()
    $fState2 = Not $fState2
    If $fState2 Then
        GUISetState(@SW_HIDE, $WinIE)
    Else
        GUISetState(@SW_SHOW, $WinIE)
    EndIf
EndFunc


#cs ----------------------------------------------------------------------------
Графические функции
#ce ----------------------------------------------------------------------------
Func _LoadResourceImage($hInstance, $sResType, $sResName, $iResLanguage = 0)

    Local $hInfo, $hData, $pData, $iSize, $hMem, $pMem, $hStream, $hImage

    If $iResLanguage Then
        $hInfo = _WinAPI_FindResourceEx($hInstance, $sResType, $sResName, $iResLanguage)
    Else
        $hInfo = _WinAPI_FindResource($hInstance, $sResType, $sResName)
    EndIf
    $hData = _WinAPI_LoadResource($hInstance, $hInfo)
    $iSize = _WinAPI_SizeOfResource($hInstance, $hInfo)
    $pData = _WinAPI_LockResource($hData)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    $hMem = DllCall("kernel32.dll", "ptr", "GlobalAlloc", "uint", 2, "ulong_ptr", $iSize)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    $pMem = DllCall("kernel32.dll", "ptr", "GlobalLock", "ptr", $hMem[0])
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $pMem[0], "ptr", $pData, "ulong_ptr", $iSize)
    DllCall("kernel32.dll", "int", "GlobalUnlock", "ptr", $hMem[0])
    $hStream = _WinAPI_CreateStreamOnHGlobal($hMem[0])
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    _GDIPlus_Startup()
    $hImage = DllCall("gdiplus.dll", "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "ptr*", 0)
    If (@error) Or ($hImage[0]) Or (Not $hImage[2]) Then
        $hImage = 0
    EndIf
    _GDIPlus_Shutdown()
    DllCall("kernel32.dll", "ptr", "GlobalFree", "ptr", $hMem[0])
    If Not IsArray($hImage) Then
        Return SetError(1, 0, 0)
    EndIf
    Return $hImage[2]
EndFunc   ;==>_LoadResourceImage


Добавлено:
Сообщение автоматически объединено:

Логин ItMan
Пароль 123123
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Переименновал тему, так как одна из проблем решина, осталось решить другую проблему...
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Неужели не у кого больше нету никаких идей?
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Решил проблему, крайне не красивым методом, но всё же работате... всем спасибо за помощь, особенную благодарность выражаю пользователям Garrett, Zaramot и madmasles



Добавлено:
Сообщение автоматически объединено:

вроде всем дал по + за помощь (тем кто активно помогал)

:IL_AutoIt_1:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Trans [?]
Решил проблему, крайне не красивым методом, но всё же работате.
самая пакостная пакость в жизни, это когда не говорят "как"
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Александр [?]
самая пакостная пакость в жизни, это когда не говорят "как"

Код:
Func _ListenerKeyWord()

    Local $oRng
    $oRng = $oIE.document.body

    If IsObj($oRng) Then

        $oRng = $oRng.createTextRange()

        If $oRng.findText($sWord) == True Then
            _HealTouch()
        Else
        EndIf
    EndIf
EndFunc


Func _Start()
AdlibRegister('_Refresh', $Obn_Wait)
AdlibRegister('_ReLogin', $ReLogin_Wait)
AdlibRegister('_Click', $Udar_Wait)
AdlibRegister('_ListenerKeyWord', 600)
EndFunc

а в остальных функциях добавил _IELoadWait вроде как работает, но не на 100%
 
Верх