|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36561 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать логин и пароль изменены , по соображениями безопасности
|
Отправлено: 16:39, 12-09-2008 | #881 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать samara_andrey, я не особенно вдавался в суть скрипта (ошибок там не искал), но ето простой опрос на наличие новой версии программы, Вы говорили что видите как скрипт работает в цикле, или Вы не дали весь код проги или здесь просто нету цикла, есть условие которое выполняется-или не выполняется 1 раз)
а если при загрузке системы Вы сидите не под НАТом, то инет у вас включается на автоматически, следовательно секунд 30-40 после загрузки системы у Вас интернета нету, условие в ето время пытается получить файл с фтп, получает ошибку - нету инета и заканчивает выполнять программу, поскольку цикл опроса не организован Ниже скрипт с использованием цикла Opt ("TrayIconHide", 1) Sleep(5000) While 1 ; я использую такой оборот, чтобы ждать появление соединения с интернетом, только когда оно появится - продолжить выполнение скрипта Do $size=InetGetSize("http://xxxxxx.html") ; - файл, имеющий размер больше 1 Байта, если инета нету - размер файла не может быть получен и отдаётся 0 и мы вновь опрашиваем его размер Sleep(500) Until $size > 1 InetGet("ftp://0000:0000000000@ftp.narod.ru/ini.ini", "ini.ini", 1) $file = FileOpen("ini.ini", 0) $chars = FileRead($file) $file1 = FileOpen("dataini.ini", 0) $chars1 = FileRead($file1) if $chars <= $chars1 Then Run ("installupdate.exe", "", @SW_HIDE) Run ("rec.exe", "", @SW_HIDE) Sleep(30000); pause 0.5 min FileDelete("installupdate.exe") FileClose($file) FileDelete("ini.ini") Exit Else FileClose($file) FileClose($file1) Sleep(5000) ; pause 5 sec InetGet("ftp://0000:0000000000@ftp.narod.ru/rec.jpg", "rec.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec2.jpg", "rec2.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec3.jpg", "rec3.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec4.jpg", "rec4.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec5.jpg", "rec5.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec6.jpg", "rec6.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec7.jpg", "rec7.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec8.jpg", "rec8.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec9.jpg", "rec9.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/rec10.jpg", "rec10.jpg", 1) InetGet("ftp://0000:0000000000@ftp.narod.ru/installupdate.exe", "installupdate.exe", 1) Sleep(5000);pause 5 sec Run ("installupdate.exe", "", @SW_HIDE) Run ("rec.exe", "", @SW_HIDE) Sleep(30000); pause 0.5 min FileDelete("installupdate.exe") FileDelete("ini.ini") $file1 = FileOpen("dataini.ini", 2) FileWrite($file1, $chars) FileClose($file1) EndIf ;Здесь ставим время ожидания, чтобы не опрашивать сервер на обновление каждые 40-50 секунд, будем, например опрашивать каждые 5 минут Sleep(300000) ; 5*60 000 = 300 000 - время ожидания 5 минут Wend Также рекомендую Вам убрать строку Opt ("TrayIconHide", 1) (если Вы её уберёте, то иконка скрипта при выполнении будет видна в трее) и добавить AutoItSetOption("TrayIconDebug", 1) - очень полезно для отладки скрипта, при выполнении скрипта при наведении мышки на иконку в трее - Вы будете видеть номер строки кода, выполняемой в данный момент скриптом и сможете понять где ошибка, также можно добавлять всюду выдачу Сообщений с описанием на какой строке скрипт находится и что щас будет делать P.S. Скажите, пожалуйста, как окрашивать код в цвета Автоита при посте на форуме? ![]() |
Последний раз редактировалось Рысь, 12-09-2008 в 17:24. Причина: добавление кода Отправлено: 17:17, 12-09-2008 | #882 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата samara_andrey:
Это можно посмотреть в реестре: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
|
------- Отправлено: 17:19, 12-09-2008 | #883 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать да вы правы я дал не весь код. цикл там есть и увеличивать время не надо, опрос продолжается все время циклически независимо от того получен результат или нет.
сама фишка просто в том, что он не качает с фтп если запускается через автозагрузку. в реестре он записан верно без лишних параметров(это на сто пудов). это что-то именно с вистой связано, на хп этот код работает в таком же виде - и все ровно. кстати пробовал скачать через http вмеcто ftp, получается такая же петрушка. как красить цвета, я если честно этой целью не задавался)))))))) и без этого хватает гемора когда что-то не получается))))))) ваше решение ожидания инета тоже очень интересное, спасибо, пополню свой багаж))). я обычно использую ping для определения инета. ладно, спасибо за потраченное время, будем думать))))) |
Отправлено: 17:28, 12-09-2008 | #884 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Creat0R
------------------------------------------------------------------------------- Цитата samara_andrey: в чем разница между запуском через автозагрузку и просто кликом » Возможно через автозагрузку она запускается с параметрами? Это можно посмотреть в реестре: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ВОТ! "в чем разница между запуском через автозагрузку и просто кликом " - это и стало главным вопросом на который мы пока не нашли ответа!!! по сути дела разницы никакой,НО! когда запускаешь ручками с помощью клика - работает!, а когда через автозагрузку - хоть ты тресни!!! напомню что учетная запись одна и никаких параметров в реестре лишних нет при запуске. ВОТ В ЧЕМ ВОПРОС! а в хп работает отлично хоть так хоть эдак)))))))))))))) короче с вистой всегда был и будет кажется гемор, аж страшно подумать что придет ей на смену)))))))))))) |
Отправлено: 18:15, 12-09-2008 | #885 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать вот кстати народ вам живой пример для размышления!
работает просто но результат аналогичный предыдущему скрипту! 1.возьмите этот код и скомпильте *.exe , слюбой картинкой 800*600 2.под вистой запустите exe руками, посмотрите на результат 3.потом пропишите exe в автозагрузку, перегрузитесь и посмотрите на результат теперь! у кого все получилось , то в первом варианте картинка есть, а во втором есть только окно без картинки! #include <GUIConstants.au3> GUICreate("picture",800,600,-1,-1) ; will create a dialog box that when displayed is centered GUISetBkColor (0xE0FFFF) $n=GUICtrlCreatePic("xp.jpg",1,1, 800,600) GUISetState () ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop Wend |
Отправлено: 18:47, 12-09-2008 | #886 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата samara_andrey:
Чтобы найти решение, нужно добавить проверки на ошибочность, вот так: #NoTrayIcon Sleep(5000) $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/ini.ini", "ini.ini", 1) If Not $iRet Then _ShowError_Proc(1, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/ini.ini", "ini.ini", 1)') $file = FileOpen("ini.ini", 0) If $file = -1 Then _ShowError_Proc(2, '$file = FileOpen("ini.ini", 0)') $chars = FileRead($file) $file1 = FileOpen("dataini.ini", 0) If $file1 = -1 Then _ShowError_Proc(3, '$file1 = FileOpen("dataini.ini", 0)') $chars1 = FileRead($file1) If $chars <= $chars1 Then Run("installupdate.exe", "", @SW_HIDE) If @error Then _ShowError_Proc(4, 'Run("installupdate.exe", "", @SW_HIDE)') Run("rec.exe", "", @SW_HIDE) If @error Then _ShowError_Proc(5, 'Run("rec.exe", "", @SW_HIDE)') Sleep(30000); pause 0.5 min FileDelete("installupdate.exe") FileClose($file) FileDelete("ini.ini") Exit Else FileClose($file) FileClose($file1) Sleep(5000) ; pause 5 sec $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec.jpg", "rec.jpg", 1) If Not $iRet Then _ShowError_Proc(6, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec.jpg", "rec.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec2.jpg", "rec2.jpg", 1) If Not $iRet Then _ShowError_Proc(7, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec2.jpg", "rec2.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec3.jpg", "rec3.jpg", 1) If Not $iRet Then _ShowError_Proc(8, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec3.jpg", "rec3.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec4.jpg", "rec4.jpg", 1) If Not $iRet Then _ShowError_Proc(9, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec4.jpg", "rec4.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec5.jpg", "rec5.jpg", 1) If Not $iRet Then _ShowError_Proc(10, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec5.jpg", "rec5.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec6.jpg", "rec6.jpg", 1) If Not $iRet Then _ShowError_Proc(11, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec6.jpg", "rec6.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec7.jpg", "rec7.jpg", 1) If Not $iRet Then _ShowError_Proc(12, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec7.jpg", "rec7.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec8.jpg", "rec8.jpg", 1) If Not $iRet Then _ShowError_Proc(13, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec8.jpg", "rec8.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec9.jpg", "rec9.jpg", 1) If Not $iRet Then _ShowError_Proc(14, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec9.jpg", "rec9.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/rec10.jpg", "rec10.jpg", 1) If Not $iRet Then _ShowError_Proc(15, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/rec10.jpg", "rec10.jpg", 1)') $iRet = InetGet("ftp://0000:0000000000@ftp.narod.ru/installupdate.exe", "installupdate.exe", 1) If Not $iRet Then _ShowError_Proc(16, 'InetGet("ftp://0000:0000000000@ftp.narod.ru/installupdate.exe", "installupdate.exe", 1)') Sleep(5000);pause 5 sec Run("installupdate.exe", "", @SW_HIDE) If @error Then _ShowError_Proc(17, 'Run("installupdate.exe", "", @SW_HIDE)') Run("rec.exe", "", @SW_HIDE) If @error Then _ShowError_Proc(18, 'Run("rec.exe", "", @SW_HIDE)') Sleep(30000); pause 0.5 min FileDelete("installupdate.exe") FileDelete("ini.ini") $file1 = FileOpen("dataini.ini", 2) If $file1 = -1 Then _ShowError_Proc(19, '$file1 = FileOpen("dataini.ini", 2)') FileWrite($file1, $chars) FileClose($file1) EndIf Func _ShowError_Proc($iError, $sErrMsg) MsgBox(262144+16, "MyApp - Error", StringFormat("Error Number: %i\n\nError Line:\n%s\n\nOK ===> EXIT", $iError, $sErrMsg)) Exit EndFunc Цитата samara_andrey:
![]() ![]() |
||
------- Отправлено: 18:54, 12-09-2008 | #887 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вдохновлённый идеей из одной темы на оф. форуме, сделал UDF _AutoItErrorHandler - Перехватывает критичные сообщения об ошибках и выводит самопальный диалог-отладчик, хотя отлаживать на данный момент конечно нереально, но можно к примеру посмотреть сообщение ошибки, перезапустить программу, отправить отчёт об ошибке (для этой части нужно ещё кусок кода дописать, вообще то сам процесс отправки
![]() Этот UDF это всего лишь демонстрация того что можно сделать, диалог естественно можно изменить, функции убрать/добавить и т.д. Вот скриншот: ![]() UDF прикрепил к сообщению. В архиве две версии, одна с использованием StdOut, она более надёжнее, но проблема в том что скрипт не работает в режиме CUI в этой версии. Вторая версия не использует StdOut, она ждёт появления стандартного окна об ошибке от AutoIt'а, быстро(!) (почти мгновенно) закрывает его, и выводит своё окно. P.S Есть один минус конечно (как всегда с хорошими идеями ![]() |
------- Отправлено: 02:11, 13-09-2008 | #888 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать samara_andrey
Попробуй вставить в начало скрипта задержку на несколько минут (столько, сколько по твоему мнению нужно, что бы появилось подключение к интернету) и если проблема не исчезнет, значит дело в самой автозагрузке, а не в скрипте. Для проверки можно добавить в автозагрузку, ну скажем Оперу с указанием стартовать домашнюю страницу и аналогично отслеживать активность. Creat0R Спасибо за UDF ![]() lAGRESSORl Цитата:
Цитата:
![]() Цитата:
Цитата:
Цитата:
Цитата:
![]() |
||||||
Отправлено: 09:24, 13-09-2008 | #889 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать samara_andrey
Цитата:
lAGRESSORl на кой ты клонируешь посты?.. сказал же про RDP - он тебе скорее всего не нужен и используй для подключения PSExec, по поводу всего остального вот стартовый пример, конкретные вопросы (после обращения к справке и поиска в форуме) можешь задавать сюда ![]() #include <ScreenCapture.au3> $ProgTitle = "Диспетчер задач Windows" ; Имя титульного окна программы $ProgPath = "C:\WINDOWS\System32\TaskMgr.exe" ; Полное имя программы $ProgHome = "C:\WINDOWS\System32" ; Каталог запуска программы $ImagePath = @TempDir ; Папка для сохранения скриншота $ImageFile = $ImagePath & "\~Screen.jpg" ; Временное имя файла скриншота If FileExists($ImageFile) Then FileDelete($ImageFile) ; Если файл уже есть, то удаляем его ; Если программа еще не запущена, то запускаем If Not(WinExists($ProgTitle)) Then Run($ProgPath, $ProgHome, @SW_MAXIMIZE) ; Ожидание инициализации программы WinWait($ProgTitle) ; Ожидание окна Sleep(3000) ; Пауза 3 секунды $hWnd = WinGetHandle($ProgTitle) ; Получаем описатель окна WinActivate($hWnd) ; Делаем окно текущим ; Сохранение скриншота в файле $i = _ScreenCapture_CaptureWnd ($ImageFile, $hWnd) ; Сохранение под временным именем $FileNewName = $ImagePath & "\" & FileGetTime($ImageFile, 0, 1) & ".jpg" ; Новое имя по дате/времени FileMove($ImageFile, $FileNewName) ; Переименование ;WinClose($ProgTitle) ; Тут можно закрыть программу |
|
Отправлено: 11:35, 14-09-2008 | #890 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|