Что нового

помогите автоматизировать процесс в гугл хром портабл

uritalex

Новичок
Сообщения
197
Репутация
3
Версия AutoIt: 3.

Описание:
Добрый вечер :smile: Сразу скажу что в данной среде и программе я полный ноль :( но вот все же вопрошаю :smile:
Есть такой сайт как pumpyt.com данный сайт продвигает видео на ютубе. Для того нужно скачать хром с расширением этого сайта вот это yadi.sk/d/q4OYGlMkcrh8G . с недавних пор данное расширение необходимо перезапускать через 12- 24 часа. для запска приложения нужно запустить батник, а когда загрузится хром кликнуть на иконке насоса вверху справа. без клика программа не запустится :(
подскажите можно ли сделать так:
открыть пампит.бат
дождаться загрузки
клик по иконке
свернуть окно
пауза (перерыв) 12 или18 часов
закрыть хром портабл
и заново (т.е. сделать циклом)
Ну и конечно же при возможности сделать это максимально незаметно для пользователя. там что мышка не прыгала и пр.
И не смейтесь в начале я предупредил что я полный 0 :'(
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Мммм :smile: видя активность по моему вопросу :smile: стал сам по тихоньку изучать скрипты.
Сильно не смеятся, как уже говорил я полный 0 но вод что я сам прикрутил :smile: :
Код:
Run("PumpYT without sound.bat")
$handle = WinGetHandle("Расширения - Google Chrome", "Расширения")
WinWaitActive("Расширения - Google Chrome", "Расширения")
Sleep(3000)
MouseClick("left", 1311, 63)

В принципе то окно запускается но вод как его уникальным сделать да в цикл поставить я не шарю :( и еще как можно сделать нажатие незаметным для пользователя? а то мышка прыгает :(
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Чтобы мышка не прыгала используй
Код:
ControlClick

Чтобы узнать как она работает щёлкни мышкой команду
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
edyapd сказал(а):
Чтобы мышка не прыгала используй
Код:
ControlClick

Чтобы узнать как она работает щёлкни мышкой команду
Функция оч интересная но та кнопочка что нужно нажать не имеет опознавателей :( если пользуетесь гугл хромом попробуйте нажать на значек расширения (что возле адресной строки) по крайней мере мне эту функцию к такой кныпочке привязать не получилось :(
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
вроде как чуток разобрался но вот вопрос как сделать что бы при закрытии скрипта (через трей) закрывалась программа которую этот скрипт открыл?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
uritalex [?]
но вот вопрос как сделать что бы при закрытии скрипта (через трей) закрывалась программа которую этот скрипт открыл?
Код:
OnAutoItExitRegister("_CloseWindow")
Func _CloseWindow()
    ;WinClose("Google Chrome"); здесь код для закрытия окна
EndFunc
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
И еще пару вопросов :smile: вот код что у меня сейчас в работе
Код:
#include "UIAutomate.au3"
While 1
Opt("WinTitleMatchMode", 2)
Run("GoogleChromePortable\GoogleChromePortable.exe --force-renderer-accessibility --disk-cache-dir=custom_cache --disk-cache-size=104857600 --media-cache-size=104857600 --extensions-update-frequency=600 --mute-audio --disable-geolocation")
$hWnd = WinWaitActive("Расширения - Google Chrome", "Расширения")
If Not $hWnd Then Exit
$oParent = _UIA_GetElementFromHandle($hWnd)
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "PumpYT application")
Sleep(1000)
_UIA_ElementMouseClick($oElement)
Sleep(1000)
$handle = WinGetHandle("[ACTIVE]")
Sleep(100)
WinSetState($handle, "", @SW_MINIMIZE)
Sleep(100000)
$hnd = WinWait($handle, "", 5)
If Not $hnd Then Exit
WinClose($handle)
Sleep(5000)
WEnd

Вроде работает нормально но иногда функция
Код:
_UIA_ElementMouseClick($oElement)

не срабатывает и окно висит до завершения цикла :( как это можно исправить?
и еще :smile: каким образом можно включить работу функции
Код:
$hnd = WinWait($handle, "", 5)
If Not $hnd Then Exit

в период сна скрипта т.е. при остановке скрипта на 5 часов там где
Код:
Sleep(100000)
выше указанная функция опрашивала на наличие окна каждые 5 мин?
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
uritalex
Попробуйте вариант с горячими клавишами. При запуске на странице есть ссылка "Быстрые клавиши". Нажимаете, вводите сочетание (например, Alt+4), подтверждаете.
Код:
While 1
  Run("GoogleChromePortable\GoogleChromePortable.exe --force-renderer-accessibility --disk-cache-dir=custom_cache --disk-cache-size=104857600 --media-cache-size=104857600 --extensions-update-frequency=600 --mute-audio --disable-geolocation")
  $hWnd = WinWaitActive("Расширения - Google Chrome", "Расширения", 5)
  If Not $hWnd Then Exit
  Sleep(1000)
  ControlSend($hWnd, "", "Chrome_RenderWidgetHostHWND1", "!4") ; Alt+4
  Sleep(1000)
  WinSetState($hWnd, "", @SW_MINIMIZE)

  ; проверка наличия окна 10 раз через 5 секунд
  For $i = 0 To 9
    Sleep(5000)
    If Not WinExists($hWnd) Then Exit
  Next ; итого 50 секунд

  WinClose($hWnd)
  Sleep(3000)
WEnd
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Благодарю вариант с гор клавишами убил :smile: и цикл взял в разработку :smile: Ну и надеюсь последний вопрос как запретить выполнение скрипта если одна копия уже выполняется?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
uritalex сказал(а):
вопрос как запретить выполнение скрипта если одна копия уже выполняется?
Пользуйтесь иногда поиском, параллельно можно найти много интересных вещей.
Самый простой способ, в начале скрипта вставить проверку на поиск процесса по названию. Если существует, то выполнить определённое действие и/или завершить работу.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
uritalex [?]
как запретить выполнение скрипта если одна копия уже выполняется?
Или так.
Код:
If WinExists('[TITLE:{EC7E0-AEC-AB-CCDD}; CLASS:AutoIt v3]') Then Exit
AutoItWinSetTitle('{EC7E0-AEC-AB-CCDD}')
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Спасибо всем за помощь :smile: Справедливое замечание по поводу поиска но что то с поиском у меня напряг в 90 проц выдает не информативный запрос :( видно еще терминологию плохо знаю :'(
Такой вопрос чтоб тем не плодить темы (и он относится к данной теме) как к примеру имея определенный скрипт задать ему рандомное выполнение? т.е. к примеру тут на форуме нашел скрипт пропуска рекламы на ютубе как сделать так чтобы он один раз срабатывал и 1-3 раза не срабатывал и наоборот либо просто рандомно включался и выключался?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
uritalex [?]
задать ему рандомное выполнение?
Например, так.
Код:
HotKeySet('{Esc}', '_Exit')
AdlibRegister('_MyFunc', 1000)

While Sleep(100)
WEnd

Func _MyFunc()
	If Random(0, 1, 1) Then
		ConsoleWrite('Func not work' & @LF)
		Return
	EndIf
;~ 	что-то делаем
	ConsoleWrite('Func work' & @LF)
EndFunc   ;==>_MyFunc

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Или так.
Код:
Global $iTimer = TimerInit();можно убрать

HotKeySet('{Esc}', '_Exit')
AdlibRegister('_MyFunc', Random(1000, 8000, 1))

While Sleep(100)
WEnd

Func _MyFunc()
	ConsoleWrite(TimerDiff($iTimer) & @LF);можно убрать
	AdlibRegister('_MyFunc', Random(1000, 8000, 1))
	$iTimer = TimerInit();можно убрать
	ConsoleWrite('Func work' & @LF)
EndFunc   ;==>_MyFunc

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Еще раз большое спасибо всем за помощь :smile: В процессе эксплуатации возник вопрос: после прохождения около 5-10 циклов работа прекращается, скрипт висит но ничего не делает :( что может быть ?
 

Ksaan

Знающий
Сообщения
207
Репутация
15
Я в таких случаях бывает пользуюсь вот этим
Код:
Opt ( "TrayIconDebug" , 0 ) ;0=не
показать отладку, 1=показать отладку
И смотрю в трее где где мы висим.
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Прошу прощения за беспокойство но есть еще один вопрос :smile: Пытался прилипить свой скрипт не к хром портабл, а к Хромиуму но возникла проблема :( не могу отправить в окно Хромиума сочитание alt+4 вод хоть убейте не идет и все :( кто работал с Хромиумом может чего подскажете :smile: пробовал алгоритм как на первой странице этой темы, так и с использованием добычи элемента через функции UIAutomate.au3
 
Верх