Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Creat0R,
Спасибо на руборде мне и ответили
Creat0R
Странно, а чем отличается "-" от "/" ? »упс, в скрипте была ошибка - в строках экранирования спецсимволов :blush2:
А что если придерживаться условию, что все параметры будут иметь какой-то один разделитель? »на коде это не отразится, хотя надежности прибавит - в параметре нужно передать только один символ
$sParPrefix при этом равен "-". Но опять же, имя файл в таком случае обрубается »изменил поиск следующего параметра по комбинации "пробел+префикс+символ"... НО если "-" будет без следующего пробела, то текст опять "обрубится" - в этом случае слово после "-" будет абсолютно неотличимо от параметра, единственный выход - брать этот текст в кавычки, заметь - это ограничение заложено тобой в постановку задачи ;)
Теперь что получается, нужно почти при каждом использовании RegExp, применять метод отмены спец. символов (\Q...\E)? »
это я для примера, в твоем случае это лишнее (в имени параметра спецсимволов "\" не бывает), \Q...\E можно тоже убрать
If $CmdLine[0] = 0 Then $CmdLineRaw = '-Param=1 -XXX -File=C:\Program Files\Some App\File - Name.txt -URL=http://google.com'
MsgBox(64, "", _
"Param: "& @TAB & _GetCmdLine($CmdLineRaw, "Param","-","=") & @LF & _
"XXX: " & @TAB & _GetCmdLine($CmdLineRaw, "XXX", "-","=") & @LF & _
"YYY: " & @TAB & _GetCmdLine($CmdLineRaw, "YYY", "-","=") & @LF & _
"URL: " & @TAB & _GetCmdLine($CmdLineRaw, "URL", "-","=") & @LF & _
"File: " & @TAB & _GetCmdLine($CmdLineRaw, "File", "-","="))
Func _GetCmdLine($sCmdLine, $sArg, $sPar="/", $sVal="=:")
$sPar = "["& StringRegExpReplace ($sPar, "([-^\\])", "\\\1") & "]"
$sVal = "["& StringRegExpReplace ($sVal, "([-^\\])", "\\\1") &" ]"
$sArg = "\Q"& $sArg &"\E"
Local $sRegExp = '(?i)^(?:|.*?\s)'&$sPar&$sArg&$sVal&'+(?:$|'&$sPar&'|((?:"[^"]*"|[^"])+?)(?:$|\s'&$sPar&'\w)).*'
Local $sRetCmd = StringRegExpReplace($sCmdLine, $sRegExp, '\1')
If @extended Then Return $sRetCmd
Return SetError(1, 0, "=NOT FOUND=")
EndFunc
Babullika
03-12-2008, 11:59
здраствуйте
подскажите как через autoit получить мак адресс
как через autoit получить мак адресс »
уже было: http://forum.oszone.net/post-728888-69.html
Babullika
03-12-2008, 12:38
В том коде у меня вылетает ошибка error : Variable must be of type 'object'
И гетмак.ехе тж почемуто выдает ошибку (
Мне необходимо присвоить $mac = адрес
Есть еще какие-нибудь алтернативные варианты ?
Мне необходимо присвоить $mac = адрес »
$arr = _NetAdapterGetProp()
$mac = $arr[0][2]
MsgBox(0, "MAC адрес", $mac)
Есть такая хрень для обновления антивирусных баз Symantec - называется SARC Intelligent Updater, друзья, помогите сделать AutoIt скрипт для этого "чуда" ...
Я сам пытался, но последнее окно (уже после обновления баз) никак не удается отловить и нажать там кнопочку "ОК", а это ооочень нужно!
Спасибо!
DobroeZlo
04-12-2008, 18:26
Всем привет. Как получить имя функции из которой вызывается команда
amel27,
изменил поиск следующего параметра по комбинации "пробел+префикс+символ" »
Супер, так вроде работает как и задумывалось :up .
[hr]
morres, DobroeZlo,
Неужели вы серъёзно ожидаете получить помощь на основе того что вы запостили? Этого явно недостаточно для задачи.
DobroeZlo
05-12-2008, 09:37
Creat0R,
Я имею в ввиду следующее:
есть например функция
Func Some()
.......
MsgBox(0, "FuncName", "здесь должно быть имя функции Some")
EndFunc
Есть какая нибудь функция для определения имени ?
Спасибо!
D_Master
05-12-2008, 12:01
Помогите пожалуйста избавиться от иконки в трее
Добавляю код:
AutoItSetOption("TrayIconHide", 0)
AutoItSetOption("TrayIconDebug", 0)
Всё равно иконка показывается... :(
Maza Faka
05-12-2008, 12:29
D_Master
#NoTrayIcon
CrazyNNM
05-12-2008, 12:55
опять обращусь с тем же вопросом:
почему-то не пашет у меня функция
_IEFormSubmit($oForm)
название кнопки я указал правльно, как в дебагере указано....
зато при посылке "Enter", подтверждение происходит.....
че я не так делаю??
код
#include <IE.au3>
$sURL = "http://192.168.1.1/"
$oIE = _IECreate($sURL)
$oName = _IEGetObjByName($oIE, "username")
$oPass = _IEGetObjByName($oIE, "password")
$oForm = _IEFormGetObjByName($oIE, "login")
_IEFormElementSetValue($oName, "admin")
_IEFormElementSetValue($oPass, "admin")
_IEFormSubmit($oForm)
выдает ошибку на форм сабмит
--> IE.au3 V2.4-0 Warning from function _IEFormGetObjByName, $_IEStatus_NoMatch
--> IE.au3 V2.4-0 Error from function _IEFormSubmit, $_IEStatus_InvalidDataType
видимо, просто не может найти имя
еще вопрос, как мона нажать кнопку в окне ие, если нет имени?.....
во че выдает дебагер
<INPUT onclick="gotolocation('connection0')" type=image src="../html/images/connection1.jpg" target="_self">
и все....
DobroeZlo, Есть какая нибудь функция для определения имени ?
Нет.
P.S
Уже не помню для чего, но мне как то тоже подобное нужно было, единственное что пришло на ум, так это пропарсить весь скрипт другим, внешним скриптом, добавив в начало скрипта глобальную переменную (к примеру $sCurrent_FuncName), и в начало каждой функции присвоить этой переменной значение имени функции. Но вопрос в том, насколько оно нужно?
Неужели вы серъёзно ожидаете получить помощь на основе того что вы запостили? »
Не очень понял чего именно недостаточно, ну если хотите подробностей, то пожалуйста...
Не размещал тут свой код, чтобы не забивать голову тому, кто попробует...
Сам скрипт:
Run("\\srv\soft\Symantec\updat32.exe")
WinWait("SARC Intelligent Updater","&Да")
WinActivate("SARC Intelligent Updater","&Да")
If WinActive("SARC Intelligent Updater","&Да") Then
ControlClick("SARC Intelligent Updater","&Да","[ID:6]")
EndIf
WinWait("SARC Intelligent Updater","OK")
WinActivate("SARC Intelligent Updater","OK")
If WinActive("SARC Intelligent Updater","OK") Then
ControlClick("SARC Intelligent Updater","ОК","[ID:2]")
EndIf
Exit
SARC Intellegent Updater (http://www.symantec.com/business/security_response/definitions/download/detail.jsp?gid=n95), собственно, можно скачать с сайта Symantec! Меня интересует версия под Symantec AntiVirus 10.2 Corporate Edition Client.
Глюк начинается на строке WinWait("SARC Intelligent Updater","OK") т.к. это окно просто не удается отловить, пробовал поразному, но моих познаний в AutoIt, видимо, недостаточно...
morres, Не очень понял чего именно недостаточно, ну если хотите подробностей, то пожалуйста... »
Всегда нужны подробности, читать мысли (через интернет тем более) ещё никто не научился.
Не размещал тут свой код, чтобы не забивать голову тому, кто попробует »
Попробует что? нет логики в этом, наоборот, нужно разместиь тестовый скрипт чтобы можно было что-то попробовать ;)
Глюк начинается на строке WinWait("SARC Intelligent Updater","OK") т.к. это окно просто не удается отловить »
Что имеется в виду под «Отловить»? Скрипт останавливается на этой строчке, или проходит дальше не замечая окна (не нажимая кнопки)?
Если второе, то видимо проблема в том, что окно создаётся немного раньше, но оно просто скрыто, тут можно попробовать ждать видимости окна:
_WinWaitVisible("SARC Intelligent Updater", "OK")
Func _WinWaitVisible($sTitle, $sText, $iTime=0)
Local $iTimer = -1
If $iTime > 0 Then $iTimer = TimerInit()
While Not BitAND(WinGetState($sTitle, $sText), 2)
Sleep(10)
If $iTime > 0 And (TimerDiff($iTimer) / 1000) >= $iTime Then ExitLoop
WEnd
Return Number(BitAND(WinGetState($sTitle, $sText), 2) = 2)
EndFunc
Новая версия утилиты Au3ToPost 1.8 (http://creator-lab.ucoz.ru/load/3-1-0-18)!
(Архив включает откомпилированную версию).
Список изменении:
v1.8 [05.12.2008]
+ Добавлено распознавание стиля <t_2> - стиль отвечающий за блочный комментарии (#CS...#CE).
+ Добавлено распознавание стиля <t_13> - стиль отвечающий за т.н аббревиатуры, например при вводе cw.
+ Добавлена поддержка преобразования выделенной части кода.
+ Добавлена опция предпросмотра результата.
+ Добавлена опция "Поверх всех окон" в главном меню.
* Опять предотвращена высокая загрузка ЦП, на этот раз загрузка была при снятой птичке "Ввести код вручную".
* Теперь при выборе обрабатываемого файла будет осуществляться проверка на его существование :)
* Переделан метод использования горячих клавиш (меньше нагрузки на главный цикл).
* Также теперь проверка на ввод данных (путь к файлу обработки и поле с кодом) производится вне цикла (WM_COMMAND).
* Теперь путь к SciTE в первую очередь определяется относительно папке AutoIt.
* Изменён принцип работы быстрого режима. По нажатию на со-вующий пункт меню главное окно прячется в трей, и программа работает в тихом режиме (обработка либо по хоткей CTRL + SHIFT + A, либо из пункта меню иконки в трее.
* Исправлена потенциальная ошибка при интеграции в SciTE - путь к папке AutoIt неверный если скрипт откомпилирован.
* Поправки в отображений некоторых элементов интерфейса.
* Код немного переписан в соответствии с последней версией AutoIt (3.2.12.1). Для совместимости с более старыми версиями раскомментируйте строчки начинающиеся с ";~ ...".
* Размеры GUI теперь ограничены.
* орфографические поправки (в коде и в Readme файле).
* Косметические поправки в коде.
CrazyNNM
05-12-2008, 21:30
morres,
Глюк начинается на строке WinWait("SARC Intelligent Updater","OK") т.к. это окно просто не удается отловить, пробовал поразному, но моих познаний в AutoIt, видимо, недостаточно...
попробуй WinWaitActive("SARC Intelligent Updater","OK"
эта функция подождет пока окно будет активным))
еще есть sleep
поставь 1-2 сек между WinWait и ControlClick
PS: думаю, твой код сильно перегружен лишним
например, не вижу смысла в WinActivate
PPS: попробуй так завершить обновление:
WinWait("SARC Intelligent Updater","OK")
ControlClick("SARC Intelligent Updater","ОК","") ; не обязательное
if [i]ProcessExists ("Имя Процесса") Then
sleep (500)
ControlClick("SARC Intelligent Updater","ОК","[ID:2]")
Else
Exit
PPPS: есть приятная фича, Send ("{Enter}")
можешь в мой пример поставить вместо ControlClick
должно пахать:)
morres
ну если хотите подробностей, то пожалуйста »
вот это другое дело :) итак, по порядку:
- окна "&Да" и "ОК" отличаются не только текстом, но и заголовком (там два пробела, а не один);
- нелогично активировать окно для ControlClick (это обычно практикуют для Send);
- ControlClick срабатывает не всегда (?), но можно поставить проверочный цикл:
Run("\\srv\soft\Symantec\updat32.exe")
WinWait("SARC Intelligent Updater","&Да")
While WinExists("SARC Intelligent Updater","&Да")
Sleep(200)
ControlClick("SARC Intelligent Updater","&Да","Button1")
WEnd
WinWait("SARC Intelligent Updater","ОК")
While WinExists("SARC Intelligent Updater","ОК")
Sleep(200)
ControlClick("SARC Intelligent Updater","ОК","Button1")
WEnd
CrazyNNM
07-12-2008, 01:16
- ControlClick срабатывает не всегда (?), но можно поставить проверочный цикл: »
он не отрабатывает в основном, когда окно не успевает подгрузиться
тобишь, окно появилось, кнопка уже есть, но она не активна, скрипт по ней кликает и ничего не происходит. скрипт думает, что все прошло отлично)))
насчет условного цикла, это вроде как, самое рациональное решение))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC