Страница 1 / 158

AutoIT: [Назад] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 [Вперед]

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Часть 1, Часть 2
 

 
AutoIt 3
 
Домашняя страница
Страница загрузки
Русское сообщество AutoIt

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


  •  
    За шапкой следитViSiToR/ AZJIO 

Всего записей: 24190 | Зарегистр. 06-04-2002 | Отправлено: 12:07 01-06-2010 | Исправлено: Skif_off, 17:33 26-05-2014
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всех с переездом!

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:53 01-06-2010
NIKZZZZ

Редактировать | Цитировать | Сообщить модератору
ViSiToR
По поводу Ссылка
Кроме этого, надо исправить удаление отладочных строк
Подробнее...

Отправлено: 14:59 01-06-2010 | Исправлено: NIKZZZZ, 15:06 01-06-2010
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NIKZZZZ 15:59 01-06-2010
Цитата:
Кроме этого, надо исправить удаление отладочных строк

В этом случае можно не дублировать функции:
 

Код:
function AutoItTools:ConsoleWritePattern(with_comment)
    return self:MsgBoxPattern(with_comment)
end    -- ConsoleWritePattern()
 
function AutoItTools:MsgBoxPattern(with_comment)
    local nl = self:NewLineInUse()
    if with_comment then
        return nl .. "[%s]*;[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    else
        return nl .. "[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    end
end    -- MsgBoxPattern()


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:26 01-06-2010
degid



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть скрипт на vbscript, меняет рабочую группу, тут нашел пример всовывания vbscript в AutoIT, но он чет вылетает на с ошибкой
Исходный скрипт:

Код:
 
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
 
strDomain = "NewGr"
 
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain)
 

AutoIT

Код:
$ProcessName = "AutoIt3.exe"
$RetArr = _ProcessExistsVbs($ProcessName)
If IsArray($RetArr) Then MsgBox(64, "", "Process <" & $RetArr[1] & "> exists." & @LF & @LF & _
    "The returned PID is: " & $RetArr[2] & @LF & @LF & _
    "Returned Executable Path is: " & @LF & $RetArr[3] & @LF & @LF & _
    "Command Line of executed process is: " & @LF & $RetArr[4])
 
Func _ProcessExistsVbs($ProcName)
     Local $Code = ""
    $Code &= 'Function ProcessExists(ProcessName)' & @LF
    $Code &= 'Const JOIN_DOMAIN = 1' & @LF
    $Code &= 'Const ACCT_CREATE = 2' & @LF
    $Code &= 'Const ACCT_DELETE = 4' & @LF
    $Code &= 'Const WIN9X_UPGRADE = 16' & @LF
    $Code &= 'Const DOMAIN_JOIN_IF_JOINED = 32' & @LF
    $Code &= 'Const JOIN_UNSECURE = 64' & @LF
    $Code &= 'Const MACHINE_PASSWORD_PASSED = 128' & @LF
    $Code &= 'Const DEFERRED_SPN_SET = 256' & @LF
    $Code &= 'Const INSTALL_INVOCATION = 262144' & @LF
    $Code &= 'strDomain = "NewGr"' & @LF
    $Code &= 'Set objNetwork = CreateObject("WScript.Network")' & @LF
    $Code &= 'strComputer = objNetwork.ComputerName' & @LF
 
    $Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" &     " & strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='" & " & strComputer & " & "'" & @LF
 
    $Code &= 'ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain)' & @LF
    $Code &= 'End Function'
 
    Local $VbsObj = ObjCreate("ScriptControl")
    If @error Then Return SetError(1, 0, -1)
    $VbsObj.Language = "vbscript"
$VbsObj.AddCode($Code)
    Local $RetArr = $VbsObj.[i]Run[/i]("ProcessExists", $ProcName)
    If $RetArr = 0 Then Return SetError(0, 0, 0)
    Return $RetArr
EndFunc

в общем, ругается он на эту строчку:
 

Код:
$Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" & " & strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='" & " & strComputer & " & "'" & @LF

 
Ошибка: The requested action with this object has failed.
 
подскажите плиз, что ему не хватает?

Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 17:16 02-06-2010 | Исправлено: degid, 13:38 03-06-2010
Kar1son

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
degid
если внутри строки у тебя есть кавычки " то саму строку надо заключать в апострофы ' и наоборот.
 
Зы хотел написать готовую но запутался в твоей строке

Всего записей: 183 | Зарегистр. 23-08-2006 | Отправлено: 18:02 02-06-2010 | Исправлено: Kar1son, 18:03 02-06-2010
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
degid 18:16 02-06-2010
Цитата:
Есть скрипт на vbscript, меняет рабочую группу, тут нашел пример всовывания vbscript в AutoIT, но он чет вылетает на с ошибкой

А зачем выполнять vbs из AutoIt, это не тот случай , вот тот же скрипт но переведён на AutoIt (не тестировал):
 

Код:
Const $JOIN_DOMAIN = 1
Const $ACCT_CREATE = 2
Const $ACCT_DELETE = 4
Const $WIN9X_UPGRADE = 16
Const $DOMAIN_JOIN_IF_JOINED = 32
Const $JOIN_UNSECURE = 64
Const $MACHINE_PASSWORD_PASSED = 128
Const $DEFERRED_SPN_SET = 256
Const $INSTALL_INVOCATION = 262144
 
$strDomain = "NewGr"
 
$objNetwork = ObjCreate("WScript.Network")
$strComputer = $objNetwork.ComputerName
$objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & $strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & $strComputer & "'")
$ReturnValue = $objComputer.JoinDomainOrWorkGroup($strDomain)


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:33 02-06-2010
Kar1son

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
а откуда ты узнаешь об обектах? например в ObjCreate("WScript.Network"), ты откуда узнал что есть такой объект "WScript.Network"?

Всего записей: 183 | Зарегистр. 23-08-2006 | Отправлено: 00:12 03-06-2010
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kar1son 01:12 03-06-2010
Цитата:
откуда ты узнаешь об обектах? например в ObjCreate("WScript.Network"), ты откуда узнал что есть такой объект "WScript.Network"?

Это из скрипта от degid
 
А вообще есть такой инструмент как Scriptomatic, там можно много чего узнать об объектах (работа с WMI), ну и конечно же разные справки по теме WSH.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:09 03-06-2010
Kar1son

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть команда Send('Kar1son{Enter}'), а если в момент выполнения язык в системе переключен на русский то получается "Лфк1ыщт". Есть способы кроме как посылать через Send ASCII коды символов?

Всего записей: 183 | Зарегистр. 23-08-2006 | Отправлено: 13:05 03-06-2010
degid



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kar1son, ViSiToR
разобрался, всё дело в кавычках... (там просто сразу " и ' используются, записал $Code в файлик и всё увидел)

Код:
$Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" & " & _" & @LF
    $Code &= "strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='""" & " & _" & @LF
    $Code &= "strComputer & " & """'""" & ")" & @LF

конечно, было бы прикольно его полностью переделать на AutoIt...  но отложу разбор на потом...  

Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 13:21 03-06-2010 | Исправлено: degid, 13:40 03-06-2010
NIKZZZZ

Редактировать | Цитировать | Сообщить модератору
degid

Цитата:
разобрался, всё дело в кавычках...

В таких случаях удобно использовать одиночные кавычки, например:

Код:
$Code &= 'Set objComputer = GetObject(' & '"winmgmts:{impersonationLevel=Impersonate}!\\"' & ' & _' & @LF  

Отправлено: 13:29 03-06-2010
degid



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
есть команда Send('Kar1son{Enter}'), а если в момент выполнения язык в системе переключен на русский то получается "Лфк1ыщт". Есть способы кроме как посылать через Send ASCII коды символов?

http://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=2620#15

Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 13:32 03-06-2010
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kar1son 14:05 03-06-2010
Цитата:
Есть способы кроме как посылать через Send ASCII коды символов?

Обход проблемы с кодировкой при использовании Send
 
degid 14:21 03-06-2010
Цитата:
было бы прикольно его полностью переделать на AutoIt

Я привёл пример выше.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:20 03-06-2010
Z4masko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как автоматизировать нажатия в Internet Explorer по элементам меню, которое написано на JavaScript?  
То есть есть выпадающее меню на Javascript и справа кнопочка Ок например (то же относится к этому скрипту). И вот как бы указать через Auto It те элементы меню ,на которые надо кликать и потом нажимать ОК ?  
С обычными ссылками понятно - можно просто делать: _IELinkClickByText  
А вот как кликать когда все меню на JavaScript - непонятно (
Почитал мануал, там написано что при таких случаях надо кликать с помощью:  

Код:
_IEAction ($element, "click")

Но вот какой функцией определить имя этого элемента и присвоить его к переменной $element ?  

Всего записей: 603 | Зарегистр. 05-11-2004 | Отправлено: 15:45 03-06-2010
madmasles

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Z4masko
Вы здесь посмотрите: Выбрать определенное значение из списка в окне, там для vkontakte есть готовое решение.

Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:25 03-06-2010
Kar1son

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Z4masko
я когда пытался этой функцией пользоваться, сохранял страничку и потом в коде(блокнотом открывал просто) искал имя элемента

Всего записей: 183 | Зарегистр. 23-08-2006 | Отправлено: 17:02 03-06-2010
degid



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Kar1son  
degid 14:21 03-06-2010
Цитата:
было бы прикольно его полностью переделать на AutoIt

Я привёл пример выше.

Спасибо!!! Работает )

Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 17:12 03-06-2010 | Исправлено: degid, 17:24 03-06-2010
ynbIpb



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Маленькая задачка: Необходимо сформировать энное количество байтов, но заранее нам это количество не известно. Оно появляется в результате другой функции.
Я сделал вот так:

Код:
$iBytesToAdd = 10
$string = ""
$stringlen = ""
While 1
    $string &= "00"
    $stringlen = StringLen ($string)
    If $stringlen = $iBytesToAdd * 2 Then ExitLoop
WEnd

$bstring = "0x" & $string
$bstring
= Binary ($bstring)

Но может, кто-то подскажет более элегантное решение?

Всего записей: 1532 | Зарегистр. 01-05-2006 | Отправлено: 10:45 04-06-2010
NIKZZZZ

Редактировать | Цитировать | Сообщить модератору
ynbIpb

Цитата:
более элегантное решение?

 

Код:
$iBytesToAdd = 10
$string = "0x"
For $i= 1 To $iBytesToAdd
    $string &= "00"  
Next
$bstring = Binary ($string)
 
Другой вариант, если $iBytesToAdd ограничено
 

Код:
$iBytesToAdd = 10  
$bstring = BinaryMid (Binary ("0x000000000000000000000000000000000000000000000000000000000000"),1,$iBytesToAdd)

Отправлено: 11:20 04-06-2010 | Исправлено: NIKZZZZ, 11:30 04-06-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT

Сохранено: 10.06.2016 15:49:57 (c) xForumSaver