Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
schel4okпервой строчкой запускается сам Маткад и никакой настройки не производитсяпопробуй вместо Run() использовать ShellExecute() не для EXE, а для ярлыка (*.LNK), поищи его в папке Рабочего стола....
amel27
Свои предпочтения нужно обосновывать.
Они обосновываются тем, что я хотел создать библиотеку для _InetGet...(), а помещать в библиотеку единственный ресурс Adlib не очень то уж и хорошая идея, поэтому и писал, что возможно эта функция будет вызываться позже (из родительского скрипта в котором используется библиотека).
на самом деле >100 ровно на столько, сколько потребуется скрипту на выполнение команд после Sleep(100)
Согласен, но в моём случае, не думаю что команды TrayTip (хотя использую ProgressSet() ;) ), или String...() могут занять много времени....
кстати, множитель 0.9765625 как раз отвечает за перевод исходной величины Byte/ms в KByte/sec
Т.е это считается меркой соотношения между bytes/ms и kb/s? а для mb/m (просто интересно), нужно ещё раз умножать на это же значение? :)
Creat0R
Переделал последний вариант скрипта - добавил обработку ошибок и упростил использование параметров. Теперь он может использоваться для измерения не только скорости закачки, но и скорости прогресса любой величины (>0), например обработанных файлов, произведенных кликов мышки и т.д.
не думаю что команды TrayTip (хотя использую ProgressSet() ), или String...() могут занять много времениИмхо не стоит загадывать, особенно если включать функцию в библиотеку... и если вспомнить, что скрипт может стопориться даже без вызова Sleep(). ;)
это считается меркой соотношения между bytes/ms и kb/s? а для mb/m (просто интересно), нужно ещё раз умножать на это же значение?Byte/ms -> KByte/s : 1000/1024 = 0.9765625
KByte/s -> MByte/min : 60/1024 = 0.05859375
amel27
добавил обработку ошибок
Имхо, возвращаемое значение не должно быть -1 в подобной функции, чтобы это не отобразилось случайно в TrayTip (или любом другом “отображающем устройстве” :) ), мне кажется присваивать последовательно значения @error будет достаточно, а возвращать в таком случае 0.
Теперь он может использоваться для измерения не только скорости закачки, но и скорости прогресса любой величины (>0), например обработанных файлов, произведенных кликов мышки и т.д.
не совсем понял, а как это засикается скорость обработанных файлов, или что ещё более удивитеьнее (для меня), как это работает на “произведенных кликов мышки”? :shuffle:
И ещё такой вопрос: Функция для подсчёта скорости, в оригинале возвращает байты/мс, или байты/с ? если первое, то как поправить чтобы возвращались именно байты в секунду, это нужно для ещё одной функции подсчёта... функция подсчитывает приблизительно оставшиеся время до закачки (в секундах) :
;Функция возвращает приблизительно оставшееся время в секундах (за счёт вычесления из общего размера файла и деления на скорость скачивания).
Func _InetGetRemained($Bytes, $TotalBytesSize, $SpeedByBytes)
Local $RemainedSecs = ($TotalBytesSize - $Bytes) / $SpeedByBytes
If $RemainedSecs < 0 Then $RemainedSecs = 0
Return $RemainedSecs
EndFunc
Здравствуйте!
подскажите пожалуйста как получить файл с и-нета а затем его запустить(скачать и после того как он на компе запустить его)
делаю вот так:
InetGet("http://the-file.com/file.exe", "file.exe", 1, 1)
Sleep(30000)
Global $file = 'file.exe'
RunWait($file)
но мне почемуто кажется что функция Sleep(30000) только останавливает скрипт а сним и получение файла с и-нета, или я не прав?
приведите пример пожалуйста как правельно это сделать..
GTeam
как получить файл с и-нета а затем его запустить
Нужно поставить закачку не в фоновой режим, а чтобы функция возвращала по завершению закачки...
делаю вот так:
В этом случае закачка поставлена именно в фоновой режим, за это отвечает последний параметр.
Вот пример закачки и по завершению запуска закаченной программы (если она закачалась успешно):
;Обьявляем переменную для имени файла (желательно и весь путь)
Global $file = 'file.exe'
;Ставим закачку в ждущем режиме
$Ret = InetGet("http://the-file.com/file.exe", $file, 1, 0)
;Если удачно закачался файл, то запускаем его
If $Ret = 1 Then RunWait($file)
спасибо огромное, очень помог!
еще один вопрос , может ли AutoItSetOption("TrayIconHide", 1) повлиять как то на работу скрипта?
GTeam
может ли AutoItSetOption("TrayIconHide", 1) повлиять как то на работу скрипта?
В каком смысле?
оно влияет только на то, что иконка в трее не будет отображаться, это удобно если нужно в работе скрипта скрывать/показывать иконку в области уведомления (трей), если нужно чтобы иконка вовсе не показывалась (никогда), то в начале скрипта достаточно поставить директиву #NoTrayIcon, это кстати, в отличие от Opt("TrayIconHide", 1), позволяет не показывать иконку при запуске скрипта, т.е икона не появится на мгновение как это происходит при использовании Opt("TrayIconHide", 1) :).
Creat0RИмхо, возвращаемое значение не должно быть -1 в подобной функции, чтобы это не отобразилось случайно если проверять на ошибки, то случайностей не будет ;)
как это засикается скорость обработанных файлов#include <Constants.au3>
Global $ProcessCount, $ProcessLines=0
$pid = Run (@ComSpec & ' /C DIR /B /S *.*', 'C:\', @SW_HIDE, $STDOUT_CHILD)
_GetProgressSpeed ($ProcessCount, -1, 100)
While 1
Sleep(100)
$text = StdoutRead($pid)
If @error Then ExitLoop
$count = StringLen($text)-StringLen(StringStripCR($text))
$ProcessLines+= $count
$files = StringFormat('Processed %i files', $ProcessLines)
$speed = StringFormat('Speed: %i Files/Sec',_GetProgressSpeed($ProcessCount, $ProcessLines)*1000)
TrayTip('', $files & @CRLF & $speed, 10, 16)
ConsoleWrite ($text)
Wend
или что ещё более удивитеьнее (для меня), как это работает на “произведенных кликов мышки”?#include <GUIConstants.au3>
Global $ProcessCount, $ProcessClicks=0
Opt("GUIOnEventMode", 1)
GUICreate("My GUI")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_AddClick")
_GetProgressSpeed ($ProcessCount, -1, 50)
GUISetState (@SW_SHOW)
While 1
Sleep(100)
$clicks = StringFormat('Processed %i clicks', $ProcessClicks)
$speed = StringFormat('Speed: %.2f Clicks/Sec',_GetProgressSpeed($ProcessCount, $ProcessClicks)*1000)
TrayTip('', $clicks & @CRLF & $speed, 10, 16)
Wend
Func _AddClick()
$ProcessClicks+=1
EndFunc
Func _Quit()
Exit
EndFunc
Функция для подсчёта скорости, в оригинале возвращает байты/мс, или байты/с ?как и AutoIT - миллисекунды
как поправить чтобы возвращались именно байты в секунду, это нужно для ещё одной функции подсчёта... функция подсчитывает приблизительно оставшиеся время до закачки (в секундах)Func _InetGetRemained($Bytes, $TotalBytesSize, $SpeedByBytes)
Local $RemainedSecs = ($TotalBytesSize - $Bytes) / ($SpeedByBytes * 1000)
If $RemainedSecs < 0 Then $RemainedSecs = 0
Return $RemainedSecs
EndFunc
Creat0R. Спасибо за советы !
Есть еще один вопрос :
Как правильно организовать архивирование файлов Winrar_ом ?
Имеется Файл , полученный после работы функции FileOpenDialog, есть его массив-форма,обработанная определенным обазом.
Задача :архивировать выбранные и обработанные файлы
Попытка занести в окно Winrara требуемый путь к папке (имеющий и русские названия папок) выдают абракадабру
Поочередное переключение раскладок клавы не дает стабильного результата.
Возможно есть простой путь ?
gregaz
Попытка занести в окно Winrara требуемый путь к папке (имеющий и русские названия папок) выдают абракадабру
Поочередное переключение раскладок клавы не дает стабильного результата.
Возможно есть простой путь ?
Если в папке с программой WinRAR, есть консольный "Rar.exe", то можно сделать совсем просто...
;~ путь к консольной программе:
$WinRar="C:\Program Files\WinRAR\Rar.exe"
;~ Имя создаваемого архива:
$ArchiveName=' "C:\MyArchive.rar"'
;~ Добавляемые файлы:
$addFiles=' "C:\Fie1.txt" "c:\File2.txt"'
;~ ...или путь к текстовому файлу, который содержит список добавляемых файлов:
;~ $list=' "@C:\List.txt"'
;~ Задаём параметры:
$param=' a' & $ArchiveName & $addFiles
;~ или:
;~ $param=' a' & $ArchiveName & $list
Run ($WinRar & $param,"",1)
[Diamond,
Спасибо
Просто и здорово
А как ввести другие параметры архивирования :
скажем ПАРОЛЬ или ДОБАВИТЬ ИНФОРМАЦИЮ ДЛЯ ВОССТАНОВЛЕНИЯ ,?
gregaz
А как ввести другие параметры архивирования :
скажем ПАРОЛЬ или ДОБАВИТЬ ИНФОРМАЦИЮ ДЛЯ ВОССТАНОВЛЕНИЯ ,?$WinRar="C:\Program Files\WinRAR\Rar.exe"
$ArchiveName=' "C:\MyArchive.rar"'
$addFiles=' "C:\File1.txt" "C:\File2.txt"'
;~ Пароль с шифрованием имён файлов -hp
$password=' -hpgregaz'
;~ информация для восстановления -rr
$ResInfo=' -rr10%'
$param = ' a' & $ResInfo & $password & $ArchiveName & $addFiles
Run ($WinRar & $param,"",0)Если я буду продолжать в том же духе - то офтоп получается...
Там очень много всяких возможностей, проще будет изучить справку самостоятельно:
Run(@ComSpec & ' /k "C:\Program Files\WinRAR\Rar.exe" /?',"",3)
Да, насчёт информации для восстановления... я не уверен, нужен ли знак процента на конце.
Подскажите кто-нибудь плз, когда создается vpn подключение, то в зависимости от того есть уже подключения в системе или нет, то выскакивает окно "Набирать номер для предварительного подключения. Как его отследить?
Такая конструкция обрабатывается неверно, в свойствах окна этот текст есть как скрытый... Как сделать чтобы WinWaitActive смотрел только на видимый текст?
if WinWaitActive('Мастер новых подключений', 'Выберите, надо ли автоматически подключаться к Интернету','5' )==1 Then
Send ( '{UP}{ENTER}' ) EndIf
Получается что с этой проверкой vpn подключение создается только если в системе уже какое-то подключение есть..
eNcub
Как сделать чтобы WinWaitActive смотрел только на видимый текст?
Вообще-то, WinWaitActive() по умолчанию работает только с видимым текстом, а вот если нужно обрабатывать и тот и другой текст, то потребуется изменить умолчание:
Opt("WinDetectHiddenText",1)
0 = не сопоставлять со скрытым текстом окна (по умолчанию)
1 = сопоставлять в том числе и со скрытым текстом окна
amel27
если проверять на ошибки, то случайностей не будет
Это понятно, но это лишний код, имхо.. ладно это ерунда ;)
Спасибо за примеры, всё стало намного яснее :)
Функция, которая позволяет замостить фон GUI текстурой или небольшими изображениями;~ Использование:
;~ Tiled_BgImage("Путь к изображению с текстурой","ширина изображения", "высота изображения")
Func Tiled_BgImage($ImagePath,$width,$height)
$yTile=Round(@DesktopHeight/$height)
$xTile=Round(@DesktopWidth/$width)
For $y=0 To $yTile
For $x=0 To $xTile
GUICtrlCreatePic($ImagePath,$width*$x,$height*$y,$width,$height)
GUICtrlSetResizing(-1,802) ; $GUI_DOCKALL
GUICtrlSetState(-1,128) ; $GUI_DISABLE
Next
Next
EndFunc
Спасибо Diamond за помощь по Winrarу
Действительно есть,оказывается <Руководство по консольной версии RAR > - там все прописано .
Можно пару вопросов на другую тему ?
1.Как ввести данные в Интернет страницу ( типа Логин,пароль )или текст поиска (для Google)
2.Как найти на Интернет странице нужный текст (Ссылку и .т.п.)
Вопрос поиска текстового фрагмента в файле рассматривался здесь на форуме ,а как это сделать на ВЕБ- странице ?
gregaz
Как ввести данные в Интернет страницу
Мне кажется нужно смотреть в сторону функции _IE... (в справке).
Как найти на Интернет странице нужный текст
Примерно так:
#include <INet.au3>
$WebPage = "http://www.autoitscript.com"
$WhatToFind = "autoit"
$Source = _INetGetSource($WebPage)
$FindPos = StringInStr($Source, $WhatToFind)
If $FindPos <> 0 Then MsgBox(64, "", "Текст <" & $WhatToFind & "> найден в позиции: " & $FindPos)
Можно также в файл сохранить иточник ($Source), и уже делать поиск по файлу (с учотом регистра, не латинских букв и т.д).
привет всем =))
если честно сижу ещё в офисе, после напрженного рабочего дня, глаза "в кучку" - и даже не могу найти кнопку "создать новую тему"
в общем если не влом "киньте" ею в меня ))
а вот сам вопрос:
дле элемента GUICtrlCreateList очень хорошо работае функция GUICtrlSetOnEvent
т.е. если кликнуть по списку GUICtrlCreateList мышкой, то тут же будет вызвана функция, прописанная в GUICtrlSetOnEvent.
а вот для элемента GUICtrlCreateListView функция GUICtrlSetOnEvent - не работает, как быть?
добиться я хочу все того же: т.е. когда кликаю мышкой по таблице GUICtrlCreateListView, мне необходимо, что бы
на это сыбите таблица "реагировала" и вызывала мою функцию.
и как то же самое произвести для элимента GUICtrlCreateTab .
пользуюсь autoIT v3.2.4.0
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.