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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Полезные ссылки: UDF и примеры
    UDF Collection
    Autoit Wrappers
    ViSiToR, их может в шапку?

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 04:52 18-03-2009 | Исправлено: sproxy, 05:48 18-03-2009
    SokSan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста разобраться !
    Пытаюсь написать скрипт который разворачивает рабочее окно программы на весь экран
    Для этого вначале закрываю все вспомогательные дочерние окны — TspeedBar ...Tpanel..  TstatusBar и т. д. и т. п.  
    Потом разворачиваю рабочее окно в размер окна программы  
    При этом столкнулся с такой проблемой:
    1. Если использовать для закрытия окон команду WinSetState("Untitled -", "", @SW_HIDE)
    то необходимо вначале закрыть все вложенные окна:  
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:3]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:2]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:1]", "" , @SW_HIDE )    
    При этом некоторые окна могут не закрыться или сработать 2-4 раза а потом перестать закрываться до перегрузки компа. После чего опять сработают несколько раз.
    Такая картина наблюдается на одном компе с Win_ХР НЕ RUS SР2 (этот комп используется для отладки.) Зато команда ControlHide("Untitled -", "", "MDIClient1") работает железно закрывает любое дочерное окно вместе с вложенными.
            Но на другом компе (для которого прога и предназначена) с Win_ХР НЕ ING SР3 команды WinSetState работают нормально, закрывая по-очередно все окна. Зато команда ControlHide напрочь не работает. Не работает и команда ControlMove хотя ControlClick — отрабатывает.
            На домашнем компе Win_ХР PE RUS SР3 работают обе версии программы как с командами Win так и командами Control.
    Может нужно включить какие-нибудь библиотеки?
    Вначале программы у меня прописано:
     
    #include <GUIConstants.au3>  
     
    Opt("WinSearchChildren", 1)  
    Opt("WinTitleMatchMode", 2)  
    Opt("WinDetectHiddenText", 0)
     

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 08:26 18-03-2009 | Исправлено: SokSan, 08:28 18-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SokSan 08:26 18-03-2009
    Цитата:
    вначале закрываю все вспомогательные дочерние окны

    и всетаки, используя:

    Цитата:
    WinSetState("Untitled -", "", @SW_HIDE)

    Вы не закрываите окно, а скрываите его. Т.е. окно получет статус "не отображаться",
    еще проще говоря - "стать невидимым" )) Так Вам нужно закрыть или скрыть дочерные окна?
     

    Цитата:
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )

    тут точно все правильно, [CLASS:TPanelCanvas; INSTANCE:4] это точно окно или же это панель
    с кнопочками в окне?
     
    если это классы дочерных окно:
    Цитата:
    TspeedBar ...Tpanel..  TstatusBar и т. д. и т. п.  

    то тут их почему нет:

    Цитата:
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )  
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:3]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:2]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:1]", "" , @SW_HIDE )  

     

    Цитата:
     некоторые окна могут не закрыться или сработать 2-4 раза

    ради интереса, что подразумевается под "окна могу сработать" ..?
     
    как понимаю задача над окном не AutoIt-ким?
     

    Цитата:
    Для этого вначале закрываю все вспомогательные дочерние окны

    а без этого окно не разворачивается?....
    этим же пробуите:
    Код:
    WinSetState( "title", "text", @SW_MAXIMIZE )

     
     
     
    Добавлено:
    SokSan 08:26 18-03-2009
    Цитата:
    Opt("WinDetectHiddenText", 0)

    если потребуется получить(WinGetText) текст из скрытого окна, то эту опцию наоборот,
    лучше установить в: 1
     

    Цитата:
    Opt("WinTitleMatchMode", 2)

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

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 09:31 18-03-2009
    SokSan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Цитата:
    ради интереса, что подразумевается под "окна могу сработать" ..?
     
    как понимаю задача над окном не AutoIt-ким?  
     
    Может я неправильно выразился  
    В смысле команда срабатывает и дочернее окно  закрывается
    Программа сторонняя, вернее насколько разных программ  (не AutoIT )
    Когда закрываются все дочерние окна  (на их месте - фон основного окна)
    далее команда  
    WinMove("Untitled -", "", 0, 0, ХХХ, YYY)
    или в зависимости от компа  
    ControlMove("Untitled -", "", "MDIClient1", 0, 0, ХХХ, YYY)
    Разворачивает рабочее дочерное окно в размер окна программы
      Цитата:
    и с этим поаккуратней, могут найтись окна, в названии которых может
    совпасть искомый текст и произойдет ошибка...если есть возможность,
    то лучше стараться максимально уточнаять и ужесточасть определение
    окна, а самое хорошее, есть есть возможность получить Handle окна.
     
    Техт я вообще не использую потому что его там и нет
    используется Class Class NN ....
     
    Добавлено:
         Цитата:
         WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )
     
        тут точно все правильно, [CLASS:TPanelCanvas; INSTANCE:4] это точно окно или же это     панель   с кнопочками в окне?
     
    В  данном случае это панель с информации в окне
     
    если это классы дочерных окно:
    Цитата:
    TspeedBar ...Tpanel..  TstatusBar и т. д. и т. п.  
     
    то тут их почему нет:
     
    Я привел как пример вложения INSTANCE:4....INSTANCE:1
    В программе прописано
    Opt("WinTitleMatchMode", 4)  
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:3]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:2]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:1]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanel; INSTANCE:4]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanel; INSTANCE:3]", "" , @SW_HIDE )
    WinSetState("[CLASS:TPanel; INSTANCE:2]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TPanel; INSTANCE:1]]", "" , @SW_HIDE )
    WinSetState("[CLASS:TSpeedBar; INSTANCE:1]", "" , @SW_HIDE )    
    WinSetState("[CLASS:TStatusBar; INSTANCE:1]", "" , @SW_HIDE )
    Opt("WinTitleMatchMode", 2)  

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



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

    Цитата:
    Может я неправильно выразился  

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

    Цитата:
    WinSetState( "title", "text", @SW_MAXIMIZE )

    может заменить:
    Цитата:
    ControlMove("Untitled -", "", "MDIClient1", 0, 0, ХХХ, YYY)

     
    опять же, какой смысл в том, что бы скрывать дочерные окна:

    Цитата:
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )

    ? для того, что бы развернуть основное окно, думаю это не надо.
    ведь дочерные окна все равно остаются, просто не видны...
     

    Цитата:
    используется Class Class NN ....

    хм...думаю это не совсем окно, тогда....какой то тип панели или объекта фрейма...
    что то такое, так как у окна не будет ClassnameNN или Advanced (Class).
    банально понаводить на заголовки других окон - именно окон, там только
    Class и все....а следовательно, если мысл верная, то и с этими
    дочерными как бы окнами надо работать более как с объектами.
    скорее всего потому и были ошибки.

    туплю, там все ок. только Class NN не используется.
    используется только: Class, и номер экземпляра.
     
    А библиотеки у вас уже все подключенны.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 10:29 18-03-2009 | Исправлено: sproxy, 10:37 18-03-2009
    SokSan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вместо последней кучи команд  
    можно прописать всего 3  
    ControlHide("Untitled -", "", "MDIClient1")
    где "MDIClient1"
    [CLASS:TStatusBar; INSTANCE:1]
    [CLASS:TSpeedBar; INSTANCE:1]
    [CLASS:TPanel; INSTANCE:1]
     
    Но это работает на одном и не работает на другом компе (что меня и беспокоит)

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 10:37 18-03-2009
    sproxy



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

    Цитата:
    Я привел как пример вложения INSTANCE:4....INSTANCE:1

    подумал, что там кусок кода из программы )
     

    Цитата:
    Opt("WinTitleMatchMode", 4)  
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:4]", "" , @SW_HIDE )  
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:3]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:2]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanelCanvas; INSTANCE:1]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanel; INSTANCE:4]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanel; INSTANCE:3]", "" , @SW_HIDE )  
    WinSetState("[CLASS:TPanel; INSTANCE:2]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TPanel; INSTANCE:1]]", "" , @SW_HIDE )  
    WinSetState("[CLASS:TSpeedBar; INSTANCE:1]", "" , @SW_HIDE )      
    WinSetState("[CLASS:TStatusBar; INSTANCE:1]", "" , @SW_HIDE )

     
    так ту у Вас обращение по Class-у окна, а не по Заголовку.
    Думаю нет смысла менять: Opt("WinTitleMatchMode", 4)  
     
     
    Кстати, а что за прграмма? Спеифичная?
     
    Добавлено:
    SokSan 10:37 18-03-2009
    Цитата:
    Но это работает на одном и не работает на другом компе (что меня и беспокоит)

    это и правда интересно )))
     
    так все же, развернуть основное окно без скрыти дочерных не получается?

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 10:39 18-03-2009
    SokSan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     Цитата:  
    А библиотеки у вас уже все подключенны.  
     
    Вот я и пытаюсь это выяснить
     
     Вначале программы у меня прописано:
     
    #include <GUIConstants.au3>  
     
    Opt("WinSearchChildren", 1)  
    Opt("WinTitleMatchMode", 2)  
    Opt("WinDetectHiddenText", 0)  
     
    может надо еще чё?
     
     Цитата:  
     ? для того, что бы развернуть основное окно, думаю это не надо.
    ведь дочерные окна все равно остаются, просто не видны...  
     
    Это проверено на практике - пока из не закроешь- не разворачивается
    хотя с некоторыми окнами такое проскакивает.

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 10:45 18-03-2009
    sproxy



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

    Цитата:
    ControlHide("Untitled -", "", "MDIClient1")

    тогда тем более это не окна - работать с ними надо,
    как с объектами окна.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 10:46 18-03-2009
    SokSan

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

    Цитата:
    так ту у Вас обращение по Class-у окна, а не по Заголовку.
    Думаю нет смысла менять: Opt("WinTitleMatchMode", 4)  
     
     
    Кстати, а что за прграмма? Спеифичная?  

    Программа OziExplorer  
    Дело в том что в заголовке присутствует название под груженной карты которая может меняться  
    Поэтому я использую класс и или часть заголовка  
    типа:
    ControlHide("OziExplorer - ", "", "[CLASS:TPanel; INSTANCE:1]")
     
     
    Opt("WinTitleMatchMode", 4) действительно не влияет ....
     

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 10:53 18-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ....хм, а посмотрите еще раз в AutoIt Info
    на дочерном окне какой у него Class -  
    именно тот, котрый под строкой Titles.
     
    И впишите его:
     
    WinSetState("[CLASS:тут вписать классс который показан под строкой титле]", "" , @SW_HIDE )  
     
    вот тут:

    Цитата:
    WinSetState("[CLASS:TPanel; INSTANCE:2]", "" , @SW_HIDE )      

    был вписан не Class окна, а Advanced Class GUI объекта окна.
     
    Добавлено:
    к примеру PhotoShop CS4.
    В нем есть панель со списокм слоев, для нее будет так:

    Код:
    ControlHide('[CLASS:OWL.Dock]', '', '[CLASS:PSViewC; INSTANCE:12]')

     
    хотя у основного окна PhotoShop Class такой:
    Цитата:
    '[CLASS:Photoshop]'

     
    Добавлено:

    Цитата:
    >>>> Window <<<<
    Title:    Adobe Photoshop CS4 Extended
    Class:    Photoshop
    Position:    180, 95
    Size:    1430, 890
    Style:    0x96CF0000
    ExStyle:    0x00000100
    Handle:    0x00090248
     
    >>>> Control <<<<
    Class:    DroverLord - Window Class
    Instance:    1
    ClassnameNN:    DroverLord - Window Class1
    Advanced (Class):    [CLASS:DroverLord - Window Class; INSTANCE:1]

     
    >>>> Window <<<< - это все для окон
    >>>> Control <<<< - это только для элементов окна
     
    Добавлено:
    т.е. в функциях типа:
    Цитата:
    WinSetState ( "title", "text", flag )

     
    вместо "title" можно указать Class окна - но только окна, а не GUI объекта.
     
    может в этом ошибка ? ))

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 11:22 18-03-2009
    SokSan

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

    Цитата:
    ...хм, а посмотрите еще раз в AutoIt Info
    на дочерном окне какой у него Class -  
    именно тот, котрый под строкой Titles.
     
    И впишите его:
     
    WinSetState("[CLASS:тут вписать классс который показан под строкой титле]", "" , @SW_HIDE )  
     

    Я это понимаю, но беда в том что AutoIt Info для всех окон программы показывает один и тот же  класс TfmMainForm  
     
     
     
    Добавлено:
    Это основное окно программы:
    >>> Window <<<<
    Title:     OziExplorer - N-40-040.jpg
    Class:    TfmMainForm
    Position:    2, 57
    Size:    747, 566
    Style:    0x16CF0000
    ExStyle:    0x00010100
    Handle:    0x00080784
     
    >>>> Control <<<<
    Class:    
    Instance:    
    ClassnameNN:    
    Advanced (Class):    
     
     Это окно надо развернуть:
    >>>> Window <<<<
    Title:     OziExplorer - N-40-040.jpg
    Class:    TfmMainForm
    Position:    2, 57
    Size:    747, 566
    Style:    0x16CF0000
    ExStyle:    0x00010100
    Handle:    0x00080784
     
    >>>> Control <<<<
    Class:    TScrollBox1
    Instance:    1
    ClassnameNN:    TScrollBox11
    Advanced (Class):    [CLASS:TScrollBox1; INSTANCE:1]
     
     
    А это окно надо "погасить" (одно из)
    >>>> Window <<<<
    Title:     OziExplorer - N-40-040.jpg
    Class:    TfmMainForm
    Position:    2, 57
    Size:    747, 566
    Style:    0x16CF0000
    ExStyle:    0x00010100
    Handle:    0x00080784
     
    >>>> Control <<<<
    Class:    TStatusBar
    Instance:    1
    ClassnameNN:    TStatusBar1
    Advanced (Class):    [CLASS:TStatusBar; INSTANCE:1]

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 11:32 18-03-2009
    sproxy



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

    Цитата:
    OziExplorer -

    значит все эти "дочерные окна" принадлежат одному окну -
    и соостветсвенно это не окна, некие панели окна с классом: TfmMainForm.
     
    мож так:

    Цитата:
    ControlHide("[CLASS:TfmMainForm]", "", "[CLASS:TPanelCanvas; INSTANCE:1]")
    ControlHide("[CLASS:TfmMainForm]", "", "[CLASS:TPanel; INSTANCE:1]")
    ControlHide("[CLASS:TfmMainForm]", "", "[CLASS:TSpeedBar; INSTANCE:1]")

     
    Добавлено:
    Вот так:

    Цитата:
    ControlHide("[CLASS:TfmMainForm]", "", "[CLASS:TStatusBar; INSTANCE:1]")

     
    тут везде Title окна: "OziExplorer - N-40-040.jpg"
    то, что надо "погасить" - это точно не окно, а GUI объект окна.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 11:43 18-03-2009
    SokSan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да наверно у меня не все в порядке с терминологией
    Окно действительно одно, а остальное его элементы
     
    Попробовал поставить  
    [CLASS:TfmMainForm]  
    вместо  "OziExplorer - "  
    здесь все работает. Но на этом компе работало и раньше с "OziExplorer - "
    (здесь не работало с командами WIN )  
     
    А на компе где не работает с командами  Control могу проверить только вечером  
     
    Но не уверен в результате Мне кажется что не хватает какой то внешней библиотеки
    В любом случае БОЛЬШОЕ СПАСИБО за содействие!

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 12:12 18-03-2009 | Исправлено: SokSan, 14:44 18-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SokSan 12:12 18-03-2009
    Цитата:
    не хватает какой то внешней библиотеки

     
    если использовать только:

    Цитата:
    WinSetState
    и
    Цитата:
    ControlHide

    то все у Вас подключенно ))
     
     
     
    Добавлено:

    Цитата:
    Да наверно у меня не все в порядке с терминологией

    все нормально, это дело наживное.
    просто если @SW_HIDE - это все таки не  закрыть,
    а скрыть (спрятать).
    ...просто додумать я могу разное. а если сразу все назвать более
    понятно и более конкретно - то и ответ будет ближе к искомому ))

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 18:44 18-03-2009
    Regard1980

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет Всем. Помогите пожалуйста решить проблему  
     
     
    <table border="0" cellpadding="0" cellspacing="0">
            <tr class="button1" onclick="CCUtility.crtCtrla(this, 'subscriberListExt=Export='+ document.getElementById('subscriberListExtExportVar').value,'_subscriberListExtExportForm');">
                <td><img src="images/buttons/multipart/type1/L.gif" alt="" title='Выгрузить в Excel' width="12" height="19" border="0"></td>
                <td class="button1Icon" nowrap><img src="images/icons/excel.gif" alt="" title='Выгрузить в Excel' width="13" height="19" border="0"></td>
                <td><img src="images/buttons/multipart/type1/R.gif" alt="" title='Выгрузить в Excel' width="12" height="19" border="0"></td>
            </tr>
    </table>
     
    При нажатии на картинку которая состоит из трех частей выполняется скрипт ( который формирует файл и вызывает окно сохранения ).  Помогите запустить этот скрипт с помощью Autoit.  

    Всего записей: 2 | Зарегистр. 15-03-2009 | Отправлено: 22:53 18-03-2009
    SokSan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy
    Проверил вечером - ВСЕ РАБОТАЕТ! Большое СПАСИБО за помощь!!
     
    Но честно говоря по моему запутался еще больше, учитывая что, разворот рабочей области окна во весь размер окна это только маленькая часть задачи по автоматизации управления программой.
     
    Если посмотреть по справки то команда  
    ControlHide ( "title", "text", controlID)  
    подразумевает  именно  использования заголовка окна "title"
    И по описанию надо бы использовать использовать опцию
    Opt("WinTitleMatchMode", где  ;1 - с начала, 2 - подстрока, 3 - точное совпадение, 4 - В качестве параметра title можно использовать описатель (дескриптор).  
    т.е. в моем случае при написании  
    ControlHide("[CLASS:TfmMainForm]", "", "[CLASS:TPanelCanvas; INSTANCE:1]")  
    надо бы по правилам ставить 4 но как показала практика — это никак не влияет на программу

    Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 08:54 19-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SokSan 08:54 19-03-2009
    Цитата:
    И по описанию надо бы использовать использовать опцию  
     Opt("WinTitleMatchMode", где

     
    1. Все правильно. Если бы Вы использовали:
    Цитата:
    ControlHide ( "OziExplorer -", "text", controlID)
    так как в этом случае: ищется элемент, controlID которого равен controlID, из окна у которого title равен OziExplorer -, и в окне встречается текст text.
     
    2. А есл пользовать:
    Цитата:
    ControlHide("[CLASS:TfmMainForm]", "", "[CLASS:TPanelCanvas; INSTANCE:1]")
    то происходит: поиск элемента, controlID которого равен [CLASS:TPanelCanvas; INSTANCE:1], из окна у которого class равен [CLASS:TfmMainForm], при этом текст в окне может быть любой.
     
    Поэтому в первом случае ищется окно по title(заголовку), а во втором по class(классу) окна.
    Соответсвенно в первом случае WinTitleMatchMode будет иметь эффект,
    а во втором нет.
     

    Цитата:
    Если посмотреть по справки то команда  
     ControlHide ( "title", "text", controlID)

    Если смотреть принципиально - то верно. Но есть мини ремарка в той же справке:  
    Применение AutoIt > Заголовок и текст окна (дополнительные возможности) > Дополнительное описание искомого окна
    там подробно описанно, как и что можно указывать в "title"
     
    то же самое на ENG
     
     
     
    Добавлено:
    Regard1980 22:53 18-03-2009
    Цитата:
    При нажатии на картинку которая состоит из трех частей выполняется скрипт ( который формирует файл и вызывает окно сохранения ).  Помогите запустить этот скрипт с помощью Autoit.  

    вот так можно кликнуть на средную картинку:

    Код:
    #include <IE.au3>
    ;~ тут код открытие и получение нужной страницы
    _IEImgClick ($oIE, "images/icons/excel.gif", "src")

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 16:33 19-03-2009
    ziii



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А может ли AutoIT так же гибко заменять обработку клавиш / мыши, как AutoHotkey?
     - http://forum.ru-board.com/topic.cgi?forum=5&topic=16053&start=100#16
     
    Например: нажатие доп.кнопки мыши+прокрутка колёсика?

    Всего записей: 405 | Зарегистр. 09-08-2007 | Отправлено: 21:39 20-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ziii 21:39 20-03-2009
    Цитата:
    А может ли AutoIT так же гибко заменять обработку клавиш / мыши, как AutoHotkey?

    Если есть желание сделать замену PS, то поработать придется не мало ))
    а Keyboard Ninja не подходит?
     
     
    Добавлено:
    по стандартной справке у них схожие возможности.
    к томуж с учетом их единого предка ))

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 21:46 20-03-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