Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


Сообщения: 36570
Благодарности: 6700


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).
Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).



Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


HORRIBLE,
Цитата:
зачем $file заключать в 3-ые ковычки?
Это двойные кавычки (одна одиночная и одна двойная), заключать в кавычки нужно, чтобы если путь содержит пробелы, небыло проблем при попытке запуска.




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, а [1] = Str, если убрать символ $ у последнего значения...

Код: Выделить весь код
$String = "This is <$Var$> and this is <$Str>"
То тоже нормально, получаем только [0] = Var, но если убрать $ у первого значения..

Код: Выделить весь код
$String = "This is <$Var> and this is <$Str$>"
То получим совсем не то что нужно (нужно только Str)... сколько я не мучался, но казалось бы, вроде такую простую задачу, решить не смог .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 00:36, 11-12-2007 | #841



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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
Для макросов нужно ещё немного помучать функцию...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 11-12-2007 в 03:07.


Отправлено: 01:46, 11-12-2007 | #842


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Нашёл вроде багу в Opt("ExpandVarStrings", 1)...

Код: Выделить весь код
Opt("ExpandVarStrings", 1)

$Var = "Some data"
$String = "$Str and $Var$"

MsgBox(0, "", $String)
Переменная не расширяется, но если мы добавим символ $ после $Str, то всё расширяется нормально (не зависимо от того, есть ли такая переменная):

Код: Выделить весь код
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
Вроде работает

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 03:03, 11-12-2007 | #843


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
Kenwood3D, Для переключения вкладок, можно использовать мою UDF _ControlTab(), и указывать текст в качестве идентификатора...
Спасибо.
А как на счет выбора компонента в окне свойство "Подключение по локальной сети" без использования имитации нажатия клавиш и мыши?

Отправлено: 03:31, 11-12-2007 | #844


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Kenwood3D,
Цитата:
как на счет выбора компонента в окне свойство "Подключение по локальной сети"
Какого компонента? возможно есть метод запускать отдельно.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 04:37, 11-12-2007 | #845


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить 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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


TERMINAL,
Цитата:
Нужно определить операционку
Из справки:

Цитата:
@OSVersion - Returns one of the following: "WIN_VISTA", "WIN_2003", "WIN_XP", "WIN_2000", "WIN_NT4", "WIN_ME", "WIN_98", "WIN_95"


Цитата:
ты мне давал скрипт который выполняет копирование папки с показателем времени от винды
Ну, я многое мог давать, я не помню о чём именно речь, или ссылку приведи, или скрипт что я давал

Цитата:
Возможно ли сделать на скрипте чтобы показывало остаток времени
Наверное можно.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:25, 11-12-2007 | #848


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


Creat0R, Ща нарою, не убегай...

Вот на этой страничке наше обсуждение, но всё что ты писал я копировал в Autolt и у меня вылазила целая куча ошибок (пробовал только что на свежей версии-непомогает).... Сразу говорю-мне нужно скопировать с диска папку i386 на С диск...

-------
Автоматизация прежде всего....


Отправлено: 10:27, 11-12-2007 | #849


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


TERMINAL,
Цитата:
вылазила целая куча ошибок
Каких?

Вот это разве не делает то что нужно:

Код: Выделить весь код
_CopyWithProgress("D:\i386", "C:\i386", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION))
Функции отсюда.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 10:57, 11-12-2007 | #850



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход