Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 159 160 161 162 163 164 165 166

   

Widok



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

AutoIt3
(Часть 1)

 
 
Домашняя страница: http://www.autoitscript.com
Страница загрузки: http://www.autoitscript.com/autoit3/downloads.php
 
Описание:

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

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Учебник по AutoIt для начинающих
  • Видео-руководства на YouTube (англ.)
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf) - Та же книжка online.
  • Справочник по командам rundll32
  • Справка WinAPI (Win 32 API по шагам)
  • Русский справочник по API-функциям
  • Полезная информация по WinAPI на русском
  • Помощь по регулярным выражениям
  • Tutorial on DllCall() & DllStructs - Небольшое (пока?) руководство по использованию функции DllCall*()
     
     
    Ресурсы, посвящённые AutoIt
  • AutoIt в Википедии
  • AutoIt Russian Community - Русское сообщество AutoIt
  • Jabber-конференция для обсуждения мелких вопросов касающихся AutoIt
  • Обзор скриптового языка AutoIt (рус.)
  • AutoIt на Yahoo! Groups
  • Раздел в конфиренции OSzone.net, посвящённый AutoIt
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Коллекция AutoIt-скриптов от Sanja Alone
  • Коллекция AutoIt-скриптов от MSFN (могут быть устаревшие).
  • Коллекция AutoIt-скриптов от AZJIO
     
     
    !!! Полезные советы и заметки - новичкам и не только
     
     
  • Рекомендации по написанию скриптов
     
     
    Инструменты для AutoIt:
  • AutoIt Path Switcher - Переключение пути к папке AutoIt.
  • AutoIt3Wrapper [Страница закачки] - Программа для компиляции скрипта с дополнительными возможностями (добавление значка, описания и т.п).
  • Koda (724 Kb) - Визуализация работы с GUI - аналог Visual Basic.
  • CodeWizard (400 Kb) - нечто простенькое на вариант Koda.
  • AutoItMacroGenerator (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt-код.
  • ScriptWriter (78 Kb) - Аналог AutoItMacroGenerator.
  • API Constants (1042 Kb) - Утилита для просмотра всех констант API-функции и не только.
  • Страница закачки утилит, которые идут в отдельной поставке редактора SciTE.
  • AutoIt-меню для браузера Opera.
     
    Готовые скрипты и программы с открытым кодом на AutoIt:
  • Desktop Icons Restorator - Скрипт-программа для сохранения/восстановления позиции значков рабочего стола.
  • CaptureIt - Утилита для захвата изображений с экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста.
  • Скрипт раскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger) - Последняя версия: AutoItScript Add Debugger
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Чтение и запись данных с/в окна/о SciTE
  • Пример автообновления версии своего приложения
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значок в области уведомлений)
  • Пример создания своего мастера (Wizard)
  • Метод, позволяющий запускать код VBS без создания временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за буфером обмена с заменой неподдерживаемых в имени файла символов
  • Подключение приложения (GUI) к буферу обмена
  • Пример использования меню с значками (ModernMenu.au3) -> Список программ в меню значка в системном трее
  • Пример подсчёта интервала времени между нажатиями клавиш
  • Слежение нажатых элементов в текущем окне (под курсором)
  • Написание instant messaging Бота на AutoIt
  • Способ, позволяющий посылать нажатие клавиши в неактивное окно (не путать со свёрнутым)
  • Сервер <=> Клиент - Пример передачи файла
  • Пример отображения только элементов GUI (без самой оболочки)
  • Модуль, превращающий ваше приложение в Trial-версию
  • Слежение за выделенным текстом и с последующим его помещением в файл
     
    Отдельные функции и библиотеки (UDF):
  • Функции, относящиеся к интернету
  • Функции для работы с процессами и окнами
  • Функции для работы с файлами
  • Функции для GUI/Tray
  • Системные функции
  • Разное (то, что не подпадает под другие категории)
     


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

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 14:47 12-01-2009 | Исправлено: Maz, 11:50 17-04-2017
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AutoIT 16:46 10-11-2009
    Цитата:
    как мне оставить окно в этой-же красивой рамке, но избавится от возможности изменять размер окна

    Afaik, только так:

    Код:
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    ;
     
    Global $Clicked = 0, $DoubleClicked = 0
     
    Global $GUI = GUICreate("Resize Borders without resizing - Example", 400, 330, -1, -1, _
        BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME), $WS_EX_CLIENTEDGE)
     
    $BackPicID = GUICtrlCreatePic(@WindowsDir & "\Web\Wallpaper\Windows XP.jpg", 0, 0, 400, 330, -1, $GUI_WS_EX_PARENTDRAG)
     
    GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
     
    GUISetState()
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
     
        If $DoubleClicked Then
            $DoubleClicked = 0
            MsgBox(64, "Title", "DoubleClicked")
        EndIf
    WEnd
     
    Func WM_COMMAND($hWnd, $MsgID, $wParam, $lParam)
        Local Const $STN_DBLCLK = 1, $STN_CLICKED = 0
        Local $nID = BitAND($wParam, 0xFFFF)
        Local $nNotifyCode = BitShift($wParam, 16)
     
        Switch $nNotifyCode
            Case $STN_CLICKED
                $Clicked
    = $nID
            Case $STN_DBLCLK
                $DoubleClicked
    = $nID
        EndSwitch
     
       Return $GUI_RUNDEFMSG
    EndFunc
     
    Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
        If $hWnd <> $GUI Or $iMsg <> $WM_NCHITTEST Then Return $GUI_RUNDEFMSG
     
        Local $iRet = _WinAPI_DefWindowProc($hWnd, $iMsg, $iwParam, $ilParam)
     
        For $i = 10 To 18
            If $i = $iRet Then Return 1
        Next
     
        If $iRet = 1 Then Return 2
        Return $iRet
    EndFunc

     

    Цитата:
    нужно сделать что-бы это окно можно было переносить с места на место за картинку


    Цитата:
    как при всем вышесказанном еще и прикрутить действие на двойное нажатие по этой самой картинке

    В примере выше оно сделано.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:36 10-11-2009
    ynbIpb



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

    Цитата:
    Примерно так =)  
     
    Код:If $pixel_br[$a][3] >= 130 And $pixel_br[$a][6] >= 130 And $pixel_br[$a][21] >= 130 Then Return "8"

    Так я и начинал. но в процессе работу скрипта результаты были мутные. творилось непонятно что. так как AND Оператор логического умножения и они видимо перемножаются и этот результат уже сравнивается с цислом моим.
     
    ---------- updated ----------
    хотя, я писал  >= 130 не у каждого а только в конце перечисленных. Спасибо за наводку.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 19:11 10-11-2009 | Исправлено: ynbIpb, 19:57 10-11-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb 19:11 10-11-2009
    Цитата:
    AND Оператор логического умножения и они видимо перемножаются и этот результат уже сравнивается с цислом моим

    Откуда эта информация взята? AND это логическое "И", т.е все условия должны быть верными (True).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:20 10-11-2009
    ynbIpb



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

    Цитата:
    Откуда эта информация взята?  
    Ну.. я сужу из названия умножение значит умножение (уроки информатики в детстве плохо отложились в голове)
    Следует ли из этого, что результаты:
    If $value1 >= 130 and $value2 >= 130 and $value3 >= 130 Then
    и
    If $value1 and $value2 and $value3 >= 130 Then
    должны быть одинаково правильными? Но правильно работает только вариант 1.
     
    ---------------- updated -----------------
    ViSiToR, Kiev78,vicbox777, спасибо за развёрнутый ответ. Теперь всё прояснилось.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 23:41 10-11-2009 | Исправлено: ynbIpb, 13:26 11-11-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb 23:41 10-11-2009
    Цитата:
    сужу из названия умножение значит умножение

    Это в переводе даже не умножение, а просто «И».
     

    Цитата:
    If $value1 and $value2 and $value3 >= 130 Then

    В этом случае первое и второе условие проверяет является ли переменная $value1/2 истинной (True), т.е если $value1 = 1 (или болше нуля или пустой строки) то условие сработает и будет проверять следующее.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:53 10-11-2009
    Kiev78

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

    Цитата:
    должны быть одинаково правильными?

    Второй результат описан не верно! Будет сперва проверяться $value1 на тру\фалс, потом $value2  на тру\фалс и только потом $value3 >= 130, то есть условие сработает если $value1 и $value2 будут не равны нулю (то есть они могут быть любым числом) и $value3 >= 130.

    Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 23:56 10-11-2009
    vicbox777



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

    Цитата:
    If $value1 and $value2 and $value3 >= 130 Then  
    должны быть одинаково правильными? Но правильно работает только вариант 1.

    В данном случае $value1 и $value2 обрабатываются, будто они переменные булевского типа (логические переменные). То есть звучит так: Если $value1=true (1)...но так ведь нельзя, если эта переменная у тебя не имеет значение 1 или 0. А $value3 как и тебе угодно сравнивается с числом 130.

    Всего записей: 165 | Зарегистр. 17-06-2008 | Отправлено: 00:01 11-11-2009
    MoBiRo

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Извините за столь глупый вопрос, я новичек в AutoIt, но... у меня есть функция, в которой используется бесконечный цикл. Вот мне надо чтобы по время выполнения этого цикла я мог нажать на кнопку в программе и цикл бы оборвался или лучше остановился, выполнилась функция прикреплённая к кнопочке и дальше опять запустился бы или продолжил. И как закрыть окно при бесконечном цикле? =\

    Всего записей: 68 | Зарегистр. 11-11-2009 | Отправлено: 11:44 11-11-2009
    vicbox777



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MoBiRo
    10:44 11-11-2009
    Цитата:
    Вот мне надо чтобы по время выполнения этого цикла я мог нажать на кнопку в программе и цикл бы оборвался или лучше остановился

    Если очень надо, то поставте в вашем бесконечном цикле условие, которое и будет проверять, нажата ли ваша кнопка или кнопка закрытия окна, и если нажата ваша кнопка, то сделайте вызов функции нужной (можна даже через Call()) и на время работы этой функции - основной цикл, будет приостановлен, пока функция не завершит свою работу (такое уж свойство языка autoit).

    Всего записей: 165 | Зарегистр. 17-06-2008 | Отправлено: 12:54 11-11-2009
    Sital83

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
     
    Есть AutoIt скрипт, который висит в трее и активно работает с приложением Windows с помощью мыши и клавиатуры в циклическом режиме. Есть ли возможность с помощью определенной горячей клавиши прервать выполнение этого скрипта в любой момент?
     
    Добавлено:
    Оказывается этот вопрос только что задали

    Всего записей: 3 | Зарегистр. 05-11-2009 | Отправлено: 13:36 11-11-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MoBiRo
    Sital83
    Пример остановки скрипта есть в шапке темы.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:49 11-11-2009
    MoBiRo

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, но там по хоткею, а мне надо по закрытию окна (крестик) и по кнопке на самой программе =\ Я же говорю, что новичек...

    Всего записей: 68 | Зарегистр. 11-11-2009 | Отправлено: 14:09 11-11-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MoBiRo 14:09 11-11-2009
    Цитата:
    мне надо по закрытию окна (крестик) и по кнопке на самой программе

    Что то типа такого:
     

    Код:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;
     
    Global $iPaused = False
     
    Opt("GUIOnEventMode", 1)
     
    $hGUI = GUICreate("Test Script", 300, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_MainEvents")
    $nButton = GUICtrlCreateButton("Button", 20, 40, 60, 20)
    GUICtrlSetOnEvent(-1, "_MainEvents")
    GUISetState(@SW_SHOW, $hGUI)
     
    _MyFunc()
     
    While 1
        Sleep(100)
    WEnd
     
    Func _MainEvents()
        Switch @GUI_CtrlId
            Case $GUI_EVENT_CLOSE
                Exit
            Case $nButton
                $iPaused
    = Not $iPaused
        EndSwitch
    EndFunc
     
    Func _MyFunc()
        While 1
            Sleep(10)
     
            If $iPaused Then
                While $iPaused
                    Sleep(10)
                WEnd
            EndIf
        WEnd
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:17 11-11-2009
    MoBiRo

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR, не помогло, не хочет работать. Проблема в том, что из-за моего бесконечного цикла в основной функции, эти GUICtrlSetOnEvent не срабатывают =\ Я запустил программу, заставил её работать и она крутится по  
    while тра-та-та
    много команд
    WEnd
    И эти GUICtrlSetOnEvent не работают т.к. не проверяется нажатие, выполняется же цикл While в моей функции, а там не прописано никаких GUICtrlSetOnEvent =\  
    Кстати, у меня в отличае от вас программа начинает работать по нажатию на кнопку "старт", а у вас запуск функции прописан сразу после создания всех GUI элементов.
     
    У меня вот так
    $bt_Start = GUICtrlCreateButton("Начать", 8, 125, 49, 17, 0)
    GUICtrlSetOnEvent(-1, "NewDay")
     
    Может в этом и проблема. Но мне не надо чтобы она сразу работала при запуске, там надо указать кое-какие данные для работы и потом уже запустить...

    Всего записей: 68 | Зарегистр. 11-11-2009 | Отправлено: 02:55 12-11-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MoBiRo 02:55 12-11-2009
    Цитата:
    эти GUICtrlSetOnEvent не работают т.к. не проверяется нажатие, выполняется же цикл While в моей функции, а там не прописано никаких GUICtrlSetOnEvent

    Там и не должно быть. В моём же примере оно отрабатывается.
    Тут как раз дело в “много команд”, это напрямую зависит от того какие именно команды запускаются.
     

    Цитата:
    у меня в отличае от вас программа начинает работать по нажатию на кнопку "старт"

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

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 03:35 12-11-2009
    MoBiRo

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

    Цитата:
    устанавливать режим событий (указав нужной кнопке функцию события), где и будет останавливаться цикл (при проверке).

     
    в самом начале While прописал:
     
    Switch @GUI_CtrlId  
    Case $GUI_EVENT_CLOSE  
    FileWrite($FilePath, @CRLF & "-------------------------------------" & @CRLF)
    SaveSettings()
    Exit
    Case $bt_Check  
    Info()
    EndSwitch  
     
    толку ни какого =\

    Всего записей: 68 | Зарегистр. 11-11-2009 | Отправлено: 08:06 12-11-2009
    Lokryst



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Русификатор для SciTE
     
    http://elv1s.ifolder.ru/14953186
    http://slil.ru/28194184

    Всего записей: 156 | Зарегистр. 24-01-2008 | Отправлено: 12:49 12-11-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MoBiRo 08:06 12-11-2009
    Цитата:
    в самом начале While прописал

    Зачем?
     

    Цитата:
    толку ни какого

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

    Код:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;
     
    Global $iPaused = False
     
    $hGUI = GUICreate("Test Script", 300, 200)
    $nButton = GUICtrlCreateButton("Начать", 20, 40, 80, 20)
     
    GUISetState(@SW_SHOW, $hGUI)
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $nButton
                Opt("GUIOnEventMode", 1)
     
                GUICtrlSetData($nButton, "Пауза")
                GUISetOnEvent($GUI_EVENT_CLOSE, "_MainEvents")
                GUICtrlSetOnEvent($nButton, "_MainEvents")
     
                _MyFunc()
     
                ;Хотя сюда дело по идее не должно доходить
                Opt("GUIOnEventMode", 0)
                GUICtrlSetData($nButton, "Начать")
        EndSwitch
    WEnd
     
    Func _MainEvents()
        Switch @GUI_CtrlId
            Case $GUI_EVENT_CLOSE
                Exit
            Case $nButton
                $iPaused
    = Not $iPaused
     
                If $iPaused Then
                    GUICtrlSetData($nButton, "Продолжить")
                Else
                    GUICtrlSetData($nButton, "Пауза")
                EndIf
        EndSwitch
    EndFunc
     
    Func _MyFunc()
        While 1
            Sleep(10)
     
            If $iPaused Then
                While $iPaused
                    Sleep(10)
                WEnd
            EndIf
        WEnd
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:32 12-11-2009
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Появилась идея сделать  в контекстном меню вызов скрипта, который в гуи-оболочке предлагает выполнение действий с выделенным обьектом. Контекстное меню и так уже разрослось и хочется заменить десяток пунктов одним пунктом - вызовом скрипта. Конечно хочется чтоб была зарегистрированная dll, которая раскрывается как каскадное меню, а не стартует скрипт, но пока другого способа не знаю.

    Всего записей: 4564 | Зарегистр. 03-05-2006 | Отправлено: 06:45 13-11-2009
    Camertone

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть VBS скрипт. Если на этот скрипт отправить файлы или папки, то скрипт скопирует их по указанному пути:  
    "\\172.23.0.2\Users$\"&objUserName.
     
    Перепишите скрипт на Autoit коде, кому не сложно.
     
    VBS мне не подходит, т.к.  планируется в GUI выбирать objUserName из списка,
    чтобы копировать в папку выбранного пользователя.
     
    Вот VBS код:
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    set Args = WScript.Arguments
    Set objShellApp = CreateObject("Shell.Application")
    Set objNetwork = CreateObject("Wscript.Network")
    objUserName = objNetwork.UserName
     
    'Перед запуском скрипта Folder должен быть создан, иначе ошибка.
    Set objFolder = objShellApp.NameSpace("\\172.23.0.2\Users$\"&objUserName)  
     
    Dest = objFolder.Self.Path
     
    If Args.Count = 0 Then
      WScript.Quit
    End If
     
       For i = 0 To Args.Count - 1
     
       CopyObj IsFileOrDir(Args.Item(i)), Args.Item(i)
     
    Next
     
    MsgBox "Скопировано"
    '===========================================================
    Function IsFileOrDir (ItemPath)
     
      If FSO.FileExists (ItemPath) Then
        IsFileOrDir = "File"
      Else
        IsFileOrDir = "Dir"
      End If
     
    End Function
    '===========================================================
    Sub CopyObj (FileOrDir, ItemPath)
     
      Select Case FileOrDir
     
        Case "File"
     
          Set File = FSO.GetFile (ItemPath)
     
          File.Copy CreateDestFolders(Dirs)
     
        Case "Dir"
     
          Set Folder = FSO.GetFolder (ItemPath)      
     
          Folder.Copy CreateDestFolders(Dirs)
     
      End Select
     
    End Sub
    '===========================================================
    Function CreateDestFolders(Dirs)
     
      SplitDirs = Split(Dirs, "\")
     
      DestFold = Dest
     
      For j = 0 To UBound(SplitDirs)
     
        NewDest = DestFold & "\" & SplitDirs(j)
     
        If Not FSO.FolderExists(NewDest) Then
         FSO.CreateFolder NewDest
        End If
        DestFold = NewDest
     
      Next
     
      CreateDestFolders = DestFold & "\"
     
    End Function

    Всего записей: 6 | Зарегистр. 03-11-2009 | Отправлено: 13:07 13-11-2009
       

    Страницы: 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 159 160 161 162 163 164 165 166

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
    Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru