|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36570 |
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать HORRIBLE,
Цитата:
All Нужна срочно помощь по RegExp... Никак немогу получить массив со всеми совпадениями между двух символов ($), но при это должно учитываться, что нужный нам текст, должен содержать только допустимые для переменной символы, а именно A-Z, 0-9, и _ (вроде больше ничего не допускается). Чтобы проще понять что мне нужно, покажу что я пытаюсь сделать на примере: #include <Array.au3> $String = "This is <$Var$> and this is <$Str$>" $Array = StringRegExp($String, "(?i).*?\$(.*?[0-9a-z_])\$.*?", 3) _ArrayDisplay($Array) То тоже нормально, получаем только [0] = Var, но если убрать $ у первого значения.. То получим совсем не то что нужно (нужно только Str)... сколько я не мучался, но казалось бы, вроде такую простую задачу, решить не смог ![]() |
|
------- Отправлено: 00:36, 11-12-2007 | #841 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Нашёл!!!
![]() #include <Array.au3> $String = "This is <$Var> and this is <$Str$>" $Array = StringRegExp($String, "\$((?i)[0-9a-z_]+)\$", 3) _ArrayDisplay($Array) ![]() Мне это нужно было для функции _ExpandVarStrings() - позволяет расширять переменные (не включая макросы) в любом виде, даже такие: "$Var". Пример и сама функция: $Var = "Our Value" $Str = "Our String" ;================= Example with $iMode = -1, default - Only $String$ expanded ================= $sString = "This is <$Var$> and this is <$Str$>" $ExpandedStr = _ExpandVarStrings($sString, -1) MsgBox(64, "Expand Var Strings", "Was:" & @LF & $sString & @LF & @LF & "Expanded:" & @LF & $ExpandedStr) ;========================================================================================================== ;================= Example with $iMode = 1, Only $String expanded ================= $sString = "$Var goes here, and $Str goes here" $ExpandedStr = _ExpandVarStrings($sString, 1) MsgBox(64, "Expand Var Strings", "Was:" & @LF & $sString & @LF & @LF & "Expanded:" & @LF & $ExpandedStr) ;========================================================================================================== ;================= Example with $iMode = 2, All strings expanded ($String and $String$) ================= $sString = "$Var not equel $Str$" $ExpandedStr = _ExpandVarStrings($sString, 2) MsgBox(64, "Expand Var Strings", "Was:" & @LF & $sString & @LF & @LF & "Expanded:" & @LF & $ExpandedStr) ;========================================================================================================== ;=============================================================================== ; Function Name: _ExpandVarStrings() ; Description: Expand string variables inside string (using different modes). ; Parameter(s): $sString - String that contain variables that need to be expanded. ; $iMode - Define the expand mode... ; -1 - (default) will expand only $Var$ strings. ; 1 - will expand only $Var strings. ; 2 - will expand $Var$ and $Var strings. ; Requirement(s): None. ; Return Value(s): On success - Return initial string with expanded variables. ; ; On failure - If $sString not contain string variables that need to be expanded (according to $iMode), ; will returned initial $sString. ; ; Author(s): G.Sandler (a.k.a CreatoR) ;=============================================================================== Func _ExpandVarStrings($sString, $iMode=-1) Local $aExtractStrs, $sPattern, $sEval Local $sRetStr = $sString Switch $iMode Case 1 $sPattern = "(?i)(\$[0-9a-z_]+)" Case 2 $sPattern = "(?i)(\$[0-9a-z_]+\$)|(\$[0-9a-z_]+)" Case Else $sPattern = "(?i)(\$[0-9a-z_]+\$)" EndSwitch Local $aExtractStrs = StringRegExp($sString, $sPattern, 3) If Not IsArray($aExtractStrs) Then Return $sRetStr For $i = 0 To UBound($aExtractStrs)-1 $sEval = Eval(StringReplace($aExtractStrs[$i], "$", "")) If $sEval <> "" Then $sRetStr = StringReplace($sRetStr, $aExtractStrs[$i], $sEval) Next Return $sRetStr EndFunc |
------- Последний раз редактировалось Creat0R, 11-12-2007 в 03:07. Отправлено: 01:46, 11-12-2007 | #842 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Нашёл вроде багу в Opt("ExpandVarStrings", 1)...
Opt("ExpandVarStrings", 1) $Var = "Some data" $String = "$Str and $Var$" MsgBox(0, "", $String) Opt("ExpandVarStrings", 1) $Var = "Some data" $String = "$Str$ and $Var$" MsgBox(0, "", $String) ![]() ;=============================================================================== ; Function Name: _ExpandVarStrings() ; Description: Expand string variable/macro inside string (using different modes). ; Parameter(s): $sString - String that contain variables that need to be expanded. ; $iMode - Define the expand mode... ; -1 - (default) will expand only $Var$/@Macro@. ; 1 - will expand only $Var/@Macro. ; 2 - will expand $Var$/@Macro@ and $Var/@Macro. ; Requirement(s): None. ; Return Value(s): On success - Return initial string with expanded variables. ; ; On failure - If $sString not contain string variables that need to be expanded (according to $iMode), ; will returned initial $sString. ; ; Author(s): G.Sandler (a.k.a CreatoR) ;=============================================================================== Func _ExpandVarStrings($sString, $iMode=-1) Local $aExtractStrs, $sPattern, $sEval, $Old_Opt_EVS Local $sRetStr = $sString, $sExpndStr = "" Local $aSymbExpnd[2] = ["$", "@"] For $i = 0 To 1 Switch $iMode Case 1 $sPattern = "(?i)(\" & $aSymbExpnd[$i] & "[0-9a-z_]+)" Case 2 $sPattern = "(?i)(\" & $aSymbExpnd[$i] & "[0-9a-z_]+\" & $aSymbExpnd[$i] & ")|(\" & $aSymbExpnd[$i] & "[0-9a-z_]+)" Case Else $sPattern = "(?i)(\" & $aSymbExpnd[$i] & "[0-9a-z_]+\" & $aSymbExpnd[$i] & ")" EndSwitch Local $aExtractStrs = StringRegExp($sString, $sPattern, 3) If Not IsArray($aExtractStrs) Then ContinueLoop For $iE = 0 To UBound($aExtractStrs)-1 If $i = 0 Then $sEval = Eval(StringReplace($aExtractStrs[$iE], $aSymbExpnd[$i], "")) If $sEval <> "" Then $sRetStr = StringReplace($sRetStr, $aExtractStrs[$iE], $sEval) ElseIf $iMode <> -1 Or StringRight($aExtractStrs[$iE], 1) = $aSymbExpnd[$i] Then $sExpndStr = $aExtractStrs[$iE] If StringRight($sExpndStr, 1) <> $aSymbExpnd[$i] Then $sExpndStr &= $aSymbExpnd[$i] $Old_Opt_EVS = Opt("ExpandVarStrings", 1) $sExpndStr = $sExpndStr Opt("ExpandVarStrings", $Old_Opt_EVS) If $aExtractStrs[$iE] <> "" Then $sRetStr = StringReplace($sRetStr, $aExtractStrs[$iE], $sExpndStr) EndIf Next Next Return $sRetStr EndFunc ![]() |
------- Отправлено: 03:03, 11-12-2007 | #843 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
А как на счет выбора компонента в окне свойство "Подключение по локальной сети" без использования имитации нажатия клавиш и мыши? |
|
Отправлено: 03:31, 11-12-2007 | #844 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Kenwood3D,
Цитата:
|
|
------- Отправлено: 04:37, 11-12-2007 | #845 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Kenwood3D
вот пример изменения состояния компонента: #Include <GuiListView.au3> $Name = "Клиент для сетей Microsoft" $hWnd = WinGetHandle("Подключение по локальной сети") If Not @error Then $hSLV = ControlGetHandle($hWnd, "", "SysListView321") If Not @error Then _SysListViewToggle($hSLV, $Name) MsgBox(48, '', 'Состояние элемента "'& $Name &'" изменено') EndIf EndIf Func _SysListViewToggle($hSLV, $sText) Local $idx = _GUICtrlListView_FindInText($hSLV, $sText) _GUICtrlListView_SetItemSelected ($hSLV, $idx) _GUICtrlListView_SetItemFocused ($hSLV, $idx) ControlSend($hWnd, "", "SysListView321", "{SPACE}") EndFunc |
Отправлено: 06:40, 11-12-2007 | #846 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать HORRIBLE, Мало ли, может захочишь установку делать с ключами...
RunWait ( 'msiexec /i "'&$file&'" /L1049 /S /v/qn') amel27, Creat0R, помогите сделать скрипт плз.... Нужно определить операционку, если VISTA выдаёт сообщение, если XP выдаёт сообщение. (сам бы сделал, но нет под рукой ВИСТЫ, может Вы вкурсе по каким файлам можно определять.....) Я использовал If @OSType="WIN32_NT" Then.... , но почему то не определяется ВИСТА (наверно рна тоже относится к @OSType="WIN32_NT"). Заранее СПС! Creat0R, ты мне давал скрипт который выполняет копирование папки с показателем времени от винды... 1. Нужно сделать так-если файлы есть - перезаписывать... 2. Возможно ли сделать на скрипте чтобы показывало остаток времени (вообщем как в винде) *автор скрипта возможно и amel27, но разговор был с тобой.... |
------- Последний раз редактировалось TERMINAL, 11-12-2007 в 10:16. Отправлено: 09:57, 11-12-2007 | #847 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL,
Цитата:
Цитата:
![]() Цитата:
![]() Цитата:
|
||||
------- Отправлено: 10:25, 11-12-2007 | #848 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Creat0R, Ща нарою, не убегай...
Вот на этой страничке наше обсуждение, но всё что ты писал я копировал в Autolt и у меня вылазила целая куча ошибок (пробовал только что на свежей версии-непомогает).... Сразу говорю-мне нужно скопировать с диска папку i386 на С диск... |
------- Отправлено: 10:27, 11-12-2007 | #849 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL,
Цитата:
Вот это разве не делает то что нужно: _CopyWithProgress("D:\i386", "C:\i386", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION)) |
|
------- Отправлено: 10:57, 11-12-2007 | #850 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 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 |
|