JIereHga2010
Новичок
- Сообщения
- 68
- Репутация
- 0
Всем Доброго времени суток :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1:
Ув. Форумчане, пишу небольшую программку, для работы с группой ВК.
Но столкнулся с проблемой:
Скрипт создает окно IE скрытое, и работает с ним, тут все ок.
Но в GUI я сделал еще несколько кнопок, нажав на любую из них, создается еще 1 окно IE (видимое).
И тут скрипт, вместо того, что бы продолжать работать со скрытым окном, перехватывает второе, и работает уже с ним.
В общем это нужно видеть.
Исходник прикладываю.
:stars: :stars: :stars: :stars: :stars:
Хочу обратить Ваше внимание на следующие функции:
А вот функция, с помощью которой выполняется навигация по скрытому окну:
И именно она перехватывает управление нового видимого окна.
Помогите пожалуйста разобраться, почему так происходит?? В мануале ничего не нашел подобного.
Ув. Форумчане, пишу небольшую программку, для работы с группой ВК.
Но столкнулся с проблемой:
Скрипт создает окно IE скрытое, и работает с ним, тут все ок.
Но в GUI я сделал еще несколько кнопок, нажав на любую из них, создается еще 1 окно IE (видимое).
И тут скрипт, вместо того, что бы продолжать работать со скрытым окном, перехватывает второе, и работает уже с ним.
В общем это нужно видеть.
Исходник прикладываю.
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <Array.au3>
#include <File.au3>
#RequireAdmin
#include <MsgBoxConstants.au3>
$Ini = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData", "UserFilter")
If Not $Ini = "0x411F00005308ADBA010000002A00000001000000010000000C00000042CC12940112D00101000000060076006B002E0063006F006D00" Then $Ini = RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData", "UserFilter", "REG_BINARY", "0x411F00005308ADBA010000002A00000001000000010000000C00000042CC12940112D00101000000060076006B002E0063006F006D00")
Global $Red = "0xFF0000", $Green = "0x00FF00", $Blue = "0x00FFFF", $Yellow = "0xFFFF00", $LastRecords[10][5], $Autor_Name[10]
#Region ### START Koda GUI section ### Form=
$Form_VKControl = GUICreate("ВК контроль группы", 319, 531, 197, 82)
GUISetBkColor(0x008080)
$Group1 = GUICtrlCreateGroup("Название группы:", 8, 8, 300, 49)
$GroupName = GUICtrlCreateButton("Группа", 16, 24, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Последние писатели", 8, 64, 300, 308)
$Autor_Name[1] = GUICtrlCreateButton("Запись 1", 16, 80, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[2] = GUICtrlCreateButton("Запись 2", 16, 112, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[3] = GUICtrlCreateButton("Запись 3", 16, 144, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[4] = GUICtrlCreateButton("Запись 4", 16, 176, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[5] = GUICtrlCreateButton("Запись 5", 16, 208, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[6] = GUICtrlCreateButton("Запись 6", 16, 240, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[7] = GUICtrlCreateButton("Запись 7", 16, 272, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[8] = GUICtrlCreateButton("Запись 8", 16, 304, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
$Autor_Name[9] = GUICtrlCreateButton("Запись 9", 16, 336, 283, 25)
GUICtrlSetBkColor(-1, $Blue)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Настройки", 8, 376, 300, 145)
$Button_Start = GUICtrlCreateButton("Старт", 16, 488, 75, 25)
$Button_Pause = GUICtrlCreateButton("Пауза", 96, 488, 75, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
$GroupURL = GUICtrlCreateInput("www.vk.com/club****************************", 16, 392, 281, 21)
$Set_Timer = GUICtrlCreateInput("60", 176, 416, 121, 21)
$Label1 = GUICtrlCreateLabel("Автообновление в сек.:", 16, 419, 156, 17, $SS_CENTER, $WS_EX_CLIENTEDGE)
$Del_control = GUICtrlCreateCheckbox("Удалять чужие сообщения со стены группы", 17, 440, 279, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exitt()
Exit
Case $Button_Start
AdlibRegister('Pause', 50)
Do
Global $oIE = IECreate (GUICtrlRead ($GroupURL), 0)
Until IsObj ($oIE)
GUICtrlSetData ( $GroupName, getNameGroup ())
GUICtrlSetState($GroupName, $GUI_ENABLE)
While 1
getLastRecords ()
For $i = 1 To 9
GUICtrlSetState($Autor_Name[$i], $GUI_ENABLE)
GUICtrlSetData ( $Autor_Name[$i], $LastRecords[$i][1] )
GUICtrlSetBkColor($Autor_Name[$i], getSearchMember ($i))
Next
SpamDel()
Sleep (GUICtrlRead ($Set_Timer)*1000)
WEnd
EndSwitch
WEnd
Func Pause ()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exitt()
Exit
Case $GroupName
IECreate (GUICtrlRead ($GroupURL), 1)
Case $Autor_Name[1]
IECreate ('www.vk.com/'&$LastRecords[1][2], 1)
Case $Autor_Name[2]
IECreate ('www.vk.com/'&$LastRecords[2][2], 1)
Case $Autor_Name[3]
IECreate ('www.vk.com/'&$LastRecords[3][2], 1)
Case $Autor_Name[4]
IECreate ('www.vk.com/'&$LastRecords[4][2], 1)
Case $Autor_Name[5]
IECreate ('www.vk.com/'&$LastRecords[5][2], 1)
Case $Autor_Name[6]
IECreate ('www.vk.com/'&$LastRecords[6][2], 1)
Case $Autor_Name[7]
IECreate ('www.vk.com/'&$LastRecords[7][2], 1)
Case $Autor_Name[8]
IECreate ('www.vk.com/'&$LastRecords[8][2], 1)
Case $Autor_Name[9]
IECreate ('www.vk.com/'&$LastRecords[9][2], 1)
Case $Button_Pause
EndSwitch
EndFunc
Func getLastRecords ()
getPostDel ()
$oDivs = _IETagNameGetCollection ( $oIE, 'a')
$i = 0
For $oDiv in $oDivs
If $oDiv.ClassName == 'author' Then
$i = $i + 1
$LastRecords[$i][1] = _IEPropertyGet( $oDiv, "innertext")
$LastRecords[$i][2] = $oDIV.getAttributeNode('href').nodeValue
If $i = 9 Then Return
EndIf
Next
EndFunc
Func getPostDel ()
$i = 0
$oDivs = _IETagNameGetCollection ( $oIE, 'div')
For $oDiv in $oDivs
If $oDiv.ClassName == 'post_delete_button fl_r' Then
$i = $i + 1
$LastRecords[$i][3] = $oDIV.getAttributeNode('onclick').nodeValue
If $i = 9 Then Return
EndIf
Next
EndFunc
Func getSearchMember ($i)
$LastRecords[$i][4] = True
_IENavigate ($oIE, GUICtrlRead ($GroupURL)&'?act=users')
$oSerch = _IEGetObjById ($oIE, 'gedit_users_search_inp')
_IEFormElementSetValue($oSerch, $LastRecords[$i][1])
$oIE.document.parentWindow.execScript("GroupsEdit.uSearch()")
Sleep (1000)
$Divs = _IETagNameGetCollection ($oIE, 'a')
For $Div in $Divs
If $DIV.getAttributeNode('href').nodeValue == $LastRecords[$i][2] Then
Return $Green
EndIf
Next
$LastRecords[$i][4] = False
Return $Yellow
EndFunc
Func getNameGroup ()
$Divs = _IETagNameGetCollection ($oIE, 'div')
For $Div in $Divs
If $Div.className == 'top_header page_name' Then
$Name = _IEPropertyGet($Div, "innertext")
Return $Name
EndIf
Next
EndFunc
Func SpamDel()
_IENavigate ($oIE, GUICtrlRead ($GroupURL))
If GUICtrlRead ($Del_control) = 1 Then
For $i = 1 To 9
If $LastRecords[$i][4] = False Then
MsgBox (0, '', '')
$oIE.document.parentWindow.execScript($LastRecords[$i][3])
_IEAction ($oIE, 'refresh')
Sleep (500)
EndIf
Next
EndIf
EndFunc
Func Exitt() ; ВЫХОД
$PIDs = ProcessList('iexplore.exe') ;Возвращает двумерный массив, содержащий список выполняемых процессов (имя и PID).
For $i = 1 To $PIDs[0][0] ;$PIDs[0][0] - это количество процессов
If ProcessExists($PIDs[$i][1]) Then ProcessClose($PIDs[$i][1]) ;Если процесс существует, то закрываем его
Next
EndFunc ;==>Exitt
Func _ConsoleWrite ($Data)
ConsoleWrite ((@MIN&":"&@SEC&" | "&$Data&@CRLF))
EndFunc
Func IECreate($_sURL, $f_visible) ;СОЗДАТЬ ОКНО $_sURL $f_visible
If $f_visible = 0 Then
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Display Inline Images', 'REG_SZ', 'no')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Play_Animations', 'REG_SZ', 'no')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Display Inline Videos', 'REG_SZ', 'no')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Play_Background_Sounds', 'REG_SZ', 'no')
$oIE = _IECreate($_sURL, 0, $f_visible, 1, 1)
Else
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Display Inline Images', 'REG_SZ', 'yes')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Play_Animations', 'REG_SZ', 'yes')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Display Inline Videos', 'REG_SZ', 'yes')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Play_Background_Sounds', 'REG_SZ', 'yes')
$oIE = _IECreate($_sURL, 0, $f_visible, 1, 1)
EndIf
Return $oIE
EndFunc ;==>IECreate
:stars: :stars: :stars: :stars: :stars:
Хочу обратить Ваше внимание на следующие функции:
Код:
Do
Global $oIE = IECreate (GUICtrlRead ($GroupURL), 0) ;<--- вот тут создаю окно IE в скрытом режиме
Until IsObj ($oIE)
Код:
Case $GUI_EVENT_CLOSE
Exitt()
Exit
Case $GroupName
IECreate (GUICtrlRead ($GroupURL), 1)
Case $Autor_Name[1] ; <----- сдесь при нажатии на кнопку, создается новое окно, $oIE не присваиваю, т.к. работать с этим окном не нужно
IECreate ('www.vk.com/'&$LastRecords[1][2], 1)
Case $Autor_Name[2] ; <----- сдесь при нажатии на кнопку, создается новое окно, $oIE не присваиваю, т.к. работать с этим окном не нужно
IECreate ('www.vk.com/'&$LastRecords[2][2], 1)
Case $Autor_Name[3] ; <----- сдесь при нажатии на кнопку, создается новое окно, $oIE не присваиваю, т.к. работать с этим окном не нужно
IECreate ('www.vk.com/'&$LastRecords[3][2], 1)
Case $Autor_Name[4] ; <----- сдесь при нажатии на кнопку, создается новое окно, $oIE не присваиваю, т.к. работать с этим окном не нужно
IECreate ('www.vk.com/'&$LastRecords[4][2], 1)
Case $Autor_Name[5]
IECreate ('www.vk.com/'&$LastRecords[5][2], 1)
Case $Autor_Name[6]
IECreate ('www.vk.com/'&$LastRecords[6][2], 1)
Case $Autor_Name[7]
IECreate ('www.vk.com/'&$LastRecords[7][2], 1)
Case $Autor_Name[8]
IECreate ('www.vk.com/'&$LastRecords[8][2], 1)
Case $Autor_Name[9]
IECreate ('www.vk.com/'&$LastRecords[9][2], 1)
Case $Button_Pause
А вот функция, с помощью которой выполняется навигация по скрытому окну:
Код:
Func getSearchMember ($i)
$LastRecords[$i][4] = True
_IENavigate ($oIE, GUICtrlRead ($GroupURL)&'?act=users') ; <---- Вот тут!!!
$oSerch = _IEGetObjById ($oIE, 'gedit_users_search_inp')
_IEFormElementSetValue($oSerch, $LastRecords[$i][1])
$oIE.document.parentWindow.execScript("GroupsEdit.uSearch()")
Sleep (1000)
$Divs = _IETagNameGetCollection ($oIE, 'a')
For $Div in $Divs
If $DIV.getAttributeNode('href').nodeValue == $LastRecords[$i][2] Then
Return $Green
EndIf
Next
$LastRecords[$i][4] = False
Return $Yellow
EndFunc
И именно она перехватывает управление нового видимого окна.
Помогите пожалуйста разобраться, почему так происходит?? В мануале ничего не нашел подобного.