![]() |
[Архив] AutoIt скрипты - автоматическая установка
приложений
![]() Внимание! Вы читаете версию для печати архивной темы по Autoit. Все темы по Autoit, включая текущее обсуждение, можно найти по этой ссылке. Руководство к действию
по работе c AutoIt. Ну во превых, к моему удивлению, утилита (и компонента activeX) уже успела обновиться до версии 3.1.0 (7 фев 2005) и заполучить множество дополнительных функций (появилась возможность создавать граф. интерфейс к своим скриптам :). К сожалению русскоязычной справки пока нет. Скачать можно здесь Почему лишь руководство? Потомучто к программе прилагается обширная справка с описанием самой программы и команд, в т.ч. и на русском языке. Основные команды используемые в нашем случае в новой версии не поменялись. Я рассмотрю лишь самые азы, кот. необходимы для создания самого простого скрипта, в принципе этого достаточно для установки практически любой программы, просто знание дополнительных команд позволят сделать скрипт более компактным и красивым. На сегоднящний день имеется 2 распространненых способа по автоматизации установки 1. Использование утилиты AutoIt и файлов скриптов au3, кот. в последствии можно компилировать в исполнимые файлы exe, не требующие утилиты AutoIt.exe 2. Использование VBS и JS скриптов, этот способ можно расширить за счет использования activeX компоненты - autoitX (к слову сказать - я пользуюсь именно этим методом). Для примера создадим скрипт по установки Alcohol120%. Самое неприятное в его установки это окно с подтверждением установки SCSI драйвера. Это мы и поправим. Цитата:
Скрипт и утилита autoit3.exe будет лежать рядом с дистром, и будет запускаться перед запуском дистрибутива. Создадим файл с названием alc120.au3 в win1251 кодировке Теперь нужно заблокировать клавиатуру и мышь чтобы наглый пользователь не нажал что-нибудь или не сменил случайно фокус с активного окна во время работы скрипта. 'Блокировка клавы и мышки (многие команды предназначены для посыла в активное окно) BlockInput(1) Скрипт запустился и теперь ожидает запуска инсталяра и появление сигнального окна, кот. сообщит скрипту что программа запущена и можно продолжать выполнение скрипта. Для того чтобы узнать название окна нужно использовать спец. утилитку AU3Info.exe, кот. входит в комплект дистрибутива autoit. Запускаем ее, после чего запускаем дистрибутив Alcohol120% и доходим до того места где вылазит окно Мастер нового оборудования с вопросом об установке SCSI адаптера. Активируем его кликнув по заголовку мышкой и жмем CTRL+ALT+F, в результате в окне AU3Info информация о текущем окне зафиксируется: Цитата:
копируем название этого заголовка, там же можно посмотреть текст наличествующий в этом окне, если необходимо. Цитата:
'Ожидание окна установки SCSI адаптера (в зависимости от языка винды заголовок будет разным) WinWait ("Мастер нового оборудования","", 0) WinWait ( "title" [, "text" [, timeout]] ) title - название окна кот. ожидает скрипт для продолжения работы, text - любой текст в этом окне, нужен если последующее окно после нажатия кнопки, имеет такой же заголовок timeout - таймаут, время через кот. ожидание прекратиться, 0 - никогда 'Пауза на 500 мс на всякий случай, для слабых машин, чтобы окно успело обновиться Sleep (500) После того как окно с нужнымм заголовком появилось, скрипт должен послать активному окну клавишу ENTER, в результате будет нажата кнопка по умолчанию (в нашем случае "далее"). Список клавиатурных нажатий см. в справке. 'Послать в активное окно нажатие клавиши ENTER Send ("{ENTER}") Далее продолжится устанока SCSI адаптера вплоть до появление последнего окна с предложением закрыть мастер. 'Ожидание окна окончания установки SCSI адаптера WinWait ("Мастер нового оборудования","Для закрытия мастера", 0) 'Ждем 600 мс. для того чтобы окно успело обновиться Sleep (600) Теперь нам нужно нажать клавишу готово, можно воспользоваться тем же методом что и выше Send ("{ENTER}"), но для разнообразия воспользуемся другим, не всегда ведь нам нужна будет кнопка по умолчанию кот. нажимается клавшей ввод. Используем метод ControlClick, кот. позволяет кликнуть по определенному объекту в окне исходя из его идентификатора (Control ID) или Названия Класса (ClassName). Чтобы узнать то или другое используем вышеупомянутую утилитку AU3Info, только теперь подводим курсор на нужную кнопку и смотрим на параметр "ClassNameNN", копируем значение Button9, и используем в скрипте. Цитата:
'Послать в указанное окно ControlClick для кнопки с назв. класса Button9 ControlClick ("Мастер нового оборудования","Для закрытия мастера", "Button9") ControlClick ( "title", "text", controlID [, button] [, clicks]] ) title - название окна кот. ожидает скрипт для продолжения работы, text - любой текст в этом окне, нужен если последующее окно после нажатия кнопки, имеет такой же заголовок controlID - собственно идентификатор button - какую кнопку использовать "left", "right" или "middle clicks - количество кликов Последнее что нужно сделать - снять блокировку с клавы и мышки. 'Снятие блокировка клавы и мышки BlockInput(0) После этого скрипт завершается, а алкоголик заканчивает установку. Теперь нужно проверить работу скрипта. Cоздаем бат-файл: Цитата:
В процессе выполнения скрипта в трэе появится занчок с буквой A, кот. показыает что скрипт выполняется, после отработки он исчезнет, если в процессе установки возникли проблеммы жмем CTRL+ALT+DEL (даже если клава заблокирована) и снимаем процесс autoit3.exe. Если скрипт отлажен и проблем не возникает, для удобства можно скомпилировать его в .exe файл (содержит в себе утилиту autoit3.exe и скрипт .au3, кот. исполняется). Для этого можно воспользоваться утлитой Aut2Exe.exe (входит в комплект с дистрибутивом autoit3). Если нужно будет в последствии что-то изменить в скрипте, то полученный .exe файл можно будет конвертнуть назад в .au3 с помощью другой утилиты Exe2Aut.exe Что касается 2го способа установки, то просто приведу пример, установки Alcohol120%, кот. использую я Цитата:
В заключение хочу сказать что AutoIt это не только и не столько средство для автоматизации установки различных приложений, это скриптовый язык для автоматизации работы с приложениями, окнами, файлами и реестром с помощью него вполне реально создать небольшую програмку. --------------------------------------------------------------------------------------------------- Разобранный здесь скрипт тестировался в vmware 4.5 на WinXP.rus SP2, если кто-то заметит ошибки пишите. Кстати потестите кто-нить этот скрипт, я давно уже этим делом не пользовался мог где-то напутать. |
Статья Клас :) Только я непонял чем лучше autoitX |
Думаю ешё надо добавить про Переменные и настройки
AutoIt. Переменная должна начинаться с символа $ и может содержать буквы, цифры и символы подчеркивания _. Цитата:
Продолжительность паузы между последовательными симуляциями нажатий клавиатуры. Время в миллисекундах. Цитата:
Отображать или нет текущую строку сценария с помощью индикатора системной панели в режиме отладки. Полезно для отладки скриптов Цитата:
Отображать/Скрыть в системной панели индикатор AutoIt. Цитата:
|
D@nil Сам по себе autoitX ничем не лучше, скорей даже наоборот по функционалу уступает, а у меня он используется как расширение функций vbs-cкриптов. При использовании такой связки чуть меньше гемора и чуть больше возможностей. Т.е. если рассмотреть по шагам то получится Использование Autoit3.exe через CMD-файл или например WPI: 1. команда запуска скрипта через Autoit3.exe или компилированный скрипт 2. команда запуска устанавливаемого приложения 3. команда запуска возможных reg файлов 4. копирование дополнительных файлов По идее все это можно сделать через .au3, но как-то это некрасиво получится и громоздко :) Использование vbs, все 4 шага легко делаются в пределах одного VBS-файла, при этом не нужно использовать autoit3.exe или тем более компилить скрипт, этот же vbs можно использовать для обычной установке вне CD или DVD. Ага, переменные я оставил на потом, а про дебаг сам не знал :) |
EgOrus Где тогда должна лежать утилитка autoitX Т.К. файл alc120.vbs ссылается на AutoIt AutoIt.Sleep 600 AutoIt.Send "{ENTER}" |
autoit - это не утилитка, это объект ActiveX Set AutoIt = WScript.CreateObject("AutoItX.Control") - объявление объекта Autoit AutoIt.Sleep 600 - использование функции объекта Autoit, в данном случае функции sleep |
как ПРАВИЛЬНО отличить 2 "одинаковых" окна средствами
AutoIt?
Вопрос: как ПРАВИЛЬНО отличить 2 "одинаковых" окна средствами
AutoIt? Т.е., они конечно не одинаковые, одинаковы только все параметры окон отображаемые с пом. AutoIt Reveal Mode. Реально текст в окнах разный, но AutoIt Reveal Mode показывает только одинаковые строки. Я нашел в хелпе по AutoIt вот такую штуку: DetectHiddenText, <on | off> но, даже если она действительно определяет скрытый текст, непонятно как добраться до результата сией операции... Через WinGetActiveStats, <Title Var>, <Width Var>, <Height Var>, <Xpos Var>, <Ypos Var> не выйдет, т.к. эта функция не извлекает текст окна. Сначала я сделал так, но здесь те самые два окна с одинаковыми заголовками и текстом застопорили скрипт: (проблемный фрагмент я выделил красным цветом) Код:
Т.е. второе окно появилось и на этом все, а клик для активизации поля ввода серийника уже не проходит. Затем я таки поборол эту каку, но явно неправильным методом (3 сек. задержка + 2 двойных клика), т.к. в конце приходится убивать процесс (иначе он вызывает крит.ошибку). Правда, при этом информация о регистрации сохраняется. Код:
Какие буду идеи? |
Sanja Alone надо было в существующую тему добавлять. А какая у тебя версия autoit? reveal mode был в версии 2.x на сколько я помню Opt("WinDetectHiddenText", 0) и потом используешь WinWait ( "title" [, "text" [, timeout]] , но вместо text попробуй использовать hiddentext из второго окна |
Цитата:
Ну не посмотрел я, каюсь. Цитата:
Да, ты прав: версия 2.64. Когда-то скачал и не юзал, а теперь понадобилась. Сейчас качаю 3.1.0 - посмотрю, может там что-то придумали. Надеюсь, там уже есть определение окна по идентификатору. |
Установил, AutoIt v3. пытаюсь запустить что нить комадндой Цитата:
не прокатывает и все(( говорит, что "Unable to execute the external program" но все лежит именно по этому пути. может есь какой секре, хотя в хелпе ясно сказано как запускать exe и cmd файлы. |
type на сколько я помню, надо уазывать полный путь к программе, т.е. что-то типа c:\Install\adbacrob6.exe, можно использовать переменные окружения н-р: Run(@ProgramFilesDir & "\Alcohol Soft\Alcohol 120\Alcohol.exe") что касается твоего пути, то это рабочая папка, а не путь до программы |
ОО!!!!....зарабоооталааа)))) я Вам благодарен!) |
Вопрос из области флейма Блин такая дилемма - с одной стороны, можно с помощью AutoIt забабахать конкретный диск с кучей софта и не мучиться, а с другой стороны, охота все-таки взять, помучиться и все-таки заставить приложение ставиться в "тихом" режиме с "родными" ключами. Что делать? |
Debby Искать ключи на msfn'е, если нет пробовать самому исходя из инстолятора, а если уж и это не помогло то все равно придется мучиться пока скрипты составлять будешь :) |
Короче, обошел я эту гадость с одинаковыми окнами (они оказались
абсолютно одинаковы даже для AutoIt Window Info). Обошел опять не совсем правильно, но влазить в функции с указателями мне не хотелось (уж сильно мутно): Код:
Жаль, что в новой версии AutoIt нельзя работать с элементами:
Пример последнего - выбор компонент в установщиках K-Lite Codec Pack (по идее, можно применить silent.inf файл, но у меня параметр components=... игнорируется напрочь) |
Спасиб Sanja Alone метод WinSetTitle удобный, Возьму на заметку |
Как можно в текстовое поле ввести значение. а то ввожу WinWait("AutoCAD 2002 Setup","&Serial Number:") Send("{4}") Send("{0}") Send("{0}") Send("{TAB}") Send("{1}") Send("{2}") Send("{3}") Send("{4}") Send("{5}") Send("{6}") Send("{7}") Send("{8}") Send("{TAB}") Send("{T}") ...... ну и в таком духе, как можно ввести в поле сразу все значение? |
type Можно. WinWait("AutoCAD 2002 Setup","&Serial Number:") Send("400" & {TAB} & "12345678" & "{TAB}" & "T") А вобще смотри справку к AutoIt3 :beer: |
точно точно....D@nil так есть...надо читать хелп... Цитата:
ток у меня без кавычек для {TAB} не нработает т.е. надо так Send("400" & "{TAB}" & "12345678" & "{TAB}" & "T") Но ты выручил...спасибо.!!)) |
Ребята у меня проблема!! Устанавливаю скриптом VirtulСD, пробую без компиляции все ок работает. Потом кампилирую как написано к руководстве. После кампиляции у меня получается вместо 29мбайтного файла установки 100кб? В чём проблема подскажте?? |
Aspirine При компиляции, получается *.exe файл с тем же, что и у *.au3 именем. В твоем случае итоговое имя совпадает с именем файла-установщика самой проги VirtualCD и он перезаписывается поверх. Просто смени имя *.au3 файла, скажем на autoit_vcd.au3, тогда при компиляции получишь autoit_vcd.exe. А вообще, на кой тебе этот VirtualCD? Тот же Alcohol прекрасно монтирует его файлы *.vcd и *.000 (только при их добавлении, в списке нужно выбрать "все файлы", а не "все поддерживаемые образы") А если нужно создавать образы CD/DVD самостоятельно добавляя/удаляя файлы/каталоги, то можно воспользоваться UltraISO. К тому же, UltraISO понимает наверное все форматы образов, и может их конвертировать в iso, nrg, ccd, bin. P.S. Я когда-то тоже юзал VCD (v4 и немного v5), но тогда это был чуть-ли не единственный нормальный эмулятор. Все течет, все меняется... (C) не мое ---------------------------- type В твоем варианте посылки строкой символов, на слабой машине TAB может просто не успеть перевести фокус (если не увеличить "SendKeyDelay") на другое поле и будет бяка. IMHO, правильнее (и быстрее) будет не симулировать нажатия клавиш, а непосредственно ввести данные в соотв. поле. В какое? - посмотри с пом. AutoIt Window Info. Вот, как пример (установка Ultra ISO v7.5.1.965): Код:
Есть еще один плюс такого подхода - никакие автопереключатели раскладки (Punto Switcher и т.п.) не испортят ввод серийников. |
Sanja Alone Огромное спасибо!!!!! Всё прекрасно заработало. Я сам нелавно начал изучать autoit крипты, поэтому ошибаюсь на лёгком и часто... Насчёт VirtualCD. Я диск другу делаю, котрый в компах ни буи-бум, и не желает учиться работать с другими прогами(он до сизх пор пользуется v4.3 если не ошиюбаюсь..) Сам я ЮЗАЮ АЛКОГОЛЬЧИК. |
Aspirine Всегда рад помочь. А юзать Autoit я тоже недавно начал - около недели назад (да еще сдуру с версии 2.64). Потом пришлось по-быстрому переписать готовые скрипты под версию 3.1.0. Правда, конвертер немного помог :-) Сегодня поеду знакомому винду ставить - посмотрю на работу своего unattended-сидюка на реальной, а не вирт. машине... |
Вопрос к специалистам по AutoIt. Допустим, мне нужно изменить некую
настройку в программе. Настройка выставляется при помощи чекбокса. Я не
знаю отмечен чекбокс или нет, т.к. некоторые юзеры могли его отметить.
Можно ли при помощи AutoIt выполнить проверку (отмечен или нет) и
соответственно отметить чекбокс только в случае, если он не
отмечен? |
вышла в прошлом месяце AutoIt v3.1.1 http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe русская справка http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/russian-v3.0.102.zip |
Vadikan. Можно. Autoit Это позволяет ControlCommand ( "title", "text", controlID, "command", "option" ) option: IsChecked, "" (вернуть 1, если Button отмечена) Check, "" (отметить radio или Button) UnCheck, "" (снять отметку radio или Button) |
jurikorn Спасибо! Видимо придется мне разбираться с AutoIt (а так лень было это делать ;-), если не найду другого решения своей задачи... |
Вникнув в проблему детальнее я не вижу как мне определить ControlID в
моем окне. Это Word 2002, окно Tools | Options. Похоже все эти чекбоксы не
имеют индивидуальных ControlID. Через реестр, похоже, тоже не вариант, т.к. regshot отслеживает такой ключ Код:
|
Как определить Имя компьютера или его IP адрес? С помощью _GetIP из справки возвращается значение -1. |
Существуют макрокомманды: @IPAddress1 IP адрес первого сетевого адаптера. Может вернуть и просто 127.0.0.1. @IPAddress2 IP адрес второго сетевого адаптера. Равен 0.0.0.0, если отстутствует. @IPAddress3 IP адрес третьего сетевого адаптера. Равен 0.0.0.0, если отстутствует. @ComputerName Сетевое название ПК. |
Тут кто-то интересовался автоустановкой Lingvo. Я иногда юзаю
этот словарик, ну и решил замутить скрипт автоустановки для своего
Unattended DVD-юка. Для автоустановки потребуются: 1. Образ первого сидюка Lingvo 10 Multilingual - LV10ML.iso (тупо скопировать содержимое сидюка в какой-либо каталог на автоустановочном CD/DVD и запустить setup.exe не получится - потребует вставить родной диск; с образа все работает) 2. Образ установочной дискеты Lingvo - ling10me_flp.ima (в zip-е всего-то 2Кб, но немогу прикрепить - меня назовут пиратом и заклеймят позором :( ) 3. Virtual Floppy Driver некоего Kenji Kato - (нужны 2 файла vfd.exe и vfd.sys) 4. Предварительно установленный и 1 раз запускавшийся Alcohol 120% или DaemonTools с хотя бы одним вирт. приводом в системе 5. Нижеприведенный скрипт (Все файлы должны лежать в одном каталоге, 2 файла vfd - в подкаталоге vfd) Код:
P.S. Устанавливается Lingvo долго (до 10 мин.), самый тормозной этап - "установка индекса" на образ дискеты. А когда индикатор "установки индекса" доходит почти до конца, может показаться, что комп (или мой скрипт) завис. Так и должно быть. Эх, где-то я такое уже видел... :) |
Возникла такая проблема: при установке программы необходмо импортировать данные из reg файла делаю так Код:
Установка производится до первой загрузки Windows(RunOnceEx.cmd), но почему то запись в реестр не происходит ? Самое интересное то, что если уже когда Windows загрузилась запусить этот же файл установки то данные в реестр экспортируются. Может кто подскажет решение этой проблемы ? |
Solitude Попробуй так: Код:
|
Sanja Alone Не работает... :-(( |
Solitude Ну можешь еще так попробовать: Код:
Чуть не забыл - все эти варианты работают только если reg-файл и скрипт находятся в одном каталоге. В противном случае, нужно писать полный путь. И еще одно - пробелы внутри кавычек (' ') стоят все по делу, а не для красоты - не удали случайно. P.S. С моего автоустановочного диска все ставящиеся проги (с пом. WPI, к-рый действует также через RunOnceEx) вносят изменения в реестр именно первым способом (см. предыдущий пост) - все данные импортируются. |
Sanja Alone Вот этот спопсоб Код:
сработал Спасибо!! |
2 all Возникла проблемка с Некоторыми комбинациями клавиш: Код:
Эта комбинация (Впрочем ALT+[любая другая буква]) отлично выполняется в 2000 и ХР. А в 98, такое впечатление, игнорируется. Кто нибудь с таким сталкивался? С чем это связано? Какие еще команды глючат? И как с этим бороться Прога качана по ссылке piterpen |
2 all Здравствуйте, всем! Помогите решить такую проблему: при установке приложения нужно изменить путь установки, так, чтобы не прописывать точный путь, а указать текущую системную папку Program Files (т.е. как-то указать не C:\Program Files\... , а %systemdrive% или %programs%). Ну никак не хочет :( |
godoo так Код:
пробовал? |
2 all Вопрос про комбинации клавиш снимается. Как оказалось в Win98 команда Send некоректно отрабатывает при заблокированной клавиатуре и мышке (BlockInput(1)) Если клавиатуру не блокировать - все комбинации клавиш работают нормально 2 godoo Скачай хелп - там описаны все переменные понимаемые AutoIT. Раздел Указатель Макро |
Madcap, спасибо за совет, но это я пробовал и хелп прочитал... Вся проблема в том, при такой замене пути установки: WinWaitActive ( '', 'Выбор директории установки...' ) ControlSetText ( '', 'Выбор директории установки...', 'Edit2', '@ProgramFilesDir\Software\' ) вылезает окно: Директория @ProgramFilesDir\Software не может быть создана. Укажите другой путь. Работает только с полным заданием пути.:( |
godoo Сегодны экспериментировал с тоталом, получилось вот так: Код:
|
пример скрипта скрипт сравнивается с часами другого компьютера и каждые два часа качает фаил в заведомо созданую папку. как можно грамотно урезать , а то через чур большой Код:
|
Madcap, при таком способе перед тем путем, который стоит
появляется вот это: :\Ё ЁЁЁ Ё\Ё Ё ЁЁ ЁЁ\ |
На счет удаления предыдущего пути - можно послать в это окно кучу
{DEL}ов. На счет Цитата:
|
2 all Скажите, плс, есть ли в этой проге какой нибудь аналог команды GO TO ? |
Madcap В хелпе написано такое (FAQ - 4. Where is the "goto" command?): Цитата:
Короче говоря, что-то подобное есть, а если goto требуется не в бесконечном цикле, то нужно (imho) использовать маркерную переменную как-то вот так: Код:
|
godoo Цитата:
Ты все правильно в хелпе прочитал, но недочитал... Макросы (@ProgramFilesDir и т.п.) не берутся в кавычки, а объединяются со строками с пом. оператора объединения строк - & Т.о., приведи код к такому виду: Код:
И еще один момент: ты используешь директиву ControlSetText, и, следовательно, никаких del-ов посылать не нужно, т.к. в этом случае значение элемента Edit2 будет перезаписано новым и тебе не нужно беспокоиться о его начальном значении) |
ched3n Красивее будет сделать так: 1. Заменяешь #include и _RunDos на RunWait(@ComSpec & ' /C твоя_команда', '', @SW_HIDE); 2. Приводишь скрипт к виду: Код:
P.S. Синтаксис команд net use/time я оставлю на твоей совести, но на правильный он непохож; к тому-же, net use к синхронизации времени не имеет никакого отношения. |
спасибо за помощь net use \\comp /user:user password авторизируется на удаленном компьютере net time \\comp /set /yes синхронизирует время локального компьютера с удаленным |
Sanja Alone Большое спасибо. |
Ребята, все получилось!!! ОГРОМНОЕ ВАМ СПАСИБО!!! |
Мой первый скрипт! Установка FAR Manager, можете меня поздравить. И не говорите, что Фар можно как то проще поставить. Если просто разархивировать его в соответствующию директорию получится, во-первых, отсутствие ярлыков, во-вторых, в путях его системных не будет... В общем этот вариант самый оптимальный. Вот текст: BlockInput(1) Run("Far1705.exe") WinWait("FAR version 1.70 beta 5","",0) Sleep(1000) Send("{TAB}") Send("{ENTER}") WinWait("The FAR manager SETUP","&Folder to install FAR",0) Send("{ENTER}") WinWait("The FAR manager SETUP","Done",0) Send("{ENTER}") WinClose("FAR manager") BlockInput(0) |
молодца |
Izvr Цитата:
Я этот вопрос решил просто - у меня Far со всеми плагинами ставится из rarsfx-архива. Т.о., можно создавать стандартные ярлыки и запускать до/после извлечения команду/файл на выполнение (в данном сл. - импорт настроек в реестр regedit /S settings.reg, где settings.reg=FarSave1.reg+FarSave2.reg). Цитата:
Это ты о чем? ВСЕ свои настройки Far хранит в реестре. Файлы SaveSettings.bat и RestoreSettings.bat в каталоге Far-а ты видел? Эти файлики сохраняют и восстанвливают настройки Far-а (в/из файлы/файлов FarSave1.reg и FarSave2.reg). А в системную переменную Path Фар себя вообще не пишет, да и новых переменных не создает. Теперь по сути. В скриптах, вместо WinWait лучше использовать WinWaitActive или связку WinWait + WinActivate. Во-первых, это избавляет от необходимости угадывания времени Sleep-а, и, во-вторых, позволяет избежать проблем с последующим несвоевременным нажатием клавиш. И еще одно замечание: не нужно в функциях ожидания окон задавать нулевые таймауты. Смысл таймаута такой - ждать X окно не более Y секунд и в любом сл. идти дальше. При таймауте=0 будет сделана одна проверка на наличие искомого окна и сразу будет выполнена следующая функция, что также может вызвать проблемы, т.к. посылаемая комбинация клавиш передастся не в активный элемент окна, а х.з. куда (по ум. пауза для оконных операций у AutoIt составляет всего 250 мс). Для окон установщика Фара этого с головой хватает, но ведь может попасться приложение и с загаженными всяким мусором, медленно появляющимися окнами. Установка Far-а: Код:
|
Sanja Alone Цитата:
Ну а как тогда объяснить то, что я могу набрать в Run far и он у меня откроется? Я, конечно, допускаю возможность положить одноименный ярлык куда-нибудь в C:\windows, но мы не знаем всего того, что вшили разработчики в свой installer(так как они его к примеру залочили), так что SFX как то не очень надежно получается... Цитата:
Спасибо, учту... Цитата:
а "0" по моему бесконечность означает!? так что это вполне оправдано, но может быть я и не прав... |
Izvr Цитата:
Да уж, давно я дедовским способом Far не ставил... Сейчас проверил на вирт. машине - действительно он добавляет свой путь в Path. Мне только не ясно одно - зачем? Ведь если запустить Фар из Run-а, то на него без боли смотреть просто невозможно и все юзеры (любящие комформ) запускают Фар с пом. ярлыка, к-рый редактируют "под себя". Но если ты экстремал, то можешь добавлять путь Far-а к Path-у с пом. включения в архив маленькой утилки setenv.exe (35 328 байт) и батника примерно такого содержания: Код:
У меня из подобного файлика (ес-но, без setenv) еще и шрифт в Винду добавляется для понимания Фаром укр. буковок. И пусть тебя не беспокоят "лишние" файлы в каталоге установленного Фара. Если Фар придется когда-нибудь удалять (в сязи с острым приступом тоталкоммандеризма или еще чего-то пострашнее) то заставить Фар удалить и эти файлы можно просто дописав их имена в файл Uninstall.lst в каталоге Фара. Цитата:
Бесконечность означает отсутствие данного параметра, а 0 означает именно то, что я написал выше. |
Sanja Alone Ты неправ, 0 означает бесконечность. Попробуй запусти 2 нехитрых скрипта: Код:
и Код:
|
Цитата:
Я создаю решение не для себя, а для работы. Так что мне пофиг, кому надо настроят. А вообще я пользуюсь консолькой, поэтому набрать far для меня проще, чем тыкаться в ярлык. За утилитку спасибо. |
Madcap Да, так и есть: WinWait ("Название окна","Текст", 0) дает такой же результат, как и WinWait ("Название окна","Текст"). Ну что тут сказать - такие выкрутасы должны быть описаны в справке. А там только сказано, что это "Timeout in seconds" и никаких ремарок (Remarks - None). Камень в огород писателей :) справки к AutoIt. |
могет совместно над чем нить поработаем хотя .... о чем это я |
to all Такая командочка: Код:
Неработает оператор or. Если появляется "Окно1" - все ОК скрипт продолжает выполняться. Если появляется "Окно2" - то скрипт висит. Что я делаю неправильно? |
Madcap Цитата:
Почти все :) Ты пытаешься связать логическим условием функцию и текст в скобках. А нужно делать так: Код:
|
Sanja Alone Все равно не работает :( тоже самое что и раньше - второе окно не хочет искать. Вот у меня маленький скриптик который, по идее, должен определить какое из двух видов окошек открылось Код:
но он не хочет работать. Может у меня руки кривые? Ткни пжлста пальцем где я еще обшибся. |
Madcap Гм, а тут ничего и не может работать - у функций ожидания окон таймауты равны бесконечности :) Рабочий вариант должен использовать другие функции (мгновенной проверки): Код:
Код:
|
Sanja Alone Честно говоря я думал что оператор or позволяет сделать проверку и с бесконечными таймаутами. Огромное спасибо. ЗЫ: Все таки это были кривые руки :) |
Рад приветствовать единомышленников! Уже более двух лет автоматизирую AutoIt'ом все, что можно и не можно. Начинал, естественно, с "автокликанья" по окошкам программ-установщиков. Но сейчас мне обидно за любимый AutoIt, когда его используют исключительно в этих целях. Мои скрипты отвечают за весь процесс установки системы, а также выполняют ряд полезных функций в текущей работе. Главное, что дал AutoIt, это более мощные и разнообразные инструменты, по сравнению с обычными батниками, и логику, по сравнению с обычными inf- и reg-файлами. Поделюсь несколькими фирменными приемчиками. Проверка на стадии cmdlines наличия железки и установка дров для нее: Код:
Доустановка после первой загрузки Windows дров, которые "не любят" стадию cmdlines: Код:
Создание Подключений и соответствующих Учетных записи OutLook через IPS-файл на основе данных пользователя (файл internet.ini) Код:
Где файл internet.ini имеет следующий вид Код:
Для перевода reg-файлов в коды AutoIt написал простенький макрос для Word: Код:
Буду рад, если что-нибудь кому-нибудь пригодится... |
Всем привет! У меня вопрос, так как нехотел создавать еще одну тему!
У меня есть скрипт "Lan XP SP2.vbs". Что он делает: запускает
"Мастер настройки сети" и настраивает локальную сеть, но после настройки
лок. сети открывает автоматом общий доступ к папке "Общие документы"
(SharedDocs) Код:
Так вот можно ли в этот скрипт прописать такую вещь с командной строки, котороя закрывает общий доступ к ней - "net share SharedDocs %userprofile%\Документы /delete". Как должна эта команда выглядеть в моем скрипте? И можно ли этот скрипт выполнить с cmdlines.txt, сработает ли он на 13-12 минуте до окончания установки Windows XP SP2? Спасибо!!! Код:
|
Не выходит установить Agnitum Outpost 2.7 через AutoIt: не
закрывается последнее окно, где спрашивается про перезагрузку компа. На это окно вообще ничего не действует. Подскажите пожалуйста, как же с этим можно справиться. Вот мой скрипт: Код:
|
DenchikK Попробуй "WinKill" или "ProcessClose". |
DenchikK Рабочий скрипт для установки Agnitum Outpost 2.7 Код:
|
bogomolv Sanja Alone Спасибо огромное! Я, кстати, разобрался, отчего у меня не работал скрипт - в окне Создать Конфигурацию я нажимал - автоматическая, и при установке AutoIT'ом почему-то сразу пропускался мастер и сразу выдавалось последнее окно. С этим то я разобрался. Родился новый вопрос, может быть подскажете: для автоматизации работы нужно запустить несколько приложений и брать оттуда некоторые данные. добавлять в другие и.т.д. Проблема в том, что прочитав справку и форум по AI, я так и не нашёл, возможно ли точно переходить в конкретнозаданное запущенное окно. А то метод Alt+Tab не всегда срабатывает. Заранее спасибо. |
DenchikK Цитата:
Activates (gives focus to) a window - WinActivate ( "title" [, "text"] ) |
DenchikK Sanja Alone Без "WinActivate()", конечно, не обойтись. Но можно оперировать вводом-выводом, и не активируя соответствующие окна: Код:
|
bogomolv Цитата:
Ну ты и монстр!!!! :)))) Давно думал как можно автоматизировать это безобразие, а ты как фокусник слона из кармана вытянул. СПАСИБО!!! |
Все супер! И AutoIt просто не заменимая вещь! Как я до него
жил - ума не приложу.. :) Так же не могу понять как собственно мне
получить код возврата кнопки "ОК" или "Cancel" при использовании функции
MsgBox??? Допустим, что-то типа: MsgBox (1, "", "Запускать? ") и необходимо обработать нажатие кнопки, и дальше отправить по условию, как это можно сделать, кто нибудь подскажет? Спасибо! |
vserd Рабочий скрипт немного сложнее: Код:
UncleGluk Если кто-то:) открыл бы AutoIt.chm, то без труда там нашел: Код:
|
bogomolv Цитата:
Спрашивали не об этом - я отвечал на прямой вопрос. А о том, что ты говоришь - я знаю, но без активации оно не всегда должным образом работает :( Да, ты мне напомнил - я пару месяцев назад для знакомого делал автоустановку ABBYY FineReader 7. Выкладываю для народа: Код:
Сама прога бралась отсюда (43 749 965 байт) Укр. язык (1 639 936 байт) - может кому и нужен :) |
Sanja Alone С интересом познакомился с использованием функции StringSplit(). Даже не знал о ее существовании. По оптимизации кода: а) пару десятков строк можно сэкономить, используя вместо Run('setup.exe /L1049') команду RunWait('setup.exe /L1049 /v/qb'); б) в одном случае из 10 введенный серийник оказывается неверным. Поэтому "зацикливаю" его ввод (см. пример); в) для настройки установленного FineRеader можно включить в скрипт RunWait('regedit /s FineRеader.reg') и FileCopy($iDir&'Untitled.fbt', $pDir, 1). Общие вопросы: б) зачем обнулять переменные на выходе из скрипта? в) категорически не согласен с использованием BlockInput(). Отлаженный скрипт может быть неожиданно прерван на чужой машине выскочившим окошком какого-либо сообщения Windows об отсутствующих дровах и т.п. Что делать в этом случае? То же самое относится и к Opt('TrayIconHide',1). Наоборот всегда включаю Opt('TrayIconDebug',1), чтобы можно было понять, чего ждет "зависший" скрипт. |
bogomolv Ой! :blush: да я не думал что все так просто! Начал чего то выдумывать и совсем потерялся, уйдя от правильной мыслишки! Спасибо! |
bogomolv Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Sanja Alone Про установку не "по умолчанию". А что не "по умолчанию" ты устанавливаешь? Как правило, все можно потом задействовать/отключить через реестр. Например, новостной канал отключается удалением ключа "FineReader7NewsReaderPro" в ветке HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Про FineRеader.reg и Untitled.fbt. Эти файлы воспроизводят личные пользовательские настройки. Настриваешь FR, сохраняешь через меню "Опции" в Untitled.fbt, копируешь. Незапоминаемые Untitled.fbt настройки интерфейса находим в реестре (ветка HKCU\Software\ABBYY\FineReader\7.00) и сохраняем в FineRеader.reg. Есть ли нужда пересылать их? Там все из разряда "мне так нравится". Про переменные $iDir и $pDir. Это имена папок "откуда и куда" идет установка. А ты что подумал? Про серийник. Иногда и 30 раз проходит с первого раза. А иногда через раз начинает ругаться, что неверный. М.б. это проблема конкретной версии... Про Ctrl+Alt+Del и BlockInput(0). Я знаю. Знаю и то, что не надо трогать мышь и клавиатуру во время работы скрипта. Так от кого эта защита? А вот людей, которые потом будут этим пользоваться, вряд ли стоит пугать зависшим компьютером. |
bogomolv Про не "по ум." - англ. язык интерфейса, я это написал в комментариях к скрипту. И я не думаю, что тут поможет реестр, т.к. отсутствующий компонент посредством реестра не включится :) Цитата:
Про переменные $iDir и $pDir - я понял что это, но не понял два момента: - можно ведь просто написать FileCopy('Untitled.fbt', $pDir, 1), или у тебя скрипты лежат в каком-то отдельном каталоге? - куда пихать тот самый Untitled.fbt. Это ведь может быть не только каталог проги, но и что-нить типа Doc&Set\Имя_юзера\AppData\Abbyyy_блаблабла или ты и это станешь оспаривать? Цитата:
Цитата:
|
Sanja Alone Про установку не "по умолчанию". Такие вещи, на мой вгляд, лучше задавать непсредственно в установщике, либо отредактировав msi-файл, либо создав для него mst-файл дополнительных настроек установки. Использую для этого Orca (MSI Table Editor). С его помощью записал то, что тебе нужно, в full.mst (запускается FineReader.msi /qb TRANSFORMS=full.mst). Вышлю вместе с другими файлами, когда ответишь по мылу. Про пути. $pDir=@ProgramFilesDir&'\ABBYY FineReader 7.0 Professional Edition\' $iDir=@ScriptDir&'\'. Но это сейчас, когда пакую все файлы дистрибутива и настроек в SFX RAR архив. Раньше было по-другому. Про 2 больших категории юзеров. Так к какой категории относятся те, кто любит трогать?:) |
Наверное всё-таки напишу в эту тему, так как в теме об установке
WinAmp обсуждается немного не то. О наболевшем. Об установке WinAmp. Хочется сделать её универсальной - в том смысле, чтоб скрипт AutoIT срабатывал всегда, а не только в случае установки на чистую (или не чистую) систему. Загвоздка в том, что WinAmp при установке, в зависимости от системы, задаёт РАЗНЫЕ вопросы - и естественно скрипт может не сработать. Первая вещь, на которой иногда спотыкается установка - это вопрос о регистрации. Победилась просто - перед установкой reg файлом вносятся необходимые регистрационные данные. Но есть второй подводный камень - на чистой системе задаётся вопрос о перезапуске, на системе, в которой уже стоял WinAmp - этот вопрос не задётся. Как бы сделать обход этого - например оператором IF, чтоб скрипт, если не появилось окно с вопросом о регистрации, дальше продолжал свою работу, а если появится - отмнил бы перезагрузку ну и проч. по плану? И ещё один вопрос, правда не очень в тему: на второй странице Sanja Alone сказал, что образы от Virtual CD монтируются Алкоголем. Я сам уже давно на Алкоголь перешёл, но есть куча образов от VCD. Обрадовался - попробовал - не вышло - Алкоголь правильно распознаёт размер, но не может считать информацию. Образы от VCD 4.5, Алкоголь: 3 последних. |
DenchikK Цитата:
А какие проблемы? Код:
По поводу регистрации - раз уж установка делается скриптом, то пусть и регистрация делается им же (и без "лишнего" reg-файла): Код:
Цитата:
Алкоголь у меня тогда был 1.4.8.1222, а более новые версии ведут себя так, как ты и описал. Выход есть - переконвертировать *.vcd/*.000-образы с пом. UltraISO во что-нибудь стандартное (например, iso). Но и здесь возможны проблемы. С былых времен у меня осталось только 3 образа VCD - два монтируются (но не дают считать содержимое) новым Алкоголем, при этом они не загружаются в UltraISO, но без лишних вопросов конвертируются последним в нормально читаемые iso. А третий образ vcd/000 вообще ничем кроме родного VirtualCD не монтируется и не конвертируется. Такие вот дела... |
Никак не могу всё-таки справиться с winamp : установка происходит
нормально, только не в первый раз. Вот привожу пример того, что
наваял: Код:
|
DenchikK А ты не пробовал версию winamp.msi? C ней таких проблем нет. |
2 DenchikK На сколько я понял оператор WinExists проверяет наличее окна только 1 раз, в твоем случае сразу после нажатия клавиши Цитата:
Цитата:
Внимательно почитай посты на 4 странице, там Sanja Alone растолковывал мне как определить какое именно окно открылось. Это должно подойти и тебе. |
Слегка получилось со скриптом для winamp (и новый робоформ построил
на его основе), только работает странно - скрипт не закрывается,
приходится вызывать taskkill - что не есть гуд. И вторая неприятная вещь -
я выставил таймаут для нормальной работы скрипта - боюсь что на других
компах может и не сработать. И заодно бы хотел спросить про функцию проверки отметки чекбокса. Примерно в половине программ она не срабатывает. Это нормально, или я что-то не так делаю? Там где не срабатывает, есть отличительная черта: не совпадение надписи на чекбоксе с тем, что выдаёт AutoIT Пример: Offline Explorer 3.8, Recovery My Files 3.70. А вот так например сработало для FastStone: Код:
|
DenchikK Цитата:
|
DenchikK Начну с самоцитаты из своего первого поста: "Мне обидно за любимый AutoIt, когда его используют исключительно в этих [автокликанье] целях". На другом ресурсе (где мы с тобой уже встречались) был предложен достаточно простой и быстрый(!) способ автоустановки WinAmp путем копирования свежеустновленной программы и ее данных в реестре. Установка WinAmp (и большинства других программ) автокликаньем имеет огромный недостаток - зависит от версии программы. В результате с выходом каждой новой версии любимой программы, как правило, приходится переписывать autoit-скрипты , что со временем изрядно надоедает. Поэтому советую обращаться к AutoIt лишь тогда, когда другие средства установки неприменимы. Способ установки копированием реестра также зависит от версии. Но все отличия, скорее всего, будут локализованы в одной-двух отвечающих за настройки программы ветках реестра, которые можно элементарно скопировать целиком и заменить в соответствующем reg-файле. К тому же при этом способе часто удается использовать "скрытые" возможности самой программы. Например, простое копирование mplayerc.exe можно сопроводить RunWait(@ProgramFilesDir&'\Media Player Classic\mplayerc.exe /regvid') и зарегистристрировать таким образоом на Media Player Classic расширения видеофайлов. Остается добавить в реестр некоторые свои любимые настройки программы и - ву-аля. Интересная комбинация может получаться при синтезе нескольких способов установки. Например, в папку $oem$\$Progs\WinRAR можно положить не развернутую копию программыных файлов, а только два из них - Settings.reg (сохраненные из самого WinRAR настройки) и rarreg.key (лицензионный ключ). Тогда для автоустановки WinRAR достаточно будет двух команд RunWait ('regedit /s "@ProgramFilesDir@\WinRAR\Settings.reg"') и RunWait ('@ScriptDir@\wrar35b7ru.exe /S') (именно в этой последовательности!). Относительно же твоих вопросов о том, почему в кокретном случае не срабатывает та или иная команды или не закрывается то или иное окно, на них ответить трудно. Для этого под рукой нужно иметь твою программу в той версии, которую ты мучаешь и т.д. Да и обсуждение, вряд ли для кого-нибудь, кроме тебя лично, будет представлять интерес. А раз так, тебе самому и решать возникающие проблемы - перебирай по очереди различные способы слежения за окнами в AutoIt (только параметром Opt('WinTitleMatchMode', 1-4) можно задать 4 таких способа), пробуй все известные способы нажимания на кнопки (различные Control, Send (особенно Send('горячая клавиша'), MouseClick), читай и перечитывай AutoIt.chm... Sanja Alone Цитата:
В продолжение начатого с ним разговора могу напомнить, что у установщика INNO SETUP есть ключ /COMPONENTS="comma separated list of component names", так что можно вполне обойтись silent-установкой без чекбоксов. При юзании устновщиков INNO SETUP можно также сохранить параметры ручной установки ключом /SAVEINF="filename", а потом воспроизводить их через /LOADINF="filename". |
bogomolv Цитата:
Цитата:
Цитата:
1. Ключи 2. Rar SFX 3. AutoIT Цитата:
C эти то же не согласен. Многим пользователям будет очень полезно прочитать, как можно решить анологичную проблему. Программы меняются - а принцип решения может быть одинаковым. Цитата:
Цитата:
|
Цитата:
Такой вопрос. Как можно кликнуть на скрытую кнопку? Код:
send ("{enter}") нехочется, потому что долго подводить курсор, а можно ли ControlClick-ом? |
DenchikK Во-первых, в интернете, как и в бане, все равны. Так что, не "выкай" (и тем более не делай это с маленькой буквы - я один!). Во-вторых, ну и зачем ты это написал? Не хочешь слушать - не слушай. Я ж все равно не проверю, как ты реализушь мои бесценные наставления! А по содержанию твой пост - сугубо личное послание-оправдание. Для этого есть почтовый ящик.:) DenchikK & Madcap Цитата:
Вы же обсуждаете, "можно ли кликнуть на скрытую кнопку" или "как бы сделать обход этого - например оператором IF". Кто ж за вас это сделает? Вот и попробуйте кликнуть на скрытую кнопку или сделать обход оператором IF. А результаты доложите...:) |
Всем привет. Аналогичная проблемка. Иногда выскакивает окошко, иногда нет. В случае, когда оно есть - скрипт удачно доходит до конца. В случае, когда окошка нет - не происходит отработки ветки "Else". Что не так? Код:
|
Цитата: Ничего не поделаешь - подводи куда нужно курсор и Send('{SPACE}') Воспользовался этим нехитрым методом: Код:
Работает! Но... только на моём компе, когда тестирую скрипт. При запуске на виртуальной машине или другом компьютере стрелка уезжает совсем не в то место, где нужно кликнуть |
biork По MouseClick. Вместо этой команды Tab'ом подведи к кусор к кнопке и кликни ее. Что-то вроде Send({Tab}{Enter}). По неожиданным окошкам. Не знаю конкретной проблемы, но в общем случае для неожиданных окон и любых других нежелательных оказий в AutiIt есть чудная процедура AdlibEnable('Имя функции'). Пример. На стадии cmdlines иногда выскакивает сообщение о заканчивающейся виртуальной памяти. Для его погашения в cmdlines.au3, отрабатывающем все действия на данной стадии, задаем функцию NonVMEM Код:
|
biork Если сильно хочется MouseClick-нуть, то сначала обрати внимание на опцию Код:
|
Я написал простенький конвертер для перевода reg-файлов в директивы
AutoIt (RegWrite и RegDelete). Конвертер понимает все типы параметров (известные AutoIt-у), поддерживает удаление веток/параметров. Параметры типов REG_RESOURCE_LIST (hex(8)), REG_FULL_RESOURCE_DESCRIPTOR (hex(9)), REG_RESOURCE_REQUIREMENTS_LIST (hex(a)), REG_QWORD (hex(b)), а также неправильные параметры типа DWORD (hex(4)) пропускаются. Ограничения: не понимает Unicode, т.е. исходные reg-файлы должны быть в DOS или Win кодировках (REGEDIT4). Особенности: медленная работа с большими файлами (675Кб ветка HKLM\SYSTEM\CurrentControlSet\Services, выбранная для теста, обрабатывается 4,5 мин. на AXP-1500MHz). Я не считаю этот момент проблемой, т.к. конвертер предназначен не для преобразования реестра, а для дополнения AutoIt-скриптов установок прог их настройками из reg-файлов. Кому нужен - прошу Если при использовании столкнетесь с какими-то недоработками - мыльните. Кроме того, скрипты установки н-рых программ находятся на этой странице. P.S. Исправил проблемы с \\, \", одинарными кавычками внутри параметров ('), двоеточиями в названиях параметров, параметрами по умолчанию (@), символами равно внутри строковых параметров. |
Sanja Alone Well job! |
Люди подскажите пожалуйста как можно из экселевской таблички
скопировать данные (количество строк не фиксированное, столбцы
фиксированные)? |
Geck Обработать xls-файл вряд-ли удастся - слишком сложная структура файла. А вот обработать окно с открытой таблицей легко - через Send('^{Ins}) или ControlGetText(). |
bogomolv Спасибо... А как можно определить когда данные закончатся? Можно конечно вручную править количество повторов в цикле, но это не выход. |
bogomolv Кстати через ControlGetText() не получается, только через Send |
Добрый вечер Вопрос по поводу скрипта от Lingvo Сдела папочку Lingvо, сложил туда все нужные файлики: /vfd AutoIt3.exe ling10me_flp.IMA lingvo.au3 lingvo.exe LV10ML.iso Запускаю AutoIt3.exe lingvo.au3 Доходит до принятия лицензионного соглашения и виснет. Причем стоит точка на отказе принятия лицензионного соглашения Может где-нибудь в скрипте ошибка? Я так понимаю ошибка должна быть здесь: ControlClick ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Лицензионный договор', 'Button3' ) Такой функции не нашел в описании. AutoIT 3.1.1 |
demo369 Цитата:
Цитата:
Почему скрипт может не работать: 1. Не выполнен пункт 4 оригинального поста - Alcohol или Daemon ни разу не запускались. 2. Другой дистрибутив Lingvo и, следовательно, отличные от приведенных в скрипте названия окон, текст в окнах, названия эл-тов (ну не Button3, а Button2, например), другое имя msi-файла в корне исошки Lingvo и т.п. Для выяснения точной причины, добавь в начало скрипта строку Opt("TrayIconDebug",1), а также закомментируй AutoItSetOption("TrayIconHide", 1) и BlockInput ( 1 ). Запусти скрипт снова, и, когда он зависнет, наведи мышь на иконку AutoIt-а в трее и увидишь причину зависания. Цитата:
P.S. Извини за неоперативный ответ - я только вчера купил новую интернет-карточку. |
Здравствуйте товарищи, радует что тема растет и множится. Написал скрипт для автоматизации процесса скидывания CD и DVD дисков на HDD (мне нужно было скинуть большое количество фильмов). Так вот вопрос такой, хотелось бы сделать прогрэсбар для наглядности, но каким образом обновлять его, что-то не представляю. Вернее есть решение, считывать объем инфы кот. уже скопировалась и сравнивать с общим объемом компакт диска, но это работает только в случае копирования мелких фалов, при копировании фильма индикатор с 1% будет прыгать на 100%. Есть ли какое-то решение? Код:
|
demo369 Цитата: Запускаю AutoIt3.exe lingvo.au3 В принципе, так тоже должно работать, т.к. я применял макрос @ScriptDir в путях, но я всегда использую откомпилированные в exe скрипты, а данный вариант запуска установки Lingvo не тестировал вовсе. Сделал экзешник. Ситуация не поменялась ;) Цитата: Может где-нибудь в скрипте ошибка? Пару десятков раз проверял на VMWare и 2 раза на реальных компах - все было ОК. Почему скрипт может не работать: 1. Не выполнен пункт 4 оригинального поста - Alcohol или Daemon ни разу не запускались. Пользуюсь Alcohol. Специально запускал. По идеи если его не запустить, то он и образ не должен примонтировать,а это он как раз делает. 2. Другой дистрибутив Lingvo и, следовательно, отличные от приведенных в скрипте названия окон, текст в окнах, названия эл-тов (ну не Button3, а Button2, например), другое имя msi-файла в корне исошки Lingvo и т.п. LV10ML.iso - размер 650,170,368 байт MSI файл как и в скрипте. названия и кнопки такие же. смотрел через AutoIt Window Info и через IsoBuster. Для выяснения точной причины, добавь в начало скрипта строку Opt("TrayIconDebug",1), а также закомментируй AutoItSetOption("TrayIconHide", 1) и BlockInput ( 1 ). Запусти скрипт снова, и, когда он зависнет, наведи мышь на иконку AutoIt-а в трее и увидишь причину зависания. Просто выдает что скрипт остановлен (paused) lingvo.exe Цитата: Такой функции не нашел в описании. AutoIT 3.1.1 Плохо искал: ControlClick ( "title", "text", controlID [, button] [, clicks]] ). При просмотре chm-ки, для более удобного поиска, переключайся на закладку "Указатель" и там вводи то, что ищешь. При этом работает автодополнение и ты быстро найдешь искомую функцию. Угу, нашел. Даже пробовал, добавить button и clicks. Рез-тов не дало. P.S. Извини за неоперативный ответ - я только вчера купил новую интернет-карточку Это не страшно ;) Спасибо что ответил. Могу еще скриншот скинуть на окошко, на котором скрипт останавливается. Может что-нибудь прояснится. |
demo369 Очень неудобно читать твои посты - pls, пользуйся тэгами цитат quote. Цитата:
Цитата:
Что я могу еще придумать: 1. Можно заменить Код:
2. Заменить Код:
3. Мешать скрипту могут различные перехватывающие нажатия клавиш проги: автопереключатели раскладки, счетчики нажатий клавиш и т.п. Тут нужно или отказаться от BlockInput(1), или убивать процесс такого приложения в памяти, например, убийство Punto Switcher-а будет выглядеть так (поместить этот код нужно в начало скрипта): Код:
|
EgOrus Цитата:
1. Перед началом копирования определять объем свободного места на целевом диске; 2. Разность (текущий объем свободного пространства - начальный) сравнивать с общим объемом компакта. Данные на винт ведь не 700-метровыми кусками пишутся :) |
Цитата:
Не вижу принципиального отличия от моей схемы :) в моем варианте происходило так: 1. рассчет занимаемого места целевой папки куда ложится фильм (для диска создается отдельная папка с меткой диска) 2. сравнения полученного значения с общим объемом компакта. Но вся заковырка в том, что данные именно 700 метровыми кусками и пишутся. Может конечно что-то в системе нужно изменить, но у меня именно так и происходит, под фильм сразу резервируется все 700 метров в самомом начале копирования, т.е. в целевой папке создается 700метровый файл. Есть еще один вариант, копировать через @comspec copy , возможно в этом случае копирование происходит без резервирования. |
EgOrus Цитата:
Тебе нужна xxcopy (244 527 байт) - эта вариация на тему xcopy имеет массу возможностей и копирует без предварительного резервирования места. Но потом не ругайся на обрубки файлов, если прервешь процесс :) |
Sanja Alone Да я знаю эту утилитку, но ни xxcopy ни robocopy меня не устраивают, лучше уж я пожертвую прогрессбаром, чем буду использовать сторонние утилитки. К моему удивлению на родном форуме также ничего по копированию больших файлов не придумали. Спасибо тебе за помощь. |
Здравствуйте. Обращаюсь за помощью. Слепил скриптик для автоматической установки программы на компьютер W2000 pro SP4 под правами опытного пользователя. Но инсталляция просит наличие прав администратора. Как бы проблема решаема с помощью RunAsSet ( ["user", "domain", "password"] . Инсталяционный пакет находится на сететвом ресурсе. Но возникает проблема: run(‘\\Maim\install\setup.exe’) Инсталяция запускается, но сообщает об необходимости прав администратора а если RunAsSet ( "Admin", @Computername, "password" ) run('\\Maim\install\setup.exe') то выдает ошибку Error: Unable to execute the external program. Системе не удается найти указанный путь если RunAsSet ( "Admin@Computername, "password" ) run('D:\install\setup.exe') то запускается Подскажите причина такого глюка? Или я не правильно делаю? |
Всем привет! В очередной раз прошу помощи у знающих и понимающих :-) Совершенно ламерский вопрос. Как скопировать файл с CD диска на HDD в процессе выполнения скрипта? Скрипт запускается из RunOnceEx.cmd. Оба файла, котырые нужно скопировать лежат в той же дирректории что и сам скрипт. Вариант, приведённый ниже не срабатывает: папка создаётся, но файлы не копируются Код:
Однако, если запустить скрипт "вручную", непосредственно кликнув по нему, то всё ок - файлы копируются. В чём косяк? (Все остальные команды из RunOnceEx.cmd, а так же сам скрипт, фрагмент которого приведён выше, выполняются нормально) |
biork Код:
|
Speed_Perm Цитата:
Код:
Код:
|
Добавил скрипт для автоустановки переводчика Pragma
4.xx.xxxx. Да, можете посмотреть на применение функции AdlibEnable() на примере этого скрипта. Все комментарии (как всегда) внутри скрипта. |
Sanja Alone Цитата:
Недавно тоже обратил внимание на эту функцию. Понравилось, но, к сожалению, она НЕ работает под WinPE! Там вообще с сетью постоянные заморочки. Как раз для простого и быстрого подключения из под WinPE ко второму компьютеру и пытался прикрутить эту функцию. Фиг-вам. Пришлось оставить скрипт, основанный на NET USE: Код:
|
Продолжим разговор об интересных функциях? Очень понравилась функция StringSplit. Особенно одно ее практическое применение, которое подсмотрел в предлагаемом для include файле File.au3. Теперь одной строчкой считываю содержимое текстового файла в массив $list=StringSplit(FileRead($f,FileGetSize($f)),@CRLF) и делаю с ним, что хочу! В частности, функция очень пригодилась для считывания структуры каталогов драйверов OEM-установки Windows (папка $oem$\$1\drivers). Раньше приходилось следить и жестко прописывать все пути к драйверам для их автоустановки на стадии CMDLINES (CMDLINES.TXT у меня запускает CMDLINES.AU3, в котором расписан сценарий установки дров и инициализации настроек системы). Теперь в CMDLINES.AU3 вместо многостраничного перечня действий со всеми своими и чужими драйверами (с которыми когда-либо встречался и могу встретиться еще) у меня стоит красивая конструкция: Код:
Данной процедурой считывается дерево каталога "c:\drivers" (куда копируются в процессе установки драйвера из $oem$\$1\drivers) и проверяется наличие скриптов с именем *_1.au3 с последующим их запуском. Файлы скриптов *_1.au3 - это мои автоустановщики дров и их настроек, которые я теперь храню вместе с дровами (а не в CMDLINES.AU3, как раньше). Не все дрова требуют наличия таких установщиков. И прекрасно! FileFindNextFile() не найдет *_1.au3 и перейдет к следующему каталогу. Есть и такие дрова, которые вообще не любят ставиться в процессе установки Windows (например, IAAraid). Обзываем скрипт их установки *_2.au3 и включаем те же девять строк в начало STARTUP.AU3, который стартует из Автозапуска при первом запуске свежеустановленной Windows (в этом файле у меня расписан сценарий автустановки программного обеспечения). Теперь подготовка дистрибутива для установки системы на чужой машине сводится к простому копированию из архива заготовок драйверов для $oem$\$1\drivers и небольшой правке unattended.txt. Счастливому же владельцу машины достается комплект автопереустановки системы, похожий на те, что идут с ноутбуками… |
1. Подправил скрипт для Pragma 4.x: теперь можно посмотреть на применение
функции AdlibEnable(), а также опции OnExitFunc - здесь она
необязательна, но уместна в кач-ве демонстрации. 2. Переписал скрипт для ABBYY FineReader 7.0: теперь 3 варианта установки, две страны (Украина, Россия), зациклен ввод серийника (действительно иногда первый сгенерированный серийник не подходит). bogomolv Цитата:
Но тут есть заковырка: если массив у тебя уже объявлен, например как $Array[1], то элемент $Array[0] - это не длина массива, а всего лишь первое внесенное значение (у меня была необходимость в предопределенном массиве в кач-ве временного хранилища многострочных hex-параметров). Для дополнения такого массива новым элементом его нужно ресайзнуть ReDim $Array[UBound($Array) + 1],а в циклах вместо For $i=1 To $Array[0] писать For $i=1 To UBound( $Array, 1 )-1. И еще одна особенность AutoIt-а в плане работы с массивами: когда я переписал конвертер так, чтобы он использовал 2 массива (вх. и рез.), а не добавлял построчно данные в файл, он (конвертер) стал работать более чем в 3 раза медленнее (~16 мин.). Вот тебе и ОЗУ :( Самое забавное, что я еще пробовал третий вариант: построчное чтение вх. файла с такой же построчной записью результирующих строк в вых. файл - выполняется 6 с небольшим минут (против 4,5 в исх. вар-те), правда исп-ся минимум памяти. (это время конвертации моего тестового 675Кб reg-файла - ветка HKLM\SYSTEM\CurrentControlSet\Services) Пришлось оставить исходный вариант алгоритма: читаем все в массив - определяем тип строки - составляем выходную строку - пишем в файл - повторяем до конца массива (для многострочных параметров, как я уже сказал, исп-ем доп. динамический временный массив). Ух, удалился я от темы, ну да ладно... К вопросу о драйверах: я использую метод установки с CD. Вполне себе нормально все ставится... и без скриптов. Правда, пока приходилось ставить Винду только на VIA и nForce2-based платформы, с другими может и не так все гладко. А у тебя создается некое подобие персонифицированного для конкретной машины набора дров, или как? Алгоритм? Ты бы статью написал на эту тему, что ли... |
Sanja Alone Добрый день. Не очень тут удобно редактировать письма, да не суть. Спасибо за подсказку с функцией Opt() При ее помощи удалось найти проблему. Все дело оказалось в кодировке файла скрипта :( Русский язык не правильно воспринимался, поэтому дальше скрипт и не шел. Прошу прощения, что отнял столько времени из-за такой глупости. Цитата:
|
Господа помогите с InputBox, если жмут Cancel или закрывают окно на
выходе должен быть путь установки проги по умолчанию, как написать? Всё разобрался Код:
|
1. Переписал скрипт для Winamp 5.xx: теперь с исп-ем идентификатора окна и
внесением н-рых настроек в winamp.ini 2. Добавил скрипты для Everest 2.xx (Ultimate/Corporate/Home) и DVD Identifier 3.x (4.x) P.S. Таблица выбора скриптов на сайте теперь содержит инф. о версии скрипта, а также имеет возможность сортировки (применены xml+xsl+javascript). Если у кого-то не будет работать - напишите мне (указав свой браузер и его версию), т.к. тестировалось все это дело только на IE 6.0. P.P.S. Если у Вас будет желание, то могу разместить эдесь и Ваши скрипты. Ес-но, добавив в таблицу ссылку на автора (пока в этом нет нужды, т.к. автор один - я :) ) |
А для Promt 7 Expert можно сделать ? |
Softwarez777 Цитата:
|
EgOrus Расскажи пожалуйста поподробнее про alc120.vbs, что и куда ложить надо и что за объект ActiveX? И про alc120.au3 что-то я пробовал и ни чего у меня не получилось, тут наверное я один такой одаренный :) что ни чего не понимаю, когда просто запускаю start C:\Test\AutoIt3.exe alc120.au3 в трэе появляется значок, а когда при установке даже в VmWare выскакивает ошибка чтения файла alc120.au3, а Alcohol продолжает устанавливаться и вылазиет мастер нового оборудования, и ничего не происходит :(, делаю все как написано в руководстве подскажи плиз что я ни так делаю. |
SlavaS во1ых, start C:\Test\AutoIt3.exe C:\Test\alc120.au3 (нужно указать путь к скрипту, иначе система ищет его в системных папках) во2ых, какой язык системы у тебя? скрипт au3 дан для русской винды, для англ. нужно переписывать заголовки окон. в3их, добавь в начало скрипта строку AutoItSetOption ("TrayIconDebug", 1) и если при появлении мастера нового оборудования ничего не происходит, наведи на значок "A" в трэе, он тебе покажет на какой строчке скрипт остановился, напиши эту информацию здесь, будем дальше думать (возможно что ты используешь последнюю версию Алкоголика и в нем что-то изменилось, хотя наврятли, пот. мастер нового оборудования это не алкоголиковское окно) Кстати как ты запускаешь установку? Так: msiexec.exe /passive /norestart /i c:\Test\setup.msi По поводу vbs: Сперва чтобы пользовать этим самым объектом ActiveX, нужно зарегить в системе библиотеку AutoItX.dll (есть в дистрибутиве AutoIt) regsvr32 /s c:\Test\AutoItx.dll (предположим что ты dll'ку положил в С:\Test а вообще правильнее ложить ее в папку windows или windows\system32 - $OEM$\$$\system32) после этого положить vbs данный на 1ой странице рядом с распакованным дистром (должен присутствовать файл setup.msi) и запустить его. |
SlavaS Скрипт установки Alcohol 120% 1.9.5.3105 (установка/регистрация/настройки). Комментарии смотри внутри au3-файла (скрипт подходит для любых Алкоголиков, т.к. исп-ся тихая установка). |
У меня установка и регистрация проходит нормально, я не могу от
мастера нового оборудования избавиться :( |
SlavaS Проверь чтобы заголовок первого окна мастера нового оборудования совпадал с первой строчкой winwait (...). Проверять установку лучше не на виртуальной машине, а на своей, устанавливаешь если и что-то не так в процессе, удалаешь его. Правишь скрипт, потом опять запускаешь и смотришь как прошла установка, так до победного конца. |
А можно ли с помощью AutoIT определить, какая винда (XP, ХP SP1, XP
SP2) стоит на машине? Идея вот в чём: в зависимости от того, какая винда стоит, подключать соответствующий BootScreen: 1. Переписать файл скрина на винт 2. Редактировать (добавить строчку) файл boot.ini (где-то я видел, как с помощью AutoIT можно редактировать файлы). |
EgOrus что-то я ни как не могу победить этот мастер нового оборудования, или скрипт не доделанный или у меня XP не тот, но в заголовке окна все совпадает. Я вот думаю почему в твоем скрипте как только появляется мастер нового оборудования и нажимается ENTER? Цитата:
Он ведь сначала спрашивает разрешить подключение к узлу Windows update для поиска програмного обеспечения и нужно выбрать Да, только в этот раз или Нет, не в этот раз, т.к. кнопка далее не активна, а вот потом уже нужно этот самый ENTER. |
SlavaS Понятно, у меня до устаноки софта применяются твики, в данном случае за НЕпоявление указанного тобой окна отвечает этот твик: [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching] "DontSearchWindowsUpdate"=dword:00000001 "DontPromptForWindowsUpdate"=dword:00000001 Поэтому у тебя и не выходит каменный цветок... Можешь либо применить твик, либо просто добавить в скрипт действия по закрытию этого окна. С помощью AU3Info.exe узнать название класса кнопки "нет" и использовать конструкицю типа WinWait ("нужное окно","", 0) Sleep(500) 'Послать в указанное окно ControlClick для кнопки НЕТ (название класса этой кнопки например Button2) ControlClick ("Нужное окно","", "Button2") |
DenchikK Цитата:
Код:
Цитата:
Код:
Все вышеперечисленное можно найти просто почитав оригинальный файл AutoIt.chm (а не переведенный хелп к одной из старых версий AutoIt-а). |
Спасибо огромное! Просто с английским у меня дико плохо - вот и юзаю
перевод, а он оказывается не полный. |
|
Sanja Alone Ты памятник себе воздвигаешь себе нерукотворный? К нему не зарастет народная тропа! Маладес! Хотел бы подмазаться. Но, блин, как же это тяжело думать о других... Ну и типа - by the way! Други, впервые встретился с проблемой, что НЕ МОГУ ввести латинскую "D"! Всегда решал эту проблему "русского языка" Autoit (под WinXP Rus) с помощью ClipPut('D')... Send('+{INS}') или ControlSetText(''...','...','...','D'). Но DSKPROBE.EXE (этот Василий Алибабаевич!) не воспринимает ничего, прямого direct push! |
Sanja Alone Сань, признавая и уважая... Но как же мы по-разному думаем! Вместо autoit-foxitpdf.au3 у меня в ...\$oem$\$Progs\FoxitReader лежат FoxitReader.exe и foxitpdfreader.reg. В CmdLines.au3 при этом есть запись RunWait ('regedit /s "@ProgramFilesDir@\FoxitReader\foxitpdfreader.reg"') |
bogomolv Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
EgOrus Спасибо твик помог, все получилось :) |
Sanja Alone Цитата:
Обижаешь, начальник! |
Sanja Alone Цитата:
"Какие Ваши доказательства?" (с) Красная жара |
bogomolv Цитата:
Цитата:
P.S. На будущее: если хочется сказать мне какую-то гадость, то для этого есть e-mail. Иначе можно форум превратить в подобие одной известной fido-конференции, в к-рой от банальных перепалок перешли к межнациональным словесным войнам. Какое-то время это даже было забавно читать, потом стало скучно, а в рез-те эху снесли с бона... |
bogomolv Цитата:
Хорошая программа да еще и установки не требует. А как ассоциировать файлы с расширением pdf с этой программой? |
VelDmi добавь в свой foxitpdfreader.reg (не забудь поменять пути если у тебя другий): Код:
или сокращенный вариант Код:
bogomolv Sanja Alone стоит ли из-за таких пустяков ссориться, у каждого свои любимые методы и вкусы, а о вкусах как известно не спорят |
Sanja Alone Цитата:
Золотые слова. Именно поэтому через \$oem$\$Progs у меня устанавливаются только 5 из 30 "автоустанавливаемых" программ. Установка остальных программ идет, как правило, через SFX-архив, содержащий дистрибутив программы, файлы ее настроек и скрипты автоустановки... О чем спорим? EgOrus Считаю полезным также прописывать регистрацию pdf-файла на FineReader: Код:
|
bogomolv не... это не мне это для VelDmi, наверное будет полезно :) я пользуюсь сокращенным вариантом и то лишь при создании WinPE кстати сообщения лучше редактировать, если чего-то забыл дописать, чем плодить неск. подряд :) |
3 вложений
Автоматизация подготовки диска к установке системы. Два скрипта NewDisk.au3 и Unattend.au3: http://forum.oszone.net/attachment.php?attachmentid=997&stc=1 http://forum.oszone.net/attachment.php?attachmentid=998&stc=1 http://forum.oszone.net/attachment.php?attachmentid=999&stc=1 Блин, как сделать, чтобы были рисунки? С их помощью процесс развертывания системы на новом компьютере (друзья, дети, дети друзей и друзья детей) сводится к загрузке с CD Windows PE и исполнению этих самых скриптов. Первым скриптом готовится диск: разбиение диска, его форматирование, развертывание WinPE, создание типовых папок, сбрасывание дистрибутива WinXP. Привязка дистрибутива к машине и пользователю осуществляется вторым скриптом. Им правится unattend.txt: пользователь, настройки экрана, oem-драйвера и т.п. Самое муторное в этой процедуре - правка OemPnPDriversPath. Чтобы максимально облегчить редактирование этого параметра, включил в скрипт дополнительные средства обработки папки $oem$\$1\drivers. Единственное, что приходится делать ручками (вернее, головой), отбирать для дистрибутива заготовки драйверов (включающие при необходимости скрипты автоустановки и подстройки последних). Как уже писал, для этого имею базу таких заготовок, которую по мере обновления драйверов и знакомства с новым железом периодически пополняю. После такой подготовки, занимающей в несложном случае полчаса, остается запустить автоустановку WinXP. Проследив результат и подкорректировав исходники, вручаю "клиенту" работающую машину с "ноутбучным" комплектом ПО для автопереустановки системы, о котором рассказывал раньше. Конечно, установка типовой системы с CD проще и быстрее. Для подобных целей имею собственный "супер-диск" с набором основных драйверов и типовых программ. Но чтобы донастроить установленную таким образом систему требуется квалификация. Вариант с дистрибутивом, полностью привязанным к машине, позволяет самому неподготовленному пользователю самостоятельно поддерживать работоспособность системы самым эффективным способом - периодически вчистую ее переустанавливая. В продолжение разговора об интересных функциях. При отладке работы NewDisk.au3 столкнулся с необходимостью считывать результаты командной строки непосредственно в память: WinPE работает с CD, жесткий диск еще не размечен, создавать виртуальный диск, чтобы выполнить DiskPart.exe /S list.txt > 1.txt, не хотелось. Нашел красивую замену в лице CLIPCOPY.EXE (21Kb), считывающей выходные данные командной строки в clipboard. С помощью этой программульки считываю информацию о присутствующих в системе дисках следующим образом: Код:
Еще одна находка. Раньше для развертывания WinPE на жестком диске (использую WinPE, в том числе, и при переустановке системы для автоудаления "замусоренных" системных папок) запускал установку Консоли восстановления, которая нужна была только для получения файловой копии загрузочного сектора BOOTSECT.DAT. Добрые люди подсказали, что в BartPE есть плагин, делающий это проще, быстрее и гибче. Позаимствовал оттуда MKBT.EXE (26Kb) и NT2PELDR.EXE (16Kb). Теперь создание загрузчика WinPE выглядит так: Код:
Последние находки позволили оптимизировать NewDisk.au3 так, что теперь можно подготовить чужой диск, просто подключив его к своей машине. |
bogomolv Цитата:
Цитата:
|
bogomolvEgOrus Действительно огромное спасибо! Не думал, что все так просто. Теперь буду ковырять другие программы в этом направлении, например XnView, который ставится unattend , но не забирает на себя графические форматы файлов. И Light Alloy тоже. |
Получился скриптик для bootscreen (спасибо огромное за разъяснение
Sanja Alone (14 страница)): Код:
Всё вроде бы работает, но хотелось бы сделать ещё и проверку просто XP, без сервис пака. Ни у кого пока не нашёл винды такой, поэтому проверить, что возвращает макрос @OSServicePack на такой винде, не получилось. Может у кого есть такая винда? |
VelDmi Цитата:
DenchikK Цитата:
Код:
|
Добавил скрипты: GordianKnot RipPack 0.35.0 No1 Media Fixer Pro 4.4 No1 Video Converter 3.x.x P.S. Для ускорения загрузки страницы со скриптами переписал ее на php (сортировка по прежнему на JavaScript). В связи с этим теперь страница crta такая, а au3 - вот. |
Свежий скрипт Код:
В папке \Russian лежат разархивированные файлы "русской морды" от FineReader (Russian UI.exe\Data1.cab: Tutorial1.chm, FineReader1.chm, fineui1.dll, screenshotreader1.dll, FRWordZoom1.dll, Shell1.dll, Enginel.dll, Russian.amd, Russian.amm, MorphoRes1.dll, Scan\ScanMan1.dll, Support\Ainfo.dll ) и пара файлов от установленного FineReader. FineReader8.reg - копия нужных настроек из ветки HKCU\Software\ABBYY. Проверял на 677 и 706 версиях. |
|
У меня такая проблемка: не обрабатывается секция if - в любом случае
(есть первое окно или нет) - скрипт продолжает работу (или останавливается при наличии первого окна) со строчек после "Else" В каком месте кривые руки? Где ошибка? Код:
|
biork У тебя скрипт ждет пока окно не станет активным WinWaitActive("Заголовок окна", "текст2"). Может лучше использовать конструкции типа: Код:
|
А зачем он ждёт активности второго окна, если появилось и активно
первое? Может я не прав, но по-моему логика скрипта такова, что при наличии первого окна ("Заголовок окна", "текст1") должны выполняться строки после "then", при отсутствии оного или при появлении другого ("Заголовок окна", "текст2") должны выполняться строки после "Else". Если убрать условное выполнение, то каждая ветка скрипта выполняется нормально в своих условиях. Твой вариант с WinActivate попробовал - не помогает. Причём, в моём варианте при наличии первого окна скрипт ждёт на строке ожидания второго окошка, а в твоём - заканчивает работу |
biork Правильно в примере, кот. предложил я, если ни одно из условий неверно, то продолжаем работу скрипта дальше. В твоем же как ты правильно сказал, если первое условие неправильно, то в любом случае ждем активное окно ("Заголовок окна", "текст2"), если оно по каким-то причинам не появляется, то придется прерывать скрипт вручную. Приведи полный пример своего скрипта. |
Вот весь скрипт с изменениями, как ты и рекомендовал в своём
примере. Часть, которая не хочет работать выделена курсивом Код:
Насчёт логики. Дело то в том, что он почему то это первое окно не видит, хотя оно есть, ждёт и свиду вполне активно :). По мне, так условие выполнено, а вот с точки зрения AutoIt - почему то - нет :( И что толку от продолжения работы скрипта, если дальнейшие действия связаны с кликаньями по окнам которые не появятся, пока не уйдёт текущее? Я понимаю, что проблема выеденного яйца не стоит - можно сделать тихую инсталяшку или ввести серийный номер перед запуском установки с помощью рег-файла и исключить появление этого окна - дело в другом - хочу выяснить можно ли вообще бороться таким образом с "иногда появляющимися" окнами. У меня уже не первый случай когда нужно использовать функцию условного выполнения и всегда с этим проблемы. Что-то я тут не вкуриваю... |
biork Чтобы понять почему не работает пришлось поставить 3DMark2001, ставится он почти также как 2003, так вот дело в том что, твое условие If WinExists проверяется на стадии копирования файлов и декомпрессии текстур, естественно такого окна нет, и переходим к следующему условию ElseIf WinExists такого окна тоже нет и завершаем скрипт. Нужно добавить перед проверкой условий, ожидание завершения процесса копирования, чтобы в момент проверки условий либо то либо то окно успело появиться, сделать можно по разному например вот так: Код:
|
Вот скрипт для Windows XP Manader ;Видим скрытый текст Opt("WinTitleMatchMode",2) Opt("WinDetectHiddenText",1) ;Уберем все с окна WinMinimizeAll() Sleep(1000) $SF_1 = @ScriptDir & "\xpmanager.exe" $SF_2 = StringLeft(@ProgramFilesDir,2) & '\PROGRA~1\YANICS~1\WinXPM~1\WinXPM~1.exe' Run(@ComSpec & " /c " & "start " & $SF_1 , "", @SW_HIDE) $Title_1 = "WinXP Manager Setup" $Title_2 = "WinXP Manager" WinWaitActive($Title_1) sleep(1000) SEND("{ENTER}") WinWaitActive($Title_2,'The installer will guide you through the steps required to install WinXP Manager on your computer.') sleep(1000) SEND("{ENTER}") WinWaitActive($Title_2,'Select Installation Folder') sleep(1000) controlclick('','','Button5') SEND("{ENTER}") WinWaitActive($Title_2,'Confirm Installation') sleep(1000) SEND("{ENTER}") WinWaitActive($Title_2,'Installation Complete') sleep(1000) SEND("{ENTER}") Run( @ComSpec & " /c " & "start " & $SF_2 , "", @SW_HIDE) sleep(1000) WinActivate("WinXP Manager V4.92.3") ;WinWaitActive('WinXP Manager V4.92.3','UnRegistered...') WinWaitActive('WinXP Manager V4.92.3','Try It') sleep(1000) controlclick('WinXP Manager V4.92.3','','WindowsForms10.BUTTON.app31') WinWaitActive('Purchase and Register WinXP Manager V4.92.3') sleep(1000) ControlSetText( "" , "", 'WindowsForms10.EDIT.app35','XXXX') ControlSetText( "" , "", 'WindowsForms10.EDIT.app34','XXXX') ControlSetText( "" , "", 'WindowsForms10.EDIT.app33','XXXX') ControlSetText( "" , "", 'WindowsForms10.EDIT.app32','XXXX') ControlSetText( "" , "", 'WindowsForms10.EDIT.app31','XXXX') controlclick('','','WindowsForms10.BUTTON.app32') WinWaitActive('Finis','Please restart this software') sleep(1000) SEND("{ENTER}") EXIT |
EgOrus Ну ты монстр! :) Всё заработало как часики. Оживил несколько заброшенных по подобной причине скриптов. Большущее тебе спасибо! Вопрос на засыпку: зачем таймаут 3 минуты? А вдруг, диск плохо читается или комп 386-ой... я бы убрал этот параметр - пусть ждёт сколько ему надо. |
biork по поводу 3х минут, вопрос спорный, теоретически это на тот как раз случай если диск нечитается вообще, на разных приводах может быть по разному, где-то начинает читать до посинения бывает и по 10-20 минут и все равно потом сбоит, бывает ошибку выдает, в любом случае скрипт встанет (скорей всего появится окно инстоляра об ошибке установки) и нужно будет вмешиваться. А так он на автомате через 3 минуты пойдет дальше. Вместо 3х можно побольше конечно поставить. |
|
Кто-нибудь помогите заавтоитить Outpost 3.0 Раньше (v. 2.0-2.7) скрипт прекрасно отрабатывался в том месте, где идёт сбор об установленных программах и создаются для них правило. Скрипт корректно дожидался, пока кнопка "Далее" не станет доступной для нажатия. Вот это место Код:
Но почему-то в версии 3.0 этот трюк не срабатывает. Сразу появляется окошко о конце установки, т.е. получается, что недоступная копка каким-то образом нажалась. |
Eralex 3.0 попробовать не довелось, но в 2.7 нормально работает такая конструкция: Код:
|
Цитата:
Не помогло!!! |
Вот маленький скриптик. Работает. Код:
а так - нет. Почему? Код:
|
biork Патаму чта синтаксис :) Код:
И будь осторожен с RunWait ( "filename" [, "workingdir" [, flag]] ). Чтобы задать рабочий каталог, лучше использовать FileChangeDir ( "path" ) Код:
All Новый DrWeb433. Установщик остался прежним. И также по-прежнему блокирует silent-установку. :( Зато установщик разукрасили всеми цветами радуги. В результате, он перестал "понимать" ControlClick(...), ControlCommand(...,'Check') и т.д.! Теперь приходится накручивать ControlSend('Внимание!!!',,'Button4','{+}{Enter}'). |
А у меня во в новом инсталяторе DrWeb 2 раза заедало: 1. В месте "Выберите вид установки" (причём иногда только). 2. В месте "Настройки прокси сервера" - при их отсутствии. Нажатие на кнопку отмены мышкой, приводит к продолжени. установки DrWeb, нажатие на неё AutoIT'ом приводит к завершению инсталяции. И там и там вывернулся использованием эмуляции нажатия мышки. Ещё в догонку такая придумка. В установке Dr.Divx, вернее при работе keygen, надо вызывать из каталога с установленной программы регистрационный файл. А вдруг у пользователя прога стоит не на диске C и даже не в Program Files? Как это узнать? И вот что я придумал (главное - работает!). Вкратце так: берём из реестра информацию об установленной программе, и вот мы уже имеем всегда правильный путь. В Dr.Divx чуть сложнее - пути как такого нет, есть путь вместе с .exe файлом. Этот самый .exe файл то мы и отрезаем (функция отрезать строку с конца). Так что можно сделать инсталяторы чуточку более универсальными. |
bogomolv Мдя... Не очевидно (в справке, в описаниях макро об этом - ни слова...), но факт! А зачем символ @ в конце каждого макро? Опять "синтаксис патаму чта"? И почему осторожней с RunWait? Может надёжнее сам скрипт в нужную папку засунуть и вообще не указывать рабочий каталог? |
Есть прекрасные макро @ComputerName и @IPAddress1 чтобы узнать имя
компьютера и его адрес. А как можно изменить их? Мне нужно задать их не ползая по вкладкам свойств. |
bogomolv Цитата:
Цитата:
VelDmi Цитата:
|
Люди подскажите как мне с помощью AuotIt поставить Dr.Web 4.33 ( не
ставиться командой setup.exe /s) только если по
шагово. |
2Sanja Alone Скачал у тебя скрипт на установку FoxitReader, к сожалению к новой версии он не подошел, посмотрев скрипт не понял зачем нужны условия на проверку Активности каждого окна? Практически во всех скриптовых языках условия несколько тормозят выполнение кода, легче сразу активировать окно без проверки его активности. Цитата:
Код:
|
Всем привет. Вопрос на засыпку. Нужон такой скрипт: - проверяем является ли диск D: разделом жёсткого диска (существует ли вообще и не является ли сменным или сетевым) - если да, то копируем на него файл - если нет, то - нет. Есть идеи? |
Добавил скрипты: ICE ECC 2.1 Sateira CD&DVD Burner 2.xx WinImage 8.0 (и 7.0) EgOrus Цитата:
2. Ты используешь странное сочетание функций при ожидании окон: Код:
Код:
CTEPBA Скрипт для DrWeb 4.32b - попробуй, может и для 4.33 подойдет. biork Цитата:
Код:
|
Меня по мылу уже неоднократно спаршивали как предотвратить
множественный запуск одного и того же скрипта. Ответ вроде бы где-то на
форуме встречался, но приведу его здесь еще раз. Все очень просто - в
начало скрипта нужно добавить такую конструкцию: Код:
|
Sanja Alone да, ты прав WinWaitActive("Окно","Текст" там абсолютно не нужен, видимо сказалось позднее время и нежелание писать что-то свое, когда есть готовое, отсюда и невнимательность, конечно же везде должно быть просто WinActivate. По поводу скрипта для Sateira CDDVD Burner, можно нескромный вопрос? :) а почему скрипт сделан через работу с окнами, а не ключами установки? /SILENT /DIR="path" /GROUP="folder name" /TASKS="desktop,quicklaunch" (или /NOICONS) |
EgOrus Цитата:
|
Sanja Alone
Цитата:
Это из личного опыта? в каких условиях не отрабатывает? Странно, очень давно пользуюсь этой программой, сам постоянно делаю свои инстоляторы, ниразу не было чтобы что-то некоректно установилось. Единственный случай когда такое возможно, это если в скрипте жестко заданы пременные, и то отрабатывается все нормально просто поменять нельзя. АвтоИт же наоборот только расширяет возможности InnoSetup, добавляя возможность использования переменных окружения при указании путей установки (при установке из комстроки требуется указание полновесных путей). Спасибо за скрипт Gknot, я с тоской думал о том моменте когда придется его автоматизировать, жутко не люблю выписывать заголовки с окон, особенно когда их много |
Sanja Alone Цитата:
Обнаружив, что DrWeb в 432 версии лишился старых ключей автоустановки (кажется, это делалось через ini-файл), в первую очередь опробовал именно комбинацию setup.exe -R + setup.exe -s -f1"путь\setup.iss". Файл setup.iss создавался нормально. Но обрабатываться он у меня никак не хотел (и не хочет!). В форуме на drweb.ru нашел подтверждение своим смутным подозрениям - кто-то из приближенных к разработчикам авторитетно утверждал, что такая возможность заблокирована, и автоматическая установка поддерживается только в Enterprise Suite. Если это не так, то это здорово! Но у меня установка не проходит ни с моими, ни с твоими файлами. Чтобы проверить твой скрипт, разыскал drweb-432b-win-ru.exe. Результат тот же. Только в моем случае в setup.log значится ResultCode=-3, в твоем - ResultCode=-5. Кстати, а почему в твоем скрипте в строке запуска drweb-432b-win-ru.exe нет ключа -f1"путь\setup.iss"? Что, если не указывать на setup.iss явно, он должен "подхватится" автоматом? Давай разбираться! |
Я сделал такой скрипт для Dr.Web 4,33 который работает по действиям,
но у меня были проблемы с появление блокнота в конце, вроде я их решил, но
еще проверял. Код:
|
Я написал скрипт для Dr.Web 4.33 через клацанье по окнам, добавил в zip-ку к
скрипту для 4.32b. Пока можно юзать и такой
вариант. EgOrus Цитата:
Цитата:
bogomolv Цитата:
Цитата:
Цитата:
Цитата:
|
Sanja Alone /SAVEINF и /LOADINF очень ограничены по использованию переменных окружения, все строчки из него дублируются обычными ключами. Слегка видоизменил скрипт на Gknot, отменил установку AviSynth если есть более новый в этой же папке, добавил копирование плагинов к нему (к слову сказать - плаги ависинта работают на порядок быстрее VirtualDub'овских). В версии 2.56 появилась русская справка. Людям с толстыми каналами будет проще скачать новую версию GknotRipPack'a чем качать отдельно новый ависинт, тогда из скрипта нужно будет вырезать лишнее и переместить скрипт на установку ависинта. Код:
|
Sanja Alone Цитата:
С помощью ProcessWait(), ProcessList(), ProcessClose(). Но не помогает! |
EgOrus 1. Ошибка Код:
2. А зачем Opt('SendKeyDownDelay', 50) если в моем скрипте и так все работало? bogomolv Цитата:
Код:
|
Sanja Alone да, все правильно, благодарю, такие вот гадкие ошибки потом всплывают в самый неподходящий момент. Opt('SendKeyDownDelay', 50) пришло в скрипт вместе с шапкой, это у меня в каждом скрипте, особой пользы не несет, также как и вреда. |
Вчера почти весь день убил на активацию AutoCAD 2005. Пришлось
извратиться пару раз :) Никому не надо? Если надо, скажите. |
Цитата:
Если можно, то надо. Отправь мне на skylego@mail.ru |
как написать скрипт для Цитата:
помогите с написанием скрипта :) |
garbals это все делается батником Код:
|
запустил батник не работает всё в политике на своих местах
|
garbals подробности отправил в ПМ, оффтоп получается |
Я получил на мейл такой вопрос: Цитата:
Тут есть одна загвоздка - функция DriveStatus("Z:\")="NOTREADY" в двух случаях: 1. лоток выдвинут 2. лоток задвинут, но без диска. Я вижу преодоление данной неоднозначности только с пом. начальных условий и дополнительной переменной и предложил такой вариант: Код:
В принципе, задача не мирового масштаба, но все же: как ее решить правильно, какие будут мысли? |
Во первых строках огромный сенькс за труды Sanja Alone,
bogomolv и другим участникам форума, за их подробные описания и
толкования... Изучив труды набросал для знакомого скриптик для установки Photoshop CS2, может кому пригодится? Sanja Alone - может подредактируешь и выложишь более оптимальный вариант у себя на сайте? регистрациооные данные вбиты в файле Abcpy.ini Код:
сам скрипт Код:
Проверил на паре машин - вроде работает |
Petya V4sechkin Цитата:
fox_sly Цитата:
|
Есть такая задача - с помощью AutoIT вставлять пароли в
определённое поле программы. Проблемма в том, что если скрипт .exe раскомпилировать, то легко можно прочитать эти пароли. Понятно, что нет ничего не взламываемого. Но от обычных пытливых юзеров хотелось бы всё-таки пароли скрыть. Можно ли как то осуществить это с помощью AutoIT? |
Гуру от Autoit? Необходимо установить в переменные SET (для старых DOS задач) в Autoit 2.64 использовал такие строки: IfEqual,AUsername,L4305,Run,WinSet LOG_ST=F32,,hide решил опробовать в Autoit 3.01.02, но WinSet как бы ругается может есть провереное и более надежное решение ? Да и не хочется использовать внешние утилиты. |
DenchikK Цитата:
AlikPan Цитата:
1. Дописывание пути к 7-zip в переменную Path: Код:
2. Создание новой системной переменной new строкового типа: Код:
Цитата:
|
Sanja Alone Спасибо большое, всё получилось. |
В скрипте для Winamp 5.xx исправил косяк с записью параметров в
winamp.ini. На момент записи файл был недоступен для этой самой
записи :) - добавил проверку. |
Тут на днях наводил порядок на винте и попался один из первых
скриптов для создания Dial Up соединения - так что может кому пригодится, единственное ограничение на сколько я помню, это то, что дрова для модема уже должны быть установлены и в системе должен быть только один модем, для двух и более прийдется подредактировать :) Код:
|
Добавил скрипт для Exact
Audio Copy v0.95 beta 3 Переписал/дополнил/изменил ВСЕ скрипты на сайте: - "шапки" теперь содержат инфу о версиях приложений на к-рых скрипты тестировались - вписал те самые две строчки для предотвращения возможности множественного запуска скриптов - все-таки решил перейти на вариант TrayIconDebug; TrayIconHide/BlockInput-вариант закомментировал - везде, где нужно приписал макрос @ScriptDir для возможности запуска любого скрипта в неоткомпилированном вар-те без необходимости ложить его рядом с Autoit3.exe - дописал тихие варианты установки там, где это было уместно - еще что-то, сам не помню :) |
Панель инструментов "МОЙ КОМПЬЮТЕР"
Доброго времени суток, уважаемые! Вот какой вопрос мучает: Все вы знаете что в винде есть панель инструментов быстрого запуска, языковая панель и т.д. Так же сть возможность создание своей панели. Вот что я делаю: 1 кликаю провой кнопкой на панели задач (на ней кнопка ПУСК) 2 снимаю галочку "закрепить панель задач" 3 см 1 --> панель инструментов --> создать панель инструментов 4 В окне "создать панель инструментов" выбераю папку "МОЙ КОМПЬЮТЕР" и жму ОК после чего на панели задачь появляеться панель инструментов "МОЙ КОМПЬЮТЕР" 5 хватаю мышкой область этой панели помеченной вертикальной линией из точек и перетаскиваю до упора вверх (мышка тянет прямоугольник) где эта панель прилипает к верху экрана 6 теперь кликая на этой панели правой кнопкой настраиваю ее - снимаю галочку показать заголовок, ставлю галочки - поверх остальных окон и автоматически уберать с экрана 7 - настраиваю размер панели (так же как и с окнами) 8 возвращаю галочку п.2 это я так подробно описал для того что бы можно было бы посмотреть результат. А ВОТ ТЕПЕРЬ САМ ВОПРОС: как можно сделать эту панель не прописывая в AUTOIT эти все пошаговые действия утраивает 2 варианта 1 - это делаеться с помощью реестра или системных файлов или файлов настройки explorer 2 - может возможно это сделать с помощью GUI еще интересует где находяться настройки "поверх остальных окон", "автоматически уберать с экрана", размер панели и т.д Буду признателен за любые предложения и мысли. Спасибо всем |
В догонку
в догонку Dial_up как запустить соединение так что бы вышло стондартное окно И ка запустить соединение бе этого окна. |
Jangle За показ Панели быстрого запуска и поведение Панели Пуск отвечают ключи ;QStart - настройки [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop] "TaskbarWinXP"= ;STARTUP - настройки: автоскрывать, маленькие кнопки и т.д. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2] "Settings"= Но сочетание параметров, отраженных в этих ключах сложное. Их работоспособность зависит от других настроек Explorer'a. Кроме того, при установке WinXP некторые настроенные параметры будут сбрасываться и забиваться дефолтными настройками. С помощью AutoIt Панель быстрого запуска не настроишь. Фантастика, но если не перетащить хотя бы одну иконку "ручками", то после перезапуска иконки "перетасуются" в нужном и понятном только им порядке. Так происходит, даже если перетаскивать иконки с помощью AutoIt. Самое простое - устанавливать приложения, иконки которых тебе нужны в Панели быстрого запуска, именно в строго заданной последовательности. |
Help! Как АвтоИтом послать программе установки нажатие клавиши "+" на NumPade. Конструкция Send ("{+}") не работает. Там вообщето меню раскрывающееся (такое же как при выборе компонентов Office). Оно внутри окна и по-отдельности пункты не активизируются, только все меню целиком. Остается два способа: по координатам мышом (но ИМХО не надежно, вдруг на другом компе координаты не совпадут...) и стрелками, но чтобы попасть в подменю нужен этот "+". Иначе слишком много ненужного барахла установится:( Сорри, не могу удалить... Сработала стрелка вправо (как я эту клавишу упустил из виду, ума не приложу...) Еще раз сорри за пустой пост... |
Sanja Alone
Цитата:
пожалуй это именно то, что нужно, СПАСИБО Цитата:
Всё правильно, нет такой функции. Но есть сторонняя утилита WinSet.exe (кажется от MIcrosoft), которую я и вызываю. Устаналивает переменные SET в среде WINDOWS |
2 bogomolv - огромное спасибо за информацию!!! Буду думать :sorry: |
1. Добавил скрипт для Teleport Pro 1.38 2. Исправил ошибку в конвертере crta - неправильно импортировались в реестр параметры типа REG_DWORD (значения интерпретировались как десятичные). Кавычки заменил на дописывание к значению префикса "0x" - теперь все правильно (значения считаются шестнадцатиричными). Эта ошибка также касается следующих скриптов: 7-Zip Agnitum Outpost DivX 5 DivX 6 DVDIdle GordianKnot ImageDupeless ISOBuster O&O Defrag Pragma Если кто-то скачал - извините. Можете скачать еще раз или исправить вручную. Я сам случайно заметил данную недоработку, т.к. большинство DWORD параметров были или 0 или 1, а эти цифры одинаковы во всех системах счисления. |
fox_sly Практически так же сделано и у меня, только бы я Вам посоветовал заменить Send на ControlSetText - так оно и лучше и надёжнее будет. Как то вот так: Код:
|
to DenchikK С заменой согласен, просто как писал выше это была одна из первых попыток написать скрипт для соединения, насколько я помню там была другая проблема, что не удалось в свое время уйти от Send('{Enter}'), по крайней мере у меня строка типа Код:
Код:
не работала, окно вообще закрывалось |
Люди обэясните пожалуйста почему когда с ставлю Alcohol 120% при
помощи какого сктрипта: Код:
У меня закрывается WPI, а установка Alcohol продолжается? |
CTEPBA Рискну предположить причину: Алкоголь ставиться примерно так: msiexec /qn /quiet /i setup.msi DRIVER0=a347bus DRIVER1=a347scsi INSTALLDIR="%programfiles%\Alcohol Soft\" /norestart Потому то и не ставиться у тебя он. Вот мой пример. Поправь его под себя: Код:
содержание файла crack.exe (это sfx rar архив, распаковывающийся в каталог, куда уже поставился Алкоголь): crack.exe patch.exe alcohol.reg После распаковки запускается скрипт autoit такого содержания: Код:
а файл alcohol.reg остался от старых версий, на всякий случай: Код:
|
Проблема не в том что он не ставиться все, а вот что когда очередь
доходит до него в WPI, то почемуто WPI закрывается а Alcohol продолжает
установку и все приложения которые стояли после Alcohol не ставяться так,
как уже выгруженно WPI. |
CTEPBA Цитата:
DenchikK Цитата:
|
Sanja Alone Я уже сам догдался теперь использую такой метод установки: Код:
но окно все равно выскакивает, весит потом изчезает само, жалко это тормозит установку. |
Добавил скрипт для Agnitum Outpost 3.0 (в архиве 2 скрипта: для версии 2.7
и для 3.0) CTEPBA Цитата:
Код:
|
Блин, в сети случайно наткнулся на
прогу Almeza Multiset, поставил - вроде делает примерно
то-же+создает оболочку для CD (правда не блещущую интерфейсом :)
) Какие будут мнения? (имхо, ручками в AutoIt конечно увереннее - знаешь что не промажешь, но на мой взгляд когда срочно и на скорую руку - прога то, что надо...) |
Sanja Alone Насчет реестра я не пробовал, а окна это про "новое оборудование" |
В треде твиков задавали вопрос про установку режимов "НИКОГДА" для
текущей схемы электропитания. Когда мне тоже не помогли твики реестра по установке схемы питания "никогда", я сделал это через AutoIt, может корявое решение, но все работает прекрасно: Код:
|
Поделитесь скриптом установки DRWEB 4.33 Заранее спасибо. |
kovdaev Посмотри здесь HTML коды:
|
Всем доброго здравия!!! Возникла такая проблемка как с помощью Autoit 2.63 ввести в поле ввода маленькую букву "я" Код:
или другую строку с "я" не срабатывает, вместо я вставляет пустую строку. |
Помогите. Существует проблема с набором русского текста в элементах
управления. Набираются буквы нормально только при русской расскладке клавиатуры. Что мне нужно добавить в начало моего скрипта, чтобы расскладка автоматом переключалась на русскую? Заранее спасибо |
Это будет происходить массово на разных компьютерах с помощью
групповых политик. И сочетания клавиш для переключение расскладки у всех
разная и язык по умолчанию тоже разный. Вот такая
проблема? |
Доброго времени суток! ВОт хотел бы попросить помощи в следующем вопросе: как с помощью AutoIt или в сочетании Autoit + Win Api (виндовских DLL- ок) послать скопировать файл на FTP? Попробовал следующее (по - тупому): Цитата:
но почему-то файл 0.txt копируется на рабочий стол с именем 1.txt Спасибо всем |
Спасибо qeraser. Это действительно то, что нужно. |
Добавил скрипт для ABBYY
FineReader 8.0 Professional Edition (в архиве 2 скрипта: для версии
7.0 и для 8.0) vserd Цитата:
1. Пора переходить на AutoIt 3.x (я тоже начинал с 2.64). Для конвертации имеющихся скриптов в новую версию можно исп-ть "v2 to v3 Converter" (AutoIt3\Extras\v2_to_v3_Converter\AutoItV2toV3.exe) 2. По сути. Вот два способа, навскидку: Код:
Код:
a_s_malyshev Цитата:
|
Да нет проблема вот в чем,
например: Run("Notepad.exe") WinWaitActive("Безымянный - блокнот") Send("Привет") Если при запуске блокнота стоит английская раскладка, то получаются ироглифы. Если при запуске блокнота стоит русская раскладка, то получаются все нормально. Вот мне и надо чтобы после открытия блокнота, какой-нибудь командой поменять расскладку клавиатуры на русскую. И при этом файл должен не в DOS кодировке. |
Добавил скрипты Compare It 3.8.1660 Rar Key 7.0.1180 a_s_malyshev 1. Можешь прописать в реестр вот такие параметры, например: Код:
Сочетание клавиш для последовательного переключения языков находится здесь HKEY_CURRENT_USER\Keyboard Layout\Toggle, например: Код:
selanec555 Цитата:
|
Огромное спасибо!!! Пробую. С уважением, Александр |
цена MultiSet
" ...Нужно только заплатить 99$ за одну копию или найти крякнутую экзешку для старой версии 1.3 (текущая 1.5) и не иметь никакой возможности что-то подправить при неудовлетворительной работе какого-то "скрипта" программы... " для русскоговорящих пользоватлей, насколькоя я понял регистрация 300руб. смотрим тут: http://www.almeza.com/press/rus/pay/pay.html |
selanec555 Цитата:
|
Цитата:
Как мне кажется MultiSet - это решение для большинства простых пользователей, которым не надо думать как там написать скрипт для той или иной проги. = просто установил ее вместе с МultiSet и все, не паришься. А со скриптами АвтоИт надо еще и думать и после выхода очередной версии любимой проги надо скрипт переписывать, а если этих любимых прог 10, 20, 100, 500? Че все перелапачивать, нет уж нафиг, нафиг. Ну в принципе скрипты конечно могут и пригодится но только в редких случаях, очень редких. Не знаю как вам а я эту прогу уже использую!!! |
selanec555 - ну а причем тут AutoIt скрипты, создайте тему и там описывайте, все что захочется, а насчет простоты установки полностью согласен с Sanja Alone - так как довольно часто встречаются нестандартные ситуации при установке популярных программ |
Sanja Alone Цитата:
Нет не помог, при первом вхоже он не помог, но если ставить Alcohol автоматом уже в полностью загруженной системе все ставиться и ничего не выскакивает, даже не заню как от это избавиться. |
CTEPBA Цитата:
|
Цитата:
Неужно на АвтоИт можно описать ВСЕ нестандартные ситуации? Или как? Для каждого сетапника все описывать? Я к тому что есть решение гораздо удобнее. А решать каждому. |
Sanja Alone У меня он тоже от туда вноситься, но ничего не пашет. |
Интересная ситуация, может кто сталкивался ? Кусочек скрипта для регистрации в сети (домен 2000): ... $AUserName=@UserName MsgBox(4096, "Имя пользователя (Login)", $AUserName) ... Работает в WIN2000, WIN XP. Под WIN 98 ни в какую. после регистрации то же срабатывает везде. Ограничения WIN98 или глюка ? |
AlikPan Цитата:
|
Sanja Alone Спасибо. А через реестр брать Login - это нормально ? |
Проблема с последним окном в русификаторе для FastStone 2.28 http://www.4ru.info/FastStone.htm Окно нафиг не определяется со всеми вытекающими... Но вот что интересно - я забыл однажды снять из трея застопорившийся скрипт, и запустил его снова - окно видимо определилось, скрипт сработал. Замучился уже, кучу вариантов перепробовал - не хочет работать! |
AlikPan Цитата:
DenchikK Цитата:
|
DenchikK а вариант с простым копированием FSViewer.ru в папку программы, не нравится? |
EgOrus Так то оно так, но просто хочется понять, как заставить работать инсталяху. Спортивная злость, как говорится. Sanja Alone Видать что-то я не так делаю - не получается. |
Подскажите. А можно ли как-нибудь получить список всех имен
компьютеров с Dns- суффиксом (например: inf1.scool.ru) в анном домене с
помощью AutoIt или же какой-нибудь другой программой например выгрузить в
файл. Очень нужно |
Добавил скрипты AutoGordianKnot 2.20 FastStone Image Viewer 2.2x (Image Viewer + русификатор + Screen Capture + Photo Resizer) DenchikK Цитата:
a_s_malyshev Цитата:
Может вот это подойдет: NET VIEW - эта команда выводит список доступных для совместного использования ресурсов данного компьютера. Kогда используется без параметров, отображает список компьютеров текущего домена или сети. |
Цитата:
Команда хорошая, но мне нужно полные имена компьютеров. Т.е. test.scool.r36.ru <- Что то вроде этого. Они должны выдаваться из системы. А не так чтобы я получил список с помощью команды net View а потом добавлял к элементам списка хвосты (scool.r36.ru). Если какая-нибудь такая команда? |
Здравствуйте. Спасибо, что вы есть :) Прошу помочь написать простенький (по-видимому) скриптик. Имеется выделенный текст. При нажатии определенного сочетания кнопок этот текст необходимо сохранить в виде отдельного *.txt файла с названием - либо соответствующим первым трем словам первой строки текста; - либо просто порядковым номером (только как в этом случае отследить, какой порядковый номер в папке явл-ся последним) в определенную папку. Очень надеюсь на вашу помощь. |
Здравствуйте. Каким образом можно отловить AutoIt'ом перезагрузку ПК,
у меня есть пара скриптов установки софта, дак вот так есть такие
дистрибутивы котоые сами перезагрузают комп :( как это
отловить/недопустить/корректно обработать?
Спасибо. |
ghosty Цитата:
Ну, можно вот так, например: Код:
Цитата:
selanec555 Цитата:
MultiSet тут явно не поможет :) Нужно писать скрипты для этих приложений и обрабатывать данную ситуацию - либо ключами тихой установки с отменой перезагрузки, либо установкой клацаньем по окнам с отрицательным ответом на вопрос о перезагрузке. |
|
Помогите написать скрипт нужно вызвать "Свойства панели задач и меню пуск" проверить стоят ли галочки в определенных местах если нет то установить галочки затем закрыть окно. Заранее спасибо. |
kovdaev Цитата:
Лови: Код:
|
kovdaev Двумя страницами ранее уже приходлось писать, что за поведение Панели Пуск отвечает ключ [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2] "Settings"= Настрой Панель под себя, скопируй ключ в reg-файл, а затем воспроизведи... Sanja Alone А зачем в твоем последнем скрипте проверка If ControlCommand ($Title,'','Button1','IsChecked','')=0 Then? |
bogomolv Цитата:
|
Ответ на вопрос зачем это нужно, в моем случае пользователи делают что хотят, но когда начинаются проблемы зовут меня при этом, мне удобно когда скажем панель задач не убиралась с экрана, пришел запустил скрипт и все галочки стаят там где надо и не стоят где ненадо, мне кажется это удобно. Спасибо большое за помощь. |
Кто-нибудь знает, как переключить раскладку клавиатуры в En,
например? Пробовал API функцию - "LoadKeyboardLayoutA" $result = DllCall("user32.dll", "long", "LoadKeyboardLayoutA", "str", "00000409", "long", 1) не отрабатывает. Имхо, прежде чем пользоваться SEND, не мешало бы переключить клавиатуру. |
asdfghjk Цитата:
Цитата:
|
Спасибо за ответ. Вышеописанный метод я действительно не заметил.
Однако, Цитата:
Код:
Если запустить из-под русской раскладки, наоборот, латиницу неправильно отображает. Скрипт сохраняю в ANSI-кодировке. У кого-то правильно работает? Закомментированные reg-файлы (переключение клавиатуры, как ты рекомендовал) не отрабатывают ни в скрипте, ни при запуске руками (точнее, отрабатывают: реестр правят, но на раскладку это не влияет). WinXP RUS SP2. Никаких автопереключателей клавиатуры нет. |
asdfghjk Цитата:
Цитата:
1. Любой импорт данных в реестр нужно делать при пом. ф-ции RunWait - т.е. нужно дождаться окончания операции импорта. Ф-ция Run просто запускает приложение/команду, указанную ей в кач-ве аргумента и (не дожидаясь завершения) скрипт идет дальше. 2. Ты не до конца понял описанный мной метод. Импортируя в реестр вышеуказанные ключи, ты просто включаешь возможность переключения на разные языки с пом. разных комбинаций клавиш. Но ведь для самого переключения нужно еще сделать Send('^+1') /Send('^+2')/, а не просто импортировать reg-файлик :) Похоже я нашел причину твоих проблем - это Блокнот. В Блокноте должен быть указан шрифт с кириллическим набором символов (а по ум. там Terminal - без такового). Вот нужная ветка реестра: Код:
P.S. Ты бы не извращался с импортом reg-файликов, а юзал ф-ции АвтоИта: RegWrite/RegDelete (лишние reg-файлы неудобны в подобных ситуациях). Если лень переводить reg в АвтоИт - можешь воспользоваться моим конвертером crta. |
Sanja Alone Да, протупил я насчет Send('^+1'). Сейчас работает, только вместо точки "ю" вставляет. Собственно, меня сей вопрос интересует только из любви к искусству. Практической необходимости в нем нет. Хотелось бы все-таки уточнить, у кого-нибудь она (функция Send) просто "тупо посылает указанные символы "? Безо всяких раскладок клавиатуры. Свой Блокнот я проверил - вышеописаные ключи соответствуют. |
asdfghjk Цитата:
Для примера возьмем твой код: Код:
Я решил написать это в форуме, т.к. от подобной проблемы не застрахован никто. Дело в том, что на моей рабочей машине стоит WinXP SP1. Я проверил скрипт на VMWare с установленной WinXP SP2 - н-рые кириллические символы заменились кракозяблами. Логически поразмыслив о возможной причине подобного казуса, я пришел к выводу, что все дело в настройках кодовой страницы в самой Винде. Короче говоря, идем по многократно описанному в свете борьбы с кракозяблами пути, и смотрим, чтобы там было такое: Код:
|
Sanja Alone Саша, по поводу [HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage] могу лишь процитировать очень уважаемого специалиста, советы которого ни разу не оказались сомнительными: http://forum.ixbt.com/topic.cgi?id=22:29304:2488#2488. Добавлено, спустя 1 мин. Извиняюсь за прямую ссылку. Посмотри ее копи-пастом... |
bogomolv Все это понятно, но какая есть альтернатива? К тому же, я не собираюсь смотреть немецкие/японские/китайские и т.п. сайты, а видеть меню того же Алкоголя мне приятнее на русском (а не каракулями или знаками вопроса) :) Из описанных в приведеной тобой теме форума способов решения проблем "кракозяблов" значатся (насколько я понял):
|
Sanja Alone Я у себя (XP EN) только 1251="c_1251.nls" выставляю, а шрифты даже не импортирую :) Ну и regopts.txt применяю, чтоб не дергаться. У меня, впрочем, очень мало русского софта, а при наличии двух языков я выберу английский. Остальные кодовые страницы были внесены в статью по причине "стандартности" решения и его многократном тиражировании на страницах форума. О побочных эффектах мне известно, как-то Павел Городянский упоминал на страницах форума (его сайт http://ourworld.compuserve.com/homepages/PaulGor/ ), но в реальности, люди которые хотят избежать проблем с отображением кириллицы, могут никогда и не столкнуться с некорректным отображением других языков :) |
Возможно ли сделать так, что бы весь процесс установки программы был
невидим? |
Sanja Alone Там описан еще один способ. Его и использую. Код:
Проблем нет. |
Vadikan Цитата:
spol81 Цитата:
Ответ на твой вопрос краток: Да. Но нужно бы конкретизировать задачу: какого именно приложения? Не у всех ведь есть ключи тихой установки (точнее, не все ими дают пользоваться). Для начала определи какой инсталлятор исп-ся в этом приложении, затем прочитай статью Типы инсталляторов. А уже потом обращайся к АвтоИту. bogomolv Цитата:
Угу, но я не посчитал его серьезным - нужно будет попробовать. Только потом придется привести все к более удобному виду ("Пуск" в 2 колонки): Код:
|
Sanja Alone В моем unattend.txt стоит вообще-то CustomDefaultThemeFile="C:\WINDOWS\Resources\Themes\Моя тема.theme". Так что, скорее всего, "приводить что-либо к более удобному виду не приходится... |
Здравствуйте! У меня вопрос общего характера, пишу на autoit'е небольшой авторан, с возможностью выбора простой или тихой установки. Хочу вставить в него красивый прогресс бар. Посмотрел в хелпе, есть 2 функции одна- GUICtrlCreateProgress(рисует сам прогресс бар), другая- GUICtrlSetData(задает значение в процентах прогрессбару). К чему привязать ход процесса в прогресс баре? К месту на жестком диске, не есть гуд, т.к. у меня ntfs и она сразу выделяет место под весь файл. К чему можно еще привязать прогресс бар?? |
Пытался сейчас установить Alcohol 120%, но при запуске установки
появляется окошко с ошибкой там написано RunWait ( @ScriptDir&'\'&$file & ' /qn REBOOT=Suppress' ) Error: Unable to execute the external program. Потом пытался поставить Outpost, но там подобная ошибка в этом месте Run ( @ScriptDir&'\'&$file ) Что я делаю не правильно? |
Всё сам разобрался ;) Просто не заметил что там название файла
переменной присваивается. |
Возникла следующая проблема: требуется установить программу в папку, которая находится на том же диске, что и Windows. Вопрос: Существует ли какая-нибудь переменная окружения, в которой бы хранилось имя диска, на котором Винда установлена (что-нибудь по аналогии с @ScriptDir или @WindowsDir)? Может есть способ выдрать эту букву из какой-то из этих переменных. Если вопрос покажется дебильным извиняйте, AutoIt'ом пользуюсь второй день |
bogomolv Цитата:
Вот только что попробовал такой способ (описанный еще ув. Vadikan). Получилось... Но только при обычной установке. При установке с помощью WPI тема вроде как есть, но не применяется. То есть в свойствах экрана стоит имя моего файла, но, при этом, тема стоит дефолтная(даже не дефолтная XP, а просто классическая, "необьемная"). Если выбрать ту же тему еще раз и нажать применить - все встает на свои места. Что это и как побороть я пока не пойму. Может можно какой-то скрипт красивый сделать, чтобы вот так щелкать не приходилось? |
DmitryOlenin нужно еще использовать модифицированный файл uxtheme.dll воспользуйся поиском и никакие авто скрипты тут не нужны, все ставится само собой должно. у меня работает. |
specialist Я пользовался поиском. Естественно я использую модифицированный uxtheme.dll. Хотя дело не в этом файле. Во-первых, я написал, что при обычной установке(без WPI) тема прекрасно ставится. Во-вторых, все изменение темы заключается в фоновой картинке(которая, кстати, другим путем уже прописана) и, главное, в измененных курсорах. |
a-v-g-u-r Цитата:
Вот тебе два варианта:
|
DmitryOlenin Цитата:
Цитата:
All Что-то давно не было обновлений AutoIt! Имевшаяся у меня версия v3.1.1 не позволила красиво реализовать одну функцию графического интерфейса. Полез за обновлениями. Новых официальных версий - нет. В "бетках" последней числится v3.1.1.100. Ее и взял. Сразу нашел новый стиль $LVS_EX_CHECKBOXES для функции GUICtrlCreateListView , реализующий то, что меня интересовало. Но пост о другом - о том, что, скорее всего, ждет нас в новом релизе: Новых функций мало. В основном фиксы, уточнения и новые возможности функций графического интерфейса и работы с внешними библиотеками и объектами. Удивило, что при этом AutoIt3.exe "разросся" в объеме почти в полтора раза. И самое главное - авторы вновь (на моей памяти это происходит уже второй раз) изменили логику сравнений TRUE/FALSE. В итоге сразу перестали работать два моих скрипта. Придется проводить ревизию всей своей коллекции... :( Нашелся и забавный глючок: если оператор #ce стоит в последней строке файла и не отбит "концом строки", это приводит последнюю бету в жуткое замешательство, и скрипт не стартует секунд 30-40, потом все работает, как надо. |
bogomolv Цитата:
Это установка, в которой используется WPI. То есть программы можно выбирать. Об этой программе можно почитать например на ээтом же сайте и форуме. Цитата:
А он остался? Я бы с радостью воспользовался. |
Добавил скрипт DaemonScript 1.6.0 bogomolv Цитата:
Вопросы по WPI Выбор устанавливаемых приложений Цитата:
|
DmitryOlenin Код:
Цитата:
Пропиши в CMDLINES.TXT заветную строчку и подложи к CMDLINES.TXT два файлика. И задавай установку дров и программ, каких хочешь, на какой хочешь стадии и с какой тебе нужно логикой ... Код:
|
Sanja Alone Цитата:
Я обломался на $srch=FileFindFirstFile().... If $srch=... Таких изменений не одно. Скачай AutoIt3.chm и посмотри History. |
Добавил скрипты Avenger 1.0.5.9 Unlocker 1.7.7 bogomolv Цитата:
|
Sanja Alone Ключевое слово твоего поста - "любимые". В числе любимых прог, видно, оказалась и WPI. Против этого чувства бессисльны все доводы... И только от нечего делать попридираюсь :) 1) $LVS_EX_CHECKBOXES для функции GUICtrlCreateListView в AutoIt как раз отвечает за галочки в списках; 2) какое такое определение исключает в приведенном мной варианте cmdlines.txt возможность его применения, когда приложения находятся на отдельном DVD? |
bogomolv Цитата:
В желании приукрасить свой мультибутовый DVD с Виндами, я даже намеревался перейти от консольного bcdw к gui-шному EasyBoot, но неудобсто его настройки (нет прямого редактирования конфиг-файла) и невозможность выбора разных шрифтов (хотя бы для пункта меню и его описания) мне не понравились (конечно, можно к фоновой картинке "пририсовать" описания другим шрифтом, но это лишняя морока). Цитата:
Цитата:
:biggrin: Ну нет у меня желания ваять свой Гуи (то, что это несложно ты и сам знаешь) на АвтоИт-е, имея подходящую (ПОКА !) прогу для интересующих меня задач. Другими словами, я не хочу "изобретать велосипед", даже не взирая на то, что он и не идеален... Если у тебя есть время и желание переплюнуть javascript-овый WPI на АвтоИте - дерзай. Если прога выйдет лучше (возможности АвтоИт-а всецело этому способствуют) и ты представишь ее на суд общественности, а не сделаешь только для себя, то я буду первым, кто перейдет с WPI на твой вариант. |
Sanja Alone Цитата:
Нет, Саш, исходный посыл был совсем иным - не надо ни на что переходить, если есть AutoIt! Типа, нам не нужны чужие глюки, нам своих хватает. :) Цитата:
В 3.1.1 есть $TVS_CHECKBOXES для GUICtrlCreateTreeView. Ей и пользовался. А GUICtrlCreateListView ближе по назначению к решавшейся задаче. Соответственно, код получается "красивше". |
Не судите строго помогите с скриптом Вызываем "Свойства папки" Вкладка "Вид" Проверка вкладок стоит ли отметка в определенных позициях. Заранее спасибо. |
kovdaev Замени в скрипте, предложенном тебе Sanja Alone в http://forum.oszone.net/showpost.php?p=384015&postcount=260, Run ('RunDll32.exe shell32.dll,Options_RunDLL 1') на Run ('RunDll32.exe shell32.dll,Options_RunDLL 0'). $Title у окошек сам догадаешься поменять или тоже "не судить тебя строго"? :) |
Спасибо. |
Вопрос к уважаемым специалистам от AutoIt: "Тихая" установка Punto Switcher 2.9. (Специально взял себе попроще для начала) ------------------------------------------------- If WinExists(@ScriptName) Then Exit AutoItSetOption("TrayIconHide", 1) BlockInput (1) Run( "setup_ps29.exe") WinWait("Установка") If WinActive("Установка")=0 Then WinActivate ( "Установка" ) EndIf WinWaitActive("Установка") ControlClick("Установка", "Готово", "Button3") BlockInput (0) ------------------------------------------------- ControlClick("Установка", "Готово", "Button3") - не работает. "Нажатие" батона не происходит. Хотя посылка send("{ENTER}") вместо - "ControlClick" отрабатывает нормально, но не всегда же пользоваться ENTERом. Мануал вроде полистал - выглядит типа всё нормально. В чём дело не пойму, может кто подскажет? Меня тоже "Не судите строго". |
kovdaev Цитата:
Специально для тебя, как любителя настройки через окошки, дам эту ссылку - тут можешь посмотреть как вызвать интересующие тебя диалоговые окна (и множество других) через rundll32. Facet Цитата:
Цитата:
|
Facet Punto Switcher можно установить еще "тише": 1) скопировать каталог с установленной программой; 2) воспроизвести сохраненные (со всеми нужными настройками) ветки реестра: HKEY_CURRENT_USER\Software\Punto Switcher\2.8 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\Punto Switcher 2.8 HKEY_LOCAL_MACHINE\SOFTWARE\Punto Switcher\2.8 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Punto Switcher 2.8 В твоей версии Punto Switcher в конце приведенных веток реестра, очевидно, будет значиться версия 2.9. Автозапуск Punto Switcher прячется в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
Спасибо за пояснения Sanja Alone . Я как раз на этом и застрял при проверке стоит галочка или нет, уже хотел просить совета. Но все равно спасибо. Возможно в дальнейшем разработчик добавит данную функцию в свою программу. |
kovdaev Выходит, я зря ехидничал? Тогда в порядке извинения: Код:
Но, может, все-таки лучше задавать эти параметры напрямую через реестр? |
Сегодня вечером попробовал все работает. Можно еще один вопрос по скрипту drweb? Сам вопрос: Если разрешение экрана самое низкое 800х640, стандартный драйвер windows, часть кнопок за пределами экрана и скрипт не работает, не приятно однако: сам скрипт: #cs ---------------------- Приложение: Dr.Web На какой(их) версии(ях) тестировалось: 4.33 Автор скрипта: Sanja Alone (http://forum.oszone.net/member.php?userid=28800) ---------------------- #ce ;предотвращение возможности множественного запуска скрипта If WinExists(@ScriptName) Then Exit AutoItWinSetTitle(@ScriptName) ;скрыть в системной панели индикатор AutoIt ;AutoItSetOption("TrayIconHide",1) ;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки. AutoItSetOption("TrayIconDebug", 1) If ProcessExists ( "ps.exe" )<>0 Then ProcessClose ( "ps.exe" ) ProcessWaitClose ( "ps.exe" ) EndIf ;нельзя блокировать при находящемся в памяти Punto Switcher-е - не будет работать установка ;блокируем мышь и клаву ;If @OSType="WIN32_NT" Then BlockInput ( 1 ) #cs ---------------------- объявление переменных ---------------------- $Title - заголовок окна установки $file - установочный файл $programgroup - в какую программную группу положить ярлыки программы $validkey - Легальный ключевой файл (положите его в любой подкаталог текущего, по ум это validkey) Для регистрации программы нужно положить файл drweb32.key в каталог из к-рого запускается установка, тогда файл-ключ будет скопирован в каталог DrWeb-а и программа будет зарегистрирована (если ключ подойдет). Это в идеале, но т.к. тихая установка в версии 4.33 не работает, и при обычной установке с правильным key-файлой запускается антивирусная проверка (к-рую нельзя отменить), то лучше положить в установочный каталог невалидный ключ, а "правильный" скопировать в каталог установленного DRWeb-а уже после завершения инсталляции. Файл setup.iss внутри этого архива - для версии 4.32b. Я дополнительно вложил в архив еще и setup.iss для 4.33 - может у кого-то, как-то получится заставить заработать тихую установку и для этой версии. ---------------------- #ce Global $Title='Установка Dr.Web', $file='drweb-433-win-ru.exe', $programgroup='Антивирусы\Dr.Web', $validkey=@ScriptDir & '\validkey\drweb32.key' Run ( @ScriptDir&'\'&$file ) WinWaitActive ( 'Dr.Web - InstallShield Wizard' ) Send("{ENTER}") WinWait ( $Title, 'Вас приветствует программа' ) WinActivate ( $Title, 'Вас приветствует программа' ) WinWaitActive ( $Title, 'Вас приветствует программа' ) Send("{ENTER}") WinWaitActive ( 'Внимание!!!' ) ;поставить галку "Да, на компьютере не установлено других антивирусных продуктов." ControlClick ( 'Внимание!!!', '', 'Button4' ) Send("{ENTER}") WinWaitActive ( $Title, 'Лицензионное соглашение' ) ;выбрать "Я &принимаю условия лицензионного соглашения" ControlClick ( $Title, 'Лицензионное соглашение', 'Button3' ) Send("{ENTER}") WinWaitActive ( $Title, 'Выбор папки назначения' ) ;по ум. C:\Program Files\DrWeb $InstPath = ControlGetText ( $Title, 'Выбор папки назначения', 'Static4' ) Send("{ENTER}") WinWaitActive ( $Title, 'Вид установки' ) ;Обычная Send("{ENTER}") WinWaitActive ( $Title, 'Выбор папки' ) ControlSetText ( $Title, 'Выбор папки', 'Edit1', $programgroup ) Send("{ENTER}") WinWaitActive ( $Title, 'Начало копирования файлов' ) Send("{ENTER}") AutoItSetOption("MouseCoordMode",2) WinWaitActive ( $Title, 'Настройки прокси сервера' ) MouseClick("left", 639, 472, 1, 0) ;это окно появляется только в сл. неподходящего key-файла WinWaitActive ( 'Вопрос', 'Не обнаружено коммерческого или демонстрационного ключевого файла' ) ControlClick ( 'Вопрос', 'Не обнаружено коммерческого или демонстрационного ключевого файла', 'Button2' ) ;и сразу идет переход к завершению установки WinWaitActive ( $Title, 'Программа InstallShield Wizard завершена' ) ;выбрать "Нет, перезагрузить компьютер позже." ControlClick ( $Title, 'Программа InstallShield Wizard завершена', 'Button2' ) Send("{ENTER}") Sleep ( 50 ) RunWait ( @Comspec & ' /C taskkill.exe /F /IM notepad.exe /IM spidernt.exe', '', @SW_HIDE ) ;копирование рабочего ключевого файла в каталог антивируса (если файл существует) If FileExists ( $validkey ) Then FileCopy ( $validkey, $InstPath & '\', 1 ) ;копирование дополнений к базе вирусов в каталог DrWeb-а (если они есть) If FileExists ( @ScriptDir & '\drw?????.vdb' ) Then FileCopy ( @ScriptDir & '\drw?????.vdb', $InstPath & '\drw?????.vdb', 1 ) FileCopy ( @ScriptDir & '\drw?????.txt', $InstPath & '\drw?????.txt', 1 ) EndIf ;удаление ярлыка с рабочего стола FileDelete ( @DesktopCommonDir & '\Сканер Dr.Web.lnk' ) ProcessWaitClose ( $file ) ;BlockInput ( 0 ) Может автор поправит, Это я к чему, может еще кому пригодиться. Заранее спасибо. |
bogomolv Цитата:
Спасибо, но дело не в том, чтобы просто получить "тихий" инсталлятор" Punto Switcher. Я его попросту перепаковал InnoSetupом вместе со всеми ключами реестра и файлами, а установщик InnoSetup отлично поддерживает "тихие" ключи при инсталляции. В порядке "освоения" AutoIt хотелось понять из-за чего не работает вроде бы нормальный скрипт. А за ключи благодарствую - я оказывается "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\Punto Switcher 2.8" не включил в установщик, сейчас перекомпилирую. Спасибо, также Sanja Alone. То-то мне показалось, что батоны меняют номера. Значит такое действительно может быть. И за поправку "If WinExists(@ScriptName) Then Exit". |
kovdaev Цитата:
Цитата:
Цитата:
Цитата:
|
Предлогаю вот такое решение вопроса переключения языка
клавиатуры.Основанное на функциях WinAPI. Работать должно начиная с Win98. Код:
Дополнительные языки. Код:
|
Внес существенные изменения в свой конвертер crta
(ConvRegToAu3) 2006-01-31
история изменений |
Добрый день ! У меня такая задача: Есть несколько программ для загрузки прайс-листов разных поставщиков товара. Необходимо последовательно: запустить каждую из них, получить прайс-лист, закрыть программу, запустить следующую. Как я понял, с помощью AutoIt это сделать вполне реально. Теперь ВОПРОС: можно ли выполнить перечисленные действия так, что бы программы для загрузки прайс-листов запускались НЕВИДИМЫМИ, при условии, что все программы ведут диалог с пользователем (задаются вопросы с вариантами выбора типа "Обновить / Отмена" ??? Если можно, то начну разбираться с AutoIt. Напишите, пожалуйста, в общих чертах как это сделать, или посоветуйте - где об этом можно почитать. Спасибо. |
Добрый день! Нужна помощь профи. Есть программа, управление которой я хочу автоматизировать при помощи AutoIt. Суть проблемы в том, чтобы узнать какого цвета пиксел в данной точке экрана, черный или белый? Есть ли в AutoIt методы "считывания" цвета пиксела в заданной точке? Заранее спасибо! |
elakt Цитата:
Цитата:
Цитата:
lemon76 Цитата:
|
Спасибо за ответ! Теперь появились новые вопросы. 1. Запускаем блокнот в невидимом окне: Run("notepad.exe", "", @SW_HIDE) 2. Далее мне нужно дождаться, когда это окно появится. Среди стандартных команд не нашёл ту, которая дожидалась бы появления НЕВИДИМОГО окна, поэтому использовал команду задержки Sleep, что бы дождаться загрузки блокнота. ВОПРОС: можно ли решить эту задачу иначе? 3. После того, как блокнот загрузился, посылаю ему строку текста: ControlSend("Безымянный - Блокнот", "", "Edit1", "Send text to notepad") 4. Затем посылаю команду, которая в меню блокнота выбирает пункт "Выход": WinMenuSelectItem("Безымянный - Блокнот", "", "&Файл", "В&ыход") 5. После этого на экране появляется окно с вопросом "Сохранить изменения? Да/Нет/Отмена" - не смотря на то, что основное окно блокнота невидимо! Ответить на этот вопрос проблем не составляет, но... ВОПРОС: как избежать появления окна с вопросом на экране? То есть что бы оно, как и основное окно, было невидимым? Можно дождаться его появления и "спрятать" командой WinSetState, но в этом случае окно всё равно мелькнет на экране. Как быть? |
Еще вопросы: 1. Нужно дозвониться до провайдера, выполнить некоторые действия, разорвать соединение. Это нужно сделать в НЕВИДИМОМ режиме, то есть без отображения окон. Как это можно сделать? 2. Как проверить, есть ли соединение с интернетом? 3. Как проверить, активно ли соединение с заданым именем? |
elakt Цитата:
Цитата:
В плане работы с сетью AutoIt пока откровенно беден. Посмотри раздел справки Network Functions
|
Sanja Alone Цитата:
Есть некая программа для получения прайс-листа и отправки заказа поставщику. Ключи для автоматического получения/отправки эта программа не поддерживает, все операции нужно выполнять нажатием соответствующих кнопок, подтверждать выбор, отвечать на вопросы программы. Цель - автоматизировать этот процесс. Желательно так, что бы все действия были "невидимы" для пользователя и выполнялись в фоне. Блокнот использовался только для примера. Если я правильно понял, то можно "спрятать" главное окно программы, но нельзя избежать отображение диалогов программы с пользователем? |
как с помощью AutoIt сменить раскладку клавиатуры. а то столкнулся с такой проблемой: у меня язык по умолчанию английский стоит, а винда русская, так вот при написании скрипта управления блокнотом не работают горячии клавиши т.е. сочетания ALT+,CTRL+ и т.д. с русскими символами пока включена английская раскладка. Send("{ALT down}") Send("{ALT up}") Send("{ф down}") Send("{ф up}") вот не работает если не сменить раскладку. как мне быть? |
2All Помогите разобраться как сделать пренос стороки при использовании функции SplashTextOn: SplashTextOn("", "Длинный текст", 600, 400, -1, -1, 1, "Comic Sans MS", "14", "500") Надо принудительно расставить переносы, т.к. автоматически получается некрасиво. |
__Koval__ А ты не пробывал править через реестр, расскладку клавиатуры, или я твою проблему не правильно понял!? |
boss911Конечно не правильно :) Не работают комбинации спецклавишь с русскими символами пока раскладка английская. |
да и вот еще что не понимаю почему не работает эта
команда: Run("WinRAR.exe", "D:\0NoInstall\WinRar\", @SW_MAXIMIZE) |
elakt Цитата:
Цитата:
__Koval__ Цитата:
Цитата:
Второй параметр - это рабочий каталог, а не путь. А в первом параметре указывается полный путь, а не имя экзэшника. Правильно писать так: Код:
godoo Цитата:
|
Помогите разобраться с установкой PowerDVD. Написал скрипт: Код:
Не понимаю - иногда срабатывает, иногда останавливается на страничке ввода персональных данных и ключа диска. Помогите! |
Sanja Alone Цитата:
За то я проверил, все отлично работает. Огромное спасибо. А можно ли как нибудь по ярлыкам кликать, не используя метод координат? |
__Koval__ Попробуй ALT и стрелки. Например у меня так отлично работает: Send ( '{ALT}' & '{RIGHT}' & '{RIGHT}' & '{RIGHT}' & '{RIGHT}' & '{UP}' & '{ENTER}' & '^+{TAB}' ) - до нужной закладки в меню, а потом ControlClick-ами Sanja Alone Огромное спасибо всё получилось! |
godoo так ведь не всегда известно точное положение ярлыка вот в чем фишка. |
Sanja Alone Цитата:
Блокнот был призван ПРОИЛЛЮСТРИРОВАТЬ проблему, которая возникла в другой программе и не более того :-) Sanja Alone Цитата:
Ценное замечание. Делаю вывод, что не все программы ведут себя подобным образом. Спасибо Sanja Alone! |
Пдскажите, можно ли написать такой скрипт, чтобы во время установки
программ блокировал клаву, и мог разблокировать только по паролю, или
горячим клавишам. А то поставишь сразу нескольким юзверям ставить софт, а
они все лезут что-то менять, трогать
т.д. |
Matroskin13 Цитата:
Очевидно, что Send("{TAB}") иногда просто не успевает перейти к след. эл-ту управления. Решений два:
__Koval__ Цитата:
Код:
Aspirine Цитата:
Цитата:
|
Sanja Alone Цитата:
Виноват, ступил. А мышка блокирутся при BlockInput(1)? Может можно сдеалть, что бы снималась блокировка после определённого, последовательного нажатия епо кнопкм мыши. |
Молодежь! :) Вы не перепутали эту ветку с горячей линией службы поддержки? Вынь-да-положь им решение! Я о "А мышка блокирутся при BlockInput(1)?" и пр. А слабо проверить? Это займет меньше времени, чем написание поста! All Страсть, как хочется похвалиться! :) Часто нужный параметр прячется в реестре по "адресу", содержащему ID железки или пользователя, ключ безопасности и пр. Для таких случаев в AutoIt есть оператор RegEnumKey(). Однако при этом нужно выстраивать циклы, делать проверки и т.д. Нашел красивое решение подбной задачи, когда мне нужно на стадии CMDLINES узнать будущее разрешение экрана устанавливаемой Windows. Код:
|
Прастите чайника :sorry: (тем более, что не в тему - ну не нашел я
тему :-) ) Нада вставить путь из переменной "$path") в поле Edit Делаю примерно так: Код:
В результате в поле вставляется какая-то лабуда типа "C:\Ё ЁigЁiЁ FiЁEs\ЁiЁi ЁiFTWAE\ЁEEFAЁ Ё ЁiFEЁiЁEAL" :blink: |
Cherepan Такая лабуда обычно получается, если включена не та раскладка клавиатуры. Например в винде стоит русский, а писать пытаешься по английски. |
VelDmi Ага... Нада попробовать. Пасиба. Сразу выскакивает другой ворос - как определить, какими кнопками переключает юзер раскладку? Или как сменить раскладку средствами AutoIt? |
|
Sanja Alone Пасибки, работает. VelDmi После переключения раскладки еще интересней: C^\~ ~ig~i~ Fi~Es\~i~i ~iFTWAE\~EEFA~ ~ ~iFE~i~EAL Send() не хочет нормально работать с латиницей в любой раскладке. С кириллицей проблем нет. |
Cherepan А случаем не в Виртуальном писюке Send() делаешь? У
меня такое в Виртуальном, а в обычном -
нормально. |
Scratch56 Не, в винде XP SP2 RUS |
Еще одна интересная особенность - этот глюк не во всех окнах. В
некторых все прокатывает на ура. |
Можно
ли с помощью AutoIt выбрать каталог? Хочу нацарапать оболочку, которая
мне будет конфиги для nnBackup писать, дык выбрать каталог для бэкапа
пока только вручную получается... Нельзя ли как-нть вывалить
стандартный диалог по выбору файлов-папок, и получить из него результат
действий пользователей?
|
А
также вопрос про - как перебрать все элементы контрола типа List, для
проверки, совпадает ли новый его элемент с уже существующими?
|
Dirk Diggler
Цитата:
Цитата:
|
Это не вопрос, но грабли... Вот два способа вызова одного скрипта - откомпилированного в EXE и нет:
Код:
script.au3 "%ALLUSERSPROFILE%\Desktop" Код:
script.exe "%ALLUSERSPROFILE%\Desktop" Вывод: используем откомпилированные скрипты (принимающие параметры) только из CMD-файлов! |
Переключение раскладки клавиатуры.
Может кому-то понадобиться, потому что я не сразу додумался как это сделать :)
Понадобилось мне как-то переключить раскладку во время установки программы. Первое что пришло в голову - Send("+^"). И обломался я сильно, и полез в инет за ответом!:search: Найти у далось только два поста в архиве, которые мне не помогли. :sorry: Но стоило тщательнее порыться в Хелпе, как ответ тут же нашелся - Send("{LSHIFT}+{LCTRL}"). Удачи:) |
Как определить наличие хоста? Встроенный пинг не работает. Проверил тремя разными способами, вот последний:
Код:
MsgBox(0,"",ping("192.168.0.1")) Код:
Ответ от 217.106.xxx.xxx: Заданная сеть недоступна. Аутоитовский пинг даже на ping("192.168.0.0") говорит 23, т.е. ответ через 23 мс. |
да и в приведенном в документации примере стоит заменить DNS-имя на IP, как сразу оно перестает работать как надо
Код:
$var = Ping("10.0.0.1",2500) |
forumuser
|
Dirk Diggler
Пробовал вроде активные хосты определяет, по крайней мере по IP... 192.168.0.0 (моя подсеть) дает ошибку 3 на любые другие сети или несуществующие IP дает ошибку 1 |
проблема
однозначно существует, в случае ответа от роутера по ICMP Autoit
думает, что получил ответ от искомого хоста. Нашел аналогичную тему на
родном для AutoIt форуме, насколько мой английский позволяет, понял,
что баг был исправлен в одной из текущих бет, я скачал январскую(или
уже февральскую) beta 106, пока не пробовал. Вы не бету пользуете
случаем?
|
Нет,
не бета, у меня наоборот DNS не отзывается. Фича новая, значит без
глюков не обойтись. Если бы не ваш пост не сунулся бы в справку и не
обнаружил что версия уже устарела... :)
|
А
как отследить, что было активизировано окно "Запуск программы"(это
которое Пуск -> Выполнить)? Оно собственного заголовка не имеет.
|
А разве "Запуск программы" не заголовок? Вроде работает:
Код:
WinWait("Запуск программы") |
Да,
но теперь другая проблема... Я пишу задачу для nnCron, которая при
активизации этого окна будет переключать в нем раскладку. Использовал
пример из FAQ.
Суть проста - при логоне в цикле пускается нижеследующий скрипт, который сперва ждет активизации окна, переключает раскладку, а потом ждет деактивизации, и завершает работу. Тут же запускается по новой, ждёт и т.п. Как можно убедиться, переключение раскладки - не работает! Я жму Win-R, вижу окно и... печатаю в нем по-русски. А как указано в секции параметры, должен бы по-английски... а в трее балун кажет, что уже WinWaitNotActive выполняется, значит _SetKeyboardLayout уже отработал... Тестировал скрипт на одиночном его запуске, добавил строку, которой проверяю правильность полученного хэндла... все вроде правильно.... Код:
Const $DEU = "00000407" ;Немецкий (стандартный) Может, это не работает потому, что у меня помимо русской и английской стоит также и китайская раскладка? |
спасибо
за внимание, конечно, в общем, поборол проблему. теперь я, переключаясь
в окно cmd.exe или нажимая Win+R, могу не беспокоиться за раскладку,
она у меня всегда английская.... если кому-то надо, выложу скрипты...
|
Dirk Diggler
Цитата:
|
в случае с окном "Запуск программы..." из FAQ не подошло.
|
Как сделать так, чтобы элементы TreeView можно было перетаскивать из одной ветки в другую?
|
Dirk Diggler
Цитата:
Цитата:
|
Цитата:
Цитата:
В целом задача стоит так: есть древовидная структура - корень, от него ветки, достаточно одного уровня, т.е. ветка в ветке уже не обязательно, в этих ветках - некие элементы. Надо лишь одну вещь сделать - чтобы эти элементы можно было легко перекидывать из одной ветки в другую. может, использовать что-то отличное от TreeView? |
Dirk Diggler
Цитата:
Я пробовал так: Код:
Run('regedit.exe') Код:
Send('#r') Цитата:
|
Цитата:
|
Цитата:
У меня вопрос - как получить раскладку текущего окна??? |
Dirk Diggler
Цитата:
Цитата:
Цитата:
Цитата:
А вот и еще один вариант ответа на вопрос "Как программно переключить раскладку клавиатуры?". Нужный кусочек с этой страницы: Код:
Упрощенный пример смены текущего языка на русский: |
Как работают функции типа TCPRecv? Они ждут получения данных или просто проверяют сокет и завершают работу? Их надо зацикливать или нет?
|
Как
закрыть окно експлорера? Например после инсталляции antivir открывается
папка C:\Documents and Settings\All Users\Главное
меню\Программы\AntiVir - Personal Edition. Конструкция
If WinWait ("Главное меню\Программы\AntiVir - Personal Edition","", 10) Then WinClose ("Главное меню\Программы\AntiVir - Personal Edition") не помогает. Где я туплю??? |
VelDmi
WinWait() WinClose() "If" зачем? |
VelDmi
Цитата:
|
Всем спасибо. Нашел ошибку. Почитал справку.
|
Использую
для установки скрипты автоита. Уже набралось пордка 15 и грозит
добавиться еще! Каждый весит по 120 кило. Что можно предпринять для
экономии места:
- паковать чем нибудь экзешники скриптов - не создавать экзешники а ставить первым делом сам автоит и выполнять непосредственно тексты скриптов. Скажите как культурно или как лучше? |
NikLok
Цитата:
|
вопрос по закрытию, предупреждения в Explore
Пожалуйста, представьте себе такой этап работы.
На локальной машине с OC Windows'98 установлен сервер, например, Apach. Пользователь запустил броузер IE (4-я версия), выполнил некоторые дей- ствия и переходит к работе в VB-форме, которая станет активной, а окно IE перестанет быть нужным и его можно будет закрыть! Перед выводом VB-формы на экран осуществляется по методу ieView.Navigate запуск файла "_close.htm" (технол. VBScript), расположенного или где-то на диске C:, или в директории /cgi-bin/ сервера Apach (выбор места размещения файла "demo.htm" сейчас четко не определяю, об этом я попрошу позже, сформу- лировав задачу до конца!). Предназначенный только, чтобы закрыть окно броузера (т.е. сам IE), файл "_close.htm" имеет вид: Код:
<html><head></head><body> клавишами -- "Да" и "Нет" и необходимостью выбора "Да" без каких-либо действий со стороны пользователя. Мои мытарства по решению этой проблемы привели к знакомству с пакетом AutoIt 3.1, программы которого я установил на компьютере. Далее я запи- сал код (см. ниже) для "_close.au3" и откомпилировал его, воспользовав- шись pop_up меню от правой клавиши мышки. Полученный "_close.exe" я разместил в /cgi-bin/ сервера и запустил этот файл. Код:
WinWaitActive("Microsoft Internet Explorer", "Просматриваемая веб-страница пытается закрыть это окно. Закрыть окно?") меню. Как можно догадаться, результат моих попыток обескураживающий! Все галочки в свойствах броузера, разрешающих использование ActiveX не помогли. Я упростил для себя задачу, записав в броузере страницу, с которой следует начать обзор, файл "_close.htm". Так что, загрузив страницу, броузер должен был сам себя закрыть без сервера... и тут я окончательно запутался. Обращение к Форуму на OSzone_net.htm показало, что на нем рассматриваются преимущественно "мягкие" способы установки программных пакетов с винчестера. Моя же задача несколько иная и форму- лируется традиционно по-русски: что делать? Прошу подсказки по разме- щению "_close.exe" и закрытию этого ненужного мне меню!! Спасибо. |
Вот
наверное дурацкий вопрос. Как средствами автоита работать с треем. То
есть выбрать нужную программу в нем? При различных разрешениях экрана!
|
rhtu
Раз пока никто не ответил напишу я. >> Полученный "_close.exe" я разместил в /cgi-bin/ сервера и запустил этот файл. Надеюсь вы запустили его до того, как запустили скрипт на закрытие окна? >> В функции ожидания приведены тексты, которые я списал с появляющегося меню. Часто списывая тексты с окон допускаются ошибки. Лучше всего копировать текст из встроенной программы Au3Info. >> Предназначенный только, чтобы закрыть окно броузера (т.е. сам IE), файл "_close.htm" Предлагаю вам закрывать окно AutoIt-ом, а не скриптом, например: WinClose ("Microsoft Internet Explorer - моя страница"). Тогда меню появляться не будет. |
Возникла
следующая проблема. Я делаю дистрибутив винды с автоустановкрй
необходимых приложений при первом запуске оси. Есть такая софтина -
FinePrint (или pdf printer), которая печатает документ в pdf файл.
Написал сценарий instPDF_Printer.au3 для autoit. При попытке запуска
следующим методом из командной строки C:\install\AutoIt3.exe
C:\install\FinePrint\instPDF_Printer.au3 вываливается сообщение 'Для
установки и настройки компонентов системы воспользуйтесь панелью
управления'.
И в трее появляется значек autoit. После повторного выполнения команды все работает. Как можно избавиться от этой проблемы? |
Все
разобрался AutoIt3.exe нужно кидать в одну папку вместе с исполняемым
скриптом, в моем случае команда получилась такая:
C:\install\FinePrint\AutoIt3.exe instPDF_Printer.au3/ Сам спросил - сам
ответил. Мож кому и пригодиться!!!
|
nsergeip
А почему нельзя скомпилить .au3 в ехе? И пользуй C:\install\instPDF_Printer.exe! |
nsergeip
>> При попытке запуска следующим методом из командной строки C:\install\AutoIt3.exe C:\install\FinePrint\instPDF_Printer.au3 Должно работать, вероятно внутри скрипта что-то не так. Используй @ScriptDir для запуска приложений. |
Столкнулся
еще с одной проблемой: устанавливаю pdfFactory Pro 2.5! Инсталлятор
кривучий такой или руки у меня такие, незнаю. В конце инсталляции
вываливается информационное окно с кнопкой 'OK'. Его ничем не могу
отловить, не WinWait, не WinActive, не WinWaitActive не помогает!!!
Если кто с такой прогой сталкивался или мож знает как всетаки 'нажать'
эту кнопку подскажите плиз...
|
VelDmi
дело не в том что неработает то что в нутри скрипта, autoit не
запускается таким образом, обычно он в трее висит при запуске, а так
его там вообще нет...
|
Цитата:
Код:
Send("{SPACE}") |
amel27
я делал Send("{ENTER}")! не работает, как будто операция раньше
появления окна проходит, или вообще не выполняется, что-то не пойму!?
|
Написал
скрипт для запуска подряд других скриптов (на данный момент для
автоматизации установки программ). Но автоиту не нравится выделенная
строка:
Код:
#include <GUIConstants.au3> |
nsergeip
Цитата:
|
Shaul
Счет элементов массива начинается с 0, нужно так: Код:
For $c = 0 To $installlist[0][0]-1 |
nsergeip
Цитата:
Код:
Sleep (1000) |
amel27
Цитата:
|
Извините за тупость вопроса но очень нужно сделать такое. Имеется назначение клавиши например:
Код:
HotKeySet("{F1}", "go") |
запуск программы
Приветствую.
Выполняю такой коротенький скрипт почему-то запускается несколько экземпляров ina32.exe Окно не имеет заголовка. в чем может быть дело? Заранее спасибо. |
Shaul
Цитата:
Цитата:
|
isDirectory?
Как с помощью AutoIt узнать что директория, а что файл? Я сделал так, но может можно проще
Код:
If FileChangeDir("C:\Windows") Then |
Paki
Цитата:
Код:
$ini=@ScriptDir & '\my.ini' |
Snejok
Так же, как из командной строки - используя обратный слэш в конце имени, пример: Код:
; Прием параметра из командной строки Код:
; Убираем оконечные слэши |
Уточнение получения объекта AutoIt3X при технологии VBScript.
Запись из AutoIt_ru.chm для AutoIt3X, которая приведена ниже, машина в моем случае применения метода CreateObject() воспринимает как 429-ю ошибку -- не может создать объект! Поэтому надо ли указывать путь к autoit3.exe? Или запись, которая ниже, позволяет найти autoit3.exe где угодно, даже на съемном диске (USB-диске)? Или моя первая строка для "fso" обладает недостатком, который приводит к невозможности создания объекта "oAutoIt" при записи из AutoIt_ru.chm? Также есть ли какая-л. литература на рус. языке с примерами применения AutoIt3Х? Пожалуйста, подскажите решение для CreateObject(" ???? "). Код:
Dim fso, oAutoIt |
rhtu
Цитата:
|
Цитата:
Код:
Вот информация полученная autoit Код:
WinWaitActive("pdfFactory Pro","OK") |
Активное окно
Имеется такой скрипт.
Цитата:
1) Когда я закидываю его в автозапуск : ina32.exe при входе в систему появляется ,но на окне нет фокуса, соответственно я не могу послать в окно нажатие клавиши.Даже не представляю почему WinActivate("") не срабатывает(у окна нет заголовка т.е. title). !!?? 2)как можно послать {Enter} определенной кнопке на окне? Заранее спасибо. |
Вот скрипт
Код:
Run("Setup.exe") Код:
Press CTRL-ALT-F to pause the display. ВОПРОС: как написать этот скрипт правильно, так чтобы было предусмотрено то что программа уже имеется, и то что ее еще нет. |
All
На этом форуме принято приводить листинги внутри тэга code ! По теме - Прочтите FAQ !!! nsergeip Цитата:
Код:
WinWait("pdfFactory Pro","successfully installed") Цитата:
Код:
if WinWaitActive("pdfFactory Pro","Да",2) Then Код:
if WinWait("pdfFactory Pro","Да",2) Then dark_n Цитата:
|
Код:
run("\\neiwton\auditscaner\ina32.exe") Код:
WinActivate("", "Inventory Anlyzer") когда я делаю выход из системы а затем вход- фокус появляется и все нормально.Почему так?. |
Мужики,
поможите, не сочтите за невежество. Все перечитал на форумах, создал
диск для установки винды XP с автоустановкой приложений. Вроде
разобрался со всеми необходимыми нюансами. Винда втыкается, все путем,
доходит до автоустановки приложений и выходит такая картина - все
приложениия с использованием AutoIt не ставятся. Все скрипты пашут,
проверял, все путем. Видимо я напартачил в пакетнике - RunOnceEx.cmd. У
меня так прописано:
Код:
cmdow @ /HID Код:
REG ADD %KEY%\%i% /VE /D "autoit-v3-setup" /f |
Как написать скрипт, выполняющийся в системе с наивысшим приоритетом, при этом, не использующим (почти) системных ресурсов.
По горячей клавише снимает все процессы или делает log off. Дело в том, что некоторые игры настолько грузят систему, что она не реагирует даже на сеть. или игра глючит. Так вот необходимо по горячей клавише выходить из любой игры, если она зависла. Код:
HotKeySet("{ESC}", "Terminate") |
kralex
Переконвертируй au3 в exe. |
dark_n
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
kralex Нужно писать полный путь к au3-файлу: Код:
REG ADD %KEY%\%i% /V 1 /D "%CDROM%\Путь_к_AutoIt3.exe\AutoIt3.exe %CDROM%\Software\TOTALCOM\total.au3" /f А можешь и проинсталлить - тогда можно будет сразу au3-запускать (если ты принудительно не изменишь действие по ум. для au3-файлов), или откомпилируй (не забыв заменить au3 на exe в своем батнике, ну и пути, ес-но). P.S. Для кого я писал про тэг code? VelDmi Цитата:
Код:
ProcessSetPriority(@ScriptName, приоритет) |
Подскажите, плиз.
Могу ли я написать скрипт, который при нажатии на оба Shift'а переключал бы раскладку ? У меня стоит ХР и там нету такой опции. А очень хочеться. Если такое возможно, то напишите как. Или хотя бы скажите как мне поставить скрипт в режим ожидания нажатия двух Шифтов. |
DimkaZar
Цитата:
Цитата:
|
Есть
TreeView с $TVS_CHECKBOXES. Строки в список загружаются из файла. Мне
нужно, чтобы скрипт выполнял некоторые действия над выбранными
("оптиченными") элементами (строками) списка. Я так и не смог толком
понять, как из скрипта проверить, выделена ли строка в списке
|
Sanja Alone
А ты не подкажешь, может есть другие программы..или еще что...мне очень надо сделать что бы на два Шифта переключалась раскладка. |
DimkaZar
Цитата:
|
Запуск программы под дос
А если на машине стоит MS-Dos,то как быть (запустить Inventory Analyzer)?Может надо с какими-нибудь ключами?
|
Sanja Alone
у тебя на сайте я нашел скрипт по установке remote administrator, а вот
с регистрацией ты не постарался как я посмотрел, а ето помоему
немаловажно в автоматическо установке.
Я столкнулся с проблемой по этой части, при запуске ....Radmin\radmin.exe вываливается окно у кот. нет названия, что с этим делать незнаю, мож накидаешь скрипт доконца? |
Цитата:
|
Почитал фак, форум про АутоИт3 в принципе ясен принцип...
Установил! Решил посмотреть как работает, залез в examples и запустил calculator.au3... Открывается калькулятор встроенный и баста. По идее там должна произойти операция 2*4*8*16= Подождать 2 секунды и закрыться. А у меня ничего не происходит :( В чем могет быть проблема???? PS: Стоит XP professional service pack 2 тоже самое и с примером notepad1.au3, открывается блокнот и все ... |
Цитата:
Код:
; Wait for the calulator become active - it is titled "Calculator" on English systems Код:
WinWaitActive("Calculator") Жирным выделена проблема, titled окна должен быть как у тебя, с русским названием окна - "Калькулятор". Например: Код:
; Wait for the calulator become active - it is titled "Calculator" Код:
on English systems Код:
WinWaitActive("Калькулятор") и ниже по скрипту также, тогда все заработает. Проверь. |
Цитата:
Большое спасибо! ПОМОГЛО! :) Неискушенному зрителю достаточно трудно заметить разницу (воспринимается как должное)... ЗЫ: Получается что надо писать скипты под рус и инг версии?! мде |
Цитата:
|
Так
получается, что скрипты вроде как отлаженные на винде, дают сбой на
виртуальной машине!!! Вся беда в том, что при установке приложений нет
строки статуса, а значит и диагностики. Как люди выкручиваются?
Далее если срубаем саму установку, то есть выходим из нея, то скрипт то продолжает работать!!! И пока его не срубишь процесс манагером, все стоит и ждет. Я было пытался в WinWaitActivate ставить временные задержки, но там надо городить кучу if then для того что бы скрипт далше шол на выход. Может есть культурнее решение??? |
А
меня наоборот, когда ставлю на реальной машине, не появляется индикатор
установки и заключительное окно. В котором написано, что программа
успешно установлена. При этом на соседней машине все нормально. Еще
заметил, что эта неприятность происходит с программами устанавлеваемыми
из msi пакетов. Не подскаже как это можно исправить?
|
Tanis
Цитата:
ИМХО, автоит нужен там где остальными путями пробится не удалось |
Может
быть. Но я уже написал скрипты для 45 программ и не хочу начинать все с
начала. Да и просто надо же разобраться в чем дело.
|
nsergeip
Цитата:
Цитата:
kralex Цитата:
Цитата:
Цитата:
Код:
bootcfg.exe /raw "/safeboot:minimal" /a /id 1 Цитата:
Tanis Цитата:
Код:
/q[n|b|r|f] Цитата:
|
кто
знает как при помощи реестра изменить текущий часовой пояс в windows.
по умолчанию стоит москва, а мне надо екатеринбург? или мож есть какой
другой способ?
|
nsergeip
Доделал скрипт для Radmin 2.2 (добавил регистрацию стандартным методом + все действия теперь определяются переменными в секции Global). |
Цитата:
Код:
bootcfg.exe /raw "/safeboot:minimal" /a /id 1 С восстановлением нормального режима пришлось повозиться (плохо когда мало знаний). Так и не смог найти команду после действий в Safe mode, чтобы винда "ребуталась" в нормальном режиме. пришлось прописать AutoIt-ом скриптик замены файла boot.ini - safe mode на boot.ini -normal. Дополнительно слепить пришлось SFX архив с указанием абсолютного пути. Но все равно, огромное спасибо Sanja Alone, свою проблему я решил. |
nsergeip
Цитата:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones |
Vadikan
Цитата:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones |
kralex
Цитата:
Цитата:
|
Sanja Alone
Пакеты MSI я cтавлю такой командой Код:
Run ( 'msiexec /i "'&$file&'" /norestart') |
Tanis
Цитата:
Код:
$filename = '\filename.msi' P.S. У меня тоже версия 3.1.4000.2435, но не думаю, что это имеет особое значение. Цитата:
|
Цитата:
2. Применить шаблон к системе можно следующей командой (пример): Код:
secedit /configure /cfg rights.inf /db %TEMP%\rights.sdb |
У
меня вопрос по AutoIt. Как скомпилировать скрипт, который будет
включать в себя *.exe , *.mp3 , *.jpg , и т.д. (все в одном exe-файле).
Функция "Fileinstall" добавляет любые файлы к сценарию. А как запустить
их внутри сценария ? Заранее спасибо.
|
Sergio12305
Цитата:
Цитата:
|
У
меня вопрос как в автоите вызвать функцию WinApi SetSystemTime. Т.е.
как ее вызвать с помощью DLLCall я знаю, а вот как правильно передать
параметры чтобы поменять дату незнаю.
|
shita
Ну молодежь и дает! Как вызвать функцию WinApi SetSystemTime ... с помощью DLLCall знают, а что такое DATE из CMD - нет! |
bogomolv
Привет, Сергей. Что-то давно тебя не видно было... Цитата:
shita Код:
$date = '30.12.2006' |
Sanja Alone
Саня, и тебе привет. Да я не строго! Я любя и немножко с завистью. А вы здесь все переиначили! Я сначала не разобрался и недели три тупо заглядывал по старому адресу, удивляясь, а чего это никто не пишет... Новая структура стала информативнее. Только общих тем все равно не будет хватать, и зря вы, модераторы, гонятете Osa-7. Не обращал внимание, как обсуждение особенностей установки программы часто перетекает в обсуждение самих установщиков и возможностей их применения? Именно из таких обсуждений узнал об InstallRite и удобной связке InnoUnp+InnoSetup. C удовольствием опробовал их. С помощью InnoUnp+InnoSetup расковырял Download Master, а на основе InstallRite создал свой установщик DrWeb (ставится за две секунды!). На радостях накинулся на MS IntelliPoint. Но не тут-то было. InstallRite с ним справиться не может. Но даже с непобежденным IntelliPoint установка WinXP и всех программ занимает у меня теперь 15 мин 30 сек. Именно, так - с секундомером, и вылизываю теперь свои скрипты автоустановки. |
Sanja Alone
Спасибо, а то надоело каждый раз дату менять чтобы PL/SQL Developer запустить, время trial закончилось. bogomolv Да вроде не молодежь, но с этим не стыкался. А DLLCall то, что в справке нашел. |
bogomolv
Цитата:
Цитата:
Цитата:
|
Привет.
Я хочу с помощью autoi it производить копирование выделенного текста(в edit полях) но не симулируя ввод с клавиатуры ctrl+c, а исползуя api windows. Хотелось бы узнать как это сделать. |
Добавлю что это нужно сделать под win 98, нужно копировать plain text и rich text.
|
Доброго Времени Суток.
Подскажите пожалуйста, как отследить нажатую - какая именно была нажата? |
Vadikan
Да я не ради спора. :) |
Неожиданно
выяснилось, что AutoIt вставляет символы в зависимости от текущей
раскладки клавиатуры. В частности при вводе серийного номера в AcdSee 8
при русской раскладке, всталвяется левый номер! Вопрос как узнать
текущую раскладку? Ну не анализировать же собственный воод?
|
NikLok
Цитата:
|
amel27
Цитата:
Код:
Send("DKXDVH-3348T-3NHQXB-GHCPRXQ") Не смотрел как работает команда посылки в окно ввода (забыл как она называется - SendEdit может?). Неужели у нее те же грабли? Выяснилось все это когда систему которая ставится с MUI, поставилась без него. Причем непонятно почему то раскладка клавы по умолчанию все ранво всегда русская! Я уже всю страницу по локализации прочитал и воплотил а воз и ныне там. Видать где то, что накрутил. О существовании отдельной ветки знаю и читаю. Но мне кажется этот нюанс должен учитываться и в этой ветке. |
Цитата:
Цитата:
|
NikLok
Используй Код:
ClipPut('DKXDVH-3348T-3NHQXB-GHCPRXQ') |
В шапку добавлена ссылка на справочник по rundll32 - мне показалось, что в AutoIt это пригодится.
|
Подскажите, как из автоит скрипта запустить другие автоит скрипты?
|
NikLok
Сначала поблагодари за предыдущий ответ :) |
Доброго Времени Суток ещё раз.
1. Подскажите пожалуйста, как отследить нажатую клавишу? - какая именно была нажата? |
proxy
Поясни вопрос. Обычно AutoIt сам эмулирует нажатие нужных клавиш. А ты хочешь от него обратного? |
Я хочу узнать какую клавишу (к примеру ASCII код) нажал пользователь, для последующей записи в log.
.......проще говоря: Как в AutoIt реализовать перехват клавиш, без их замены как это делает HotKeySet. К примеру я пишу текст в блокноте, а программа будет показывать все нажатые клавиши. |
proxy
На мой взгляд, ты хочешь от AutoIt то, для чего он не предназначен. "AutoIt", - все-таки, это: "a freeware BASIC-like scripting language designed for automating the Windows GUI". Наверное, тебе больше подойдет брат AutoIt'а - AutoHotKey. Без труда найдешь его в сети. |
Большое Спасибо, по обилию функций в справке - AutoHotKey - это именно то, что я искал.
|
bogomolv Канычна сапасиба. Везде поменял на твой вариант и усе замечательно за...лось!
В раже даже написал скрипт для смены веремени выбора систеым в файле BOOT.INI мОЖЕТ ЕГО еще как можно было изменить, но я сделал так! Код:
$file = FileOpen("c:\boot.ini",0) |
Имеется следующий скрипт:
$netsh = @ScriptDir & '\netsh.cfg' RunWait (@SystemDir & '\netsh.exe interface ip dump > ' & $netsh, @SystemDir, @SW_HIDE) Так вот файл netsh.cfg создается в ДОС кодировке. И я не могу прочитать русские слова командами автоита. $file = FileOpen($netsh, 0) $line = FileReadLine($file) Получаесся абракадабра. Что делать? |
NikLok
Пожалуйста! Приходите еще! :) Код:
RunWait('AutoIt3 script.au3') |
VelDmi
Когда-то решал подобную проблему так: Код:
$f = 'C:\1.txt' |
bogomolv
Спасибо, решил свою проблему так: RunWait (@COMSPEC & ' /c chcp 1251 && netsh.exe interface ip dump > netsh.cfg', @SystemDir, @SW_HIDE) Файл создается в нужной кодировке. |
VelDmi
И это правильно! Что-то подобное и я тогда искал, но не доискал... |
VelDmi
bogomolv Вы, конечно, будете смеяться, но когда я вчера пробовал подобный вариант в кач-ве возможного способа решения обозначенной проблемы, то рез-т был неутешительным: Код:
RunWait (@comspec & ' /c chcp 1251 && ping.exe 127.0.0.1 > ping.log','', @SW_HIDE) При этом, в конструкции: Код:
RunWait (@COMSPEC & ' /c chcp 1251 && netsh.exe interface ip dump > netsh.cfg', @SystemDir, @SW_HIDE) Это я к тому, что способ неуниверсальный :( |
2 вложений
bogomolv
Цитата:
Код:
type file1.txt | dos2win >file2.txt Цитата:
|
amel27
Цитата:
|
amel27
Спасибо за упоминание StdOut. Обратив внимание на где-то виденное сочетание буковок, освоил новую для себя функцию AutiIt3 - StdoutRead(). Раньше для считывания результатов командной строки использовал перенаправление в >C:\1.txt или CLIPCOPY.EXE. Теперь все читаю напрямую. Пример, где отыскиваются и затем запускаются все скрипты, нужные на конкретной стадии автоустановки: Код:
$dr = Run('%Comspec% /c dir "c:\drivers\*_2.au3" /s /b', '', 0, 6) |
bogomolv
Блин, надо же! Сам давно искал подобное, но пропустил - бум знать. :) |
всем привет!
вопрос: я заметил что скомпиленные в ехе скрипты во время своей работы занимают до 50-80 а иногда и 100% загрузки процессора! замечали ли вы подобное и как с этим бороться.. для примера: Код:
AdlibEnable("buff", 500) выход из зацикливания, необходим только в примере, на деле мне надо чтобы скрипт выполнялся постоянно в фоновом режиме.. |
bogomolv
Как задействовать в автоите функцию StdoutRead. Ибо версия 3 выдает - незнаю таковой! |
NikLok
Скачать более позднюю... Судя по ChangeLog, эта функция появилась в первых же бетах после выпуска официальной версии 3.1.1. Я сейчас пользуюсь версией 3.1.1.102. |
bogomolv
Спасибо! Ща скачаю! |
а подскажите как в комбо загрузить текст из файла.
в файле каждая отдельная строка это какое то слово. например слово1 слово2 слово3 и т.д. З.Ы. всем спасибо :) уже разобрался :)) |
Никак
не пойму: функция Global действует в теле только одного скрипта?
Пытаюсь задать переменную в первом скрипте, и, пока он работает,
использовать ее значение во втором:
1 файл - 1.exe global $a=20 run("2.exe") /тело скрипта/ 2 файл - 2.exe /тело скрипта/ msgbox(0,"","a is " &$a, 2) Если это не работает, как бы мне еще ввести "переключатели" (в первом файле часть скрипта отработала - во втором происходит переключение на следующий этап)? Все это для того, чтобы progressbar располагался отдельно от других скриптов, но был с ними связан... Это же возможно? :) |
Ptyuch
Код:
1 файл - 1.exe |
Было бы красиво! ;) Только первый файл не выполняется: ошибок в скрипте нет, только вот:
Unable to execute an external program Не удается найти указанный файл: run("2.exe"&$a) Без аргумента $a скрипт запускается. Any idea? |
Ptyuch
Идей нет. Есть замечания. Разве у меня написано run("2.exe"&$a)? |
Огромное спасибо!
%#! Даже в голову не пришло поставить пробел перед ". Может, где можно почитать про такой синтаксис? Потому что я иду дальше по схеме: 1 файл - 1.exe global $a=20 run("2.exe "&$a) /тело скрипта.../ global $a=40 и т.д. 2 файл - 2.exe $a=$CmdLine[1] msgbox(0,"","a is " &$a, 2) /тело скрипта.../ msgbox(0,"","a is now " &$a, 2) В этом случае прописанные условия во втором файле опирались бы на состояние изменяющейся переменной из первого файла. Пока срабатывает только первый триггер, прописанный в global $a -> $cmdlines[1]. Может, как-нибудь через Adlib? Не знаю, правда, как ;) |
У
меня есть скрипт, регистрирующию nnBackup. Его регистрация проходит в
консольном окне, поэтому я посылаю туда кириллицу с помощью команды
Send("{ASC 123}"). Однако это работает только в NT-системах, в 9х там
лезет какая-то кразяберность. Как послать кириллицу в консольное окно
9х?
|
По старенькому пройдемся:
Цитата:
Цитата:
|
Ptyuch
Ты, по моему, вообще задачу решаешь немного не с того конца. :) Если это всего лишь бегунок, то лучше всего использовать Adlib. Пример бегунка, приблизительно отсчитывающего время установки: Код:
... |
Я
пытаюсь перевести конвертер ASCI ->UTF-8 с C на autoit :). Но видимо
что-то не правильно понимаю. На вход функции подаю C3, а на выходе
получаю C3 83, что явно неправильно. Или правильно и ошибка в другом?
Код на C Код:
int conv_x2utf(unsigned char* bufin, int len, unsigned char* bufout) Код:
Func StringToUTF($String) Код:
Func StringToUTF($String) |
А кто нибудь знает как взять текст из TreeView, ListView и Listbox входящих в состав интерфейса других програм
(а не GUI сгенерированного autoit скриптом)? |
Имеется программа Runpad Shell. У нее есть API.
API в основном используется клиентами программ контроля, хотя может быть полезным и для любых сторонних утилит. Все функции реализованы ввиде COM-сервера. Примеры использования для C, C++, Delphi находятся здесь Общие замечания: - доступ к функциям осуществляется через единый интерфейс IRunpadShell - все функции возвращают S_OK в случае успеха и другие коды в противном случае - функции не являются Unicode Моя задача написать утилиту, которая бы использовала апи программы на автоит. Примеры на C, C++, Delphi имеются, но я совершенно не понимаю в этих языках, а с автоит поладил. Возможно ли написание такой программы на AutoIt? |
NORIO
Цитата:
|
StringRegExp - не работает :(
1 вложений
Пытаюсь разобраться с регулярными выражениями в AutoIt, но не получается :(
Следующий код не работает: Код:
Local $sPattern, $sTest, $vResult, $nFlag Что я делаю не так ??? |
VedunO, функцию по-ходу убрали (во всяком случае в 3.1.1 ее уже нет)
Никто не в курсе - в будующих версиях планируется ли введение в функцию FindFirstFile() рекурсивного просмотра (с вложенными папками)? |
VedunO
Цитата:
XXXler Цитата:
The public history for AutoIt v3 Full technical log including beta versions |
Sanja Alone,
Цитата:
|
XXXler
Цитата:
|
Подскажите, как запустить процесс с параметром снятого атрибута ONTOP.
Сам процесс - это окошко с атрибутом ONTOP. Если ждать появления окна а потом с помощью WinSetState снять атрибут ONTOP, то оно успевает вылезти на самый верх, после чего убирается. Да, заодно еще вопросик. Сможет ли, запущенный процесс со снятым атрибутом ONTOP, запускать окошки с атрибутами ONTOP? А эту проблемку можно обойти? |
Я использую Send для посылки текстати типа "xUSSR"
Код:
Send("xUSSR") |
Dirk Diggler
Цитата:
Поэтому знаю, что проблема легко решается с помощью clipboard. :) |
Какой еще клипборд в консольных приложениях типа окна cmd.exe????
|
Dirk Diggler
Такой: http://forum.oszone.net/post-424899-108.html. Это ответ на твой первый вопрос. И такой: http://forum.oszone.net/post-428524-126.html. Это - на второй. |
Ни первая, ни вторая ссылка не в тему. Не работает вставка клипборда в консольное окно. Dixi. Нужен другой способ.
Особенно я не понял, причем тут Stdout |
Dirk Diggler
Код:
WinWaitActive('Командная строка') |
Нет.
Ибо в моей практике 20% консольных окон не выкидывают контекстного
меню. Пришлось доработать, но не в этом суть.. А в том, что всё это
как-то через задницу. Результат - скрипт для регистрации nnbackup
Код:
$Dir = @ProgramFilesDir & "\NNbackup" |
Dirk Diggler
Твоя задачка напомнила что-то подозрительно знакомое. Вспомнил - SlyControl... Хоть давно им не пользуюсь, удалось разыскать у себя в архиве скрипт: Код:
RunWait('regedit /s "' & $pDir & 'Sly.reg"') |
Не могу понять, как работает функция "InetGet", пишу:
Код:
FtpSetProxy(1) ; прокси не используется P.S. вбиваю этот же адрес в Internet Explorer (v6.0) и все работает отлично, пока пользуюсь внешним WGET-ом |
Подкажите
как в AutoIt скрипте дождаться появления некотрого файла, тоесть
выполнение скрипта надо продолжить только тогда как появиться
конкреткный файл ???
|
1) Можно ли замениь значок который светитса в панели здач?
2) Какой командой возможно открыть порт? |
Monarhia, по первому вопросу: в Aut2Exe смотри в раздел Options -> Custom Icon.
|
Solitude
Цитата:
Код:
While 1 Код:
While FileExists ('disk:\path\filename.ext')=0 Код:
Do Код:
AdlibEnable('fe',2000) |
А нельзя компилировать с путём к файлу, а он компилируетса со скриптом, типо одним целым становятса?
Хотябы картинку можно вставить? |
Monarhia
Иконки, которые отображаются в трее хранятся в AutoIt3.exe. Можно
попробовать скорректировать редактором ресурсов - но это не выход.
Иконка будет другая, но опять-же одна. Проще всего просто скрыть иконку
в трее.
|
Не подскажет ли кто как организовать индикатор процесса установки (типа бегунка или любой другой) для данной команды
RunWait (@ScriptDir & '\wmp10.exe /q:A /c:"setup_wm.exe /Q /R:N /DisallowSystemRestore"') |
извините
если пишу немного не сюда, просто у меня не одна ссылка на скачивание
самой программы AutoIT3 не работает.... ктобы мог поделиться этой
прогой и прислать мне ее на niro@lipetsk.ru заранее спасибо
|
Объясните, что за функции Visa Management? В первый раз с таким сталкиваюсь.
И ещё, есть ли возможность как-то работать с железом - COM портом, USB, и т.д. |
adima
А чем тебя не устраивают ранее предлагавшиеся варианты? Особенно много вариантов (с активным обсуждением!) было в прародительнице этой темы. desperate Только что проверил ссылки: http://www.autoitscript.com/autoit3/downloads.php, http://www.autoitscript.com/autoit3/files/beta/autoit/ Работают! Redisych Про Visa Management ничего не знаю. Узнаешь сам - не забудь отписаться сюда и поделиться. Про работу с железом. Не понял, что ты имеешь ввиду, но скорее всего тебе поможет использование в скриптах MS-овской утилитки devcon (http://support.microsoft.com/kb/311272/ru). |
bogomolv
Хочется обработки сигналов, например, с COM порта, а ещё генерацию произвольных сигналов. |
Redisych
Могу лишь процитировать AutoIt Help: Цитата:
|
Надеюсь,
что дойдёт и до остального, раз приличный конструктор GUI приделали. Я,
если честно, когда начал осваивать язык, и не думал, что изначально он
предназначался для "автокликанья". Хотелось бы услышать об опыте
написания "классических" приложений и о перспективе такого подхода.
Стоит ли, или лучше изучить языки, на которых пишет большинство?
|
Вот ведь, как чувствовал, что Visa близко к моим потребностям. Нашёл на их форуме такое:
Цитата:
bogomolv, кстати, мои соболезнования по поводу вентилятора. А мы соседи, я в городе химиков, энергетиков и строителей... |
а
как в Auto IT сделать GUI, очень много прочел про то как описывается
сам GUI но вот как назначить его элементам те или иные действия мне не
ясно..
![]() |
После прорисовки GUI гоняешь цикл:
Код:
While 1 Код:
Select Взять значение с елемента можно с пом. GUICtrlRead(), установить - GUICtrlSetData(), GUICtrlSetState() и т.д. - все можно найти в справке |
1 вложений
Проблемка со скриптом для создания Dial-up подключения..
Суть проблемы в том что не всегда "ставиться" галка "использовать правила набора номера".. Вот скрипт с пометками автора... Может кто-нибудь может что-то добавить/изменить.. |
XXXler
Спасибо буду разбираться!!! |
vasin
Так проще: Код:
;Настройка "Свойства" соединения |
XXXler
Скажи а как скажем зделать что бы скажем было 2-е строки ввода пути 10 чек боксов, и кнопка старта. Идея копирование из источника в получатель тех групп файлов которые отмечены чек боксом, при нажатии на кнопку Старт но с возможностью отмены! Такое возможно зделать? |
SyCraft
Если я правильно понял про отмену (одна для всех перед копированием) то долно получится примерно так: Код:
While 1 |
XXXler
Спасибо!!! ![]() |
Вот что получаеться, но при компиляции вываливаеться с ощибкой, подскажи пожалуйста что я напутал?
Код:
#include <GUIConstants.au3> |
Всем доброго времени суток!
У меня возникла следущая проблема: Я создал скрипт, который вызывает окно где можно выбрать каталог, и затем скрипт вписывает результат выбора в файл. Вот его состав: Код:
$var = FileSelectFolder("Вибирите каталог...", "") Как я могу сделать так, что если в том окне, которое появится после нажатия на 'Отмена' (в первом окне), пользователь нажимает в нём 'Нет', то будет запущено первое окно снова. Т.е нужно как-то вернуться на метку, которая будет стоять перед выводом первого окна. P.S: Я знаю что существует команда Wend и она как-то связанна с командой While = - Но как ей пользоваться, т.е как её подставлять в скрипт, я беспонятия ![]() |
Есть ещё вопрос:
Можно ли каким-то образом, конвертировать скрипт Bath (файла *.bat), в скрипт AutoIT? |
SyCraft
Цитата:
В частности, неправильно пишешь имена переменных внутри строки: вместо "$FirstPath\profile\notes.adr", нужно писать $FirstPath&"\profile\notes.adr" или "$FirstPath$\profile\notes.adr" (в последнем случае нужно задать Opt("ExpandVarStrings",1)). Creat0R 1) Нужная тебе конструкция While... Wend подробно и с примерами описана в AutoIt Help. Лучше, чем там, тебе никто не объяснит. 2) Конверторов скриптов Bath в скрипт AutoIT нет и не будет. |
bogomolv
Цитата:
Код:
Пример Код:
While $iMsgBoxAnswer = 7 Цитата:
![]() |
Ну
вроде все исправил.. но тепрь такая проблема.. после нежатии кнопки
начала копирования, копирование не происходит, просто выскакивает
информационное окно о начале процеса все..
Не подскажите где я вновь учудил? Код:
#include <GUIConstants.au3> |
Creat0R
Ты не понимаешь суть базового понятия "цикл". + Несколько раз перечитал твое Цитата:
Поэтому могут лишь подправить твой скрипт: Код:
While 1 Цитата:
1. У оператора MsgBox другой синтаксис MsgBox(0,"", "",1) 2. Считывать значения редактируемых переменных нужно в цикле Код:
While 1 Сделай так: Код:
While 1 Например, в твой скрипт я вставил вместо FileCopy("$FirstPath$\profile\opera6.adr", "$SecondPath$\profile\*.*",1) проверку MsgBox(0,"","$FirstPath$\profile\opera6.adr TO $FirstPath$\profile\*.*"). Тут же все твои косяки вылезли наружу. 5. Много мелких недочетов. В частности, зачем циклишь объявление опции Opt("ExpandVarStrings",1)? Обычно это делается в начале скрипта. |
bogomolv
Спасибо, ты уж не взыщи просто я далек от программирования и только учусь!!! Спасибо тебе! |
bogomolv
Огромное тебе спасибо! Всё так как и нужно было! :bye: Я кажется понял суть работы команд Wend и While - Всё что находится между ними, будет выполняться до тех пор, пока значение одной из команд будет ровно 0 (или любое другое кроме 1 - если есть такого), но как я понял, это в случае если у команды While присутствует значение 1 (While = 1). А какие ещё есть возможности её использования? У меня есть пару вопросов: 1) Как осуществлять поиск существующего пути\каталога, и затем произвести определённое действие? Т.е, вот например команда $search = FileFindFirstFile("file.tmp"), произведёт поиск файла file.tmp. А если сделать так: Код:
$search = FileFindFirstFile("File.tmp") Но мне вообще-то нужно, чтобы был поиск не файла, а каталога\пути (или даже будет лучше, если значения $var). Примерно так я себе это представляю: Код:
$search = FileFindFirstFile("$var") |
в хелпе все написано. Ох, батенька, взяли бы какую-нть книжку по информатике для 9 класса.
|
Dirk Diggler
Цитата:
Имхо, справку, которую переделали на русский, как будто с помощью словаря переделывали. Не то чтобы автор этой справки не знает английского, или программирования в AutoIt, я вовсе этого не утверждаю, просто считаю что можно было бы приложить немного больше усилии, ради такой весчи - как помощь по AutoIt'у!). P.S: Извеняюсь за офтоп! (если он таков есть). |
книжка поможет освоить базовые понятия программирования.
2ALL Написал тут скрипт VBS-> AU3. Ничего особенного, просто закатывает VBS в AU3, а тот пишет его в темп и запускает. Какую длину потянет - не проверял. Да и всякие ситуации хэндлятся не особо. Но мне достаточно, я более доделывать не буду. Работает из командной строки script.au3 vbsname.vbs Au3name.au3 при отсутсвии параметров или только второго запросит соот-но оба или один в виде виндового диалога. Запрос на перезапись не дает. Код:
Global $filename |
Creat0R
Цитата:
Цитата:
"Всему лучшему в себе я обязан книгам". А.М.Горький |
Creat0R
Цитата:
PS А тебе действительно поможет учебник для начинающих, так как само понятие циклов, условных переходов и т.д. одинаково для всех языков и начинать нужно с изучения основ. |
Попробовал решить проблему с выводом из CMD как предлогал bogomolv в 120 посте. Во первых если копировать код из инета то он не работает т.к. изменяется строка в $a1
надо брать именно по ECHO, но у меня и она не заработала пока не взял
эту строку из GUI самого скрипта. Более того есть большое подозрение
что на Win с MUI эта строка будет другой и вообще памятуя о проблемах с
кодировками сделал запрос при запуске скрипта. Теперь $a1 будет генерироваться при запуске скрипта под каждой виндой заново.
Код:
#include <Constants.au3> Хотя здесь и писалось хочу напомнить что StdoutRead работает только в последних беттах. P.P.S. bogomolv, VelDmi смотрел форум на сайте разработчиков, не нашёл таких решений как у Вас, хотя конечно все посты не читал но поиск поюзал основательно. Было бы неплохо закинуть код туда. |
Creat0R
хелп не ругай коли чайник. Я сам полный самовар в программировании, как
здесь советовали пробую сотни вариантов кода и методом научного тыка
пытаюсь разобраться. ИМХО читать не люблю особенно учебники. А
объяснять основы программирования справка не обязанна. Если мозги текут
отпишись в PM гуру, здесь люди отзывчивые помогут. А вообще для того
чтобы писать листинги на чистом листе уходят годы обучения. Так что
если не готов закажи нужную весч у знающих людей. Кстати справочку
человек переводил бесплатно и нужно сказать спасибо за человекачасы и
применённые знания.
Извените не удержался. |
bogomolv
Цитата:
|
ANGRO
Цитата:
P.S: А у автора этой справки, прошу искринние извинения, у меня небыло намеринии оскорблять, или ругать работу кого либо! -Просто как сказал ANGRO, я есть Чайник в сфере программирования (или самовар ;) ) |
Решил собрать на основе кода из 196 поста что нить полезное так сказать для проверки в драйв тесте.
Почему-то получился пинг :biggrin: . Код:
#include <GUIConstants.au3> |
Кто-то может мне помочь со следующей задачей:
Нужно запустить прогрессБар, и чтобы он автоматом закрылся, в тот момент как завершит свою работу определённый запущенный процесс в системе (а точнее запущеный скрипт *.bat файла) - и если возможно, то чтобы в окне прогресс бара, была видна бегущая надпись, с текстом который я выберу. (если нет, то хотябы поместить этот текст обычно, как в MsgBox). Возможно таке осуществить? Есть ещё вопрос: При запуске диалога для выбора файла, возвращается значение в переменную $var (что-то в этом роде): Код:
$var = FileOpenDialog("Выбирите архив...", "", "Zip (*.zip)") Код:
FileWrite("c.tmp", $var) Следовательно вопрос: Как мне осуществить сохранение файла (c.tmp), в текущем каталоге? т.е в том каталоге где и находится сам скрипт. Но чтобы ненужно было указывать полный путь, так как запускаться скрипт будет постоянно с разных мест. |
Цитата:
Код:
$var = FileOpenDialog("Выбирите архив...", "", "Zip (*.zip)") |
Подскажите пожалуйста, как можно совместить работу такого (примерного)
скрипта. На основе поставленной в ней задачи, хочу научится некоторым нужным впоследствии, рабочим скриптам. Так что не удевляйтесь возможной несуразности его (скрипта) логики. По частям он работает, но как совместить его работу, моего ума, хелпов и статей форума явно не достаточно... Идея вот в чём: 1. Выбираю первую или вторую колонку, и/или ставлю вручную нужные галочки. 2. Жму на "Кнопка Выбора". 3. Если надо, повторяю п.1 и/или п.2 для выбора другой колонки. 4. Жму "Выполнить" - выполняются соответствующие чекбоксам операции. 5. Нажатия на кнопку "Выход" должно приводить к выходу из скрипта на любом этапе. 6. Не знаю, как придумать, чтоб при повторном нажатии на "Кнопка Выбора" происходил бы select / deselect чекбокса. Вроде бы смог понятно обяснить... Вот скрипт: Код:
|
DenchikK
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Case $msg = $button_1 Цитата:
|
bogomolv
Попробуйте, пожалуйста, запустить мой скрипт - всё наглядно увидите. ;-) Цитата:
Ладно - попробую ещё понятнее объяснить: Как видно по моему скрипту - есть одна часть, которая выполняется, и вторая - закоментированная. Это я думаю видно и понятно. Первая (незакоментированная) часть в зависимости от того, какая из RadioButton выбрана, выделяет три левых или правых чекбокса - то же вроде должно быть понятно. Вторая, закоментированная, часть показывает, что с выделенными чекбоксами делать. И если запустить скрипт в том виде, как у меня он дан, можно увидеть - что первая часть (отметка чекбоксов) работает. Если закоментитровать первую часть, и раскоментировать вторую - видим что и вторая часть так же выполняет свою функцию, что на неё возложена. Теперь немного понятнее стало какие части и что нужно совмещать? Может и не так, как у меня записано, принцип того, что должно получится, ясен? Добавлено: Всё, вопрос снимается - разобрался, как это всё работает (вроде-как). Видать жара и недосып дают о себе знать ;-) Вот что в итоге вышло: Код:
#include <GUIConstants.au3> |
XXXler
Цитата:
Есть такой вопрос: Как по команде IniWrite, записывать строчки в файл конфигурации, но не в самый конец раздела, а, например, во вторую строчку заданного раздела? И ещё, при команде IniRead, возвращается Цитата:
|
Цитата:
Цитата:
Если надо сравнить одно значение: Код:
If IniRead($File,"Section","Parameter","Default Value")="Текст для сравнения" Then MsgBox(0,"","Значение совпадает") |
Creat0R
Цитата:
Код:
$var = IniRead("boot.ini", "boot loader", "timeout", "") |
XXXler
Цитата:
А на счёт строк, так дело в том, что мне нужно проверить именно ключь, а не значение. Т.е пусть даже восспользоваться другой командой, и обращаться к файлу как к обычному (например, как к файлу *.txt), но чтобы сравнить указанный текст со строкой в файле. DenchikK Цитата:
Цитата:
|
Может найдешь что тебе именно нужно:
Код:
;~ Условия поиска |
XXXler
Огромное спасибо! помогло! Появился у меня интерес к такому вопросу - Можно ли каким то образом, воспринимать переданный ключь (рефферер) из другой программы, и чтобы скрипт распознавал, и если это определённый ключь, то что-то должно происходить. Т.е, например, скрипт был вызван из контекстного меню определённой программы, и при этом вызове, был указан ключ (Пример: Item, "Script" = Execute program, "Script.exe", "%A") - И теперь, скрипт должен распознать этот ключь, и если был передан именно этот ключь, то скрипт продолжит заданные действия в цепочке, а если ключь не совпадает, т.е если не был передан именно этот ключ, или вообще не был передн ключь, то должен происходить выход из цепочки (Do....Until...) P.S: Как делать цепочку\выход с неё, продолжение действии и т.д, я уже знаю, и мне нужно только узнать, как распозновать тот самый ключь (рефферер). И ещё вот что хотел узнать, кто-то знает, где мможно посмотреть на разные структуры скриптов, например, для чекбоксов, для передачи результата из выбранного файла\каталога через FileOpenDialog, в затемнённое поле GUI интерфейса, и тому подобное (что-то вроде преведённого XXXler'ом в посте на один выше чем мой). |
Цитата:
Обработка коммандной строки выглядит примерно так: Код:
For $i=1 To $CmdLine[0] |
XXXler
Ещё раз огромное Сенкс за наводку! Вот как мне впринципе нужно было: Код:
Select Если запустить из внешней программы, этот скрипт с ключём, например 1, то будет сообщение: "ок 1", если с ключём 2, то естественно сообщение будет "ок 2" и т.д. -------------------------- У меня остался один открытый вопрос, и буду очень благодарен если сможешь помочь (очень нужно): *Вопрос который я уже задавал: Цитата:
|
Никак. Только написать свою функцию.
|
Dirk Diggler
Цитата:
|
Уважаемый bogomolv!
Большое спасибо за скрипт по настройке dial-up подключений. Когда я давным давно видел его на форуме не думал что он пригодится. Поясните пожалуйста некоторые моменты, которые у меня не получаются. Итак, подключение создается, но: Не стоит галочка "использовать правила набора номера" - как ее поставить? Код страны или региона почему-то США, как сделать Россию? |
Creat0R. Для начала прочитать всё-таки книжку по информатике и хелп к AutoIt3
|
VelDmi
Не "выкай". Настаиваю именно на этой форме общения. Тем более, что двухлетнее знакомство дает право обращаться "на ты" даже за пределами интернета. Цитата:
Код:
;Настройка "Свойства" соединения Цитата:
Если код страны как параметр драйвера модема, так этот скрипт драйверы не настраивает. Если же Area_Code и Country_Code, то это коды выхода на межгород и международную связь. У меня там, наверное, были жестко забиты код саратовские - 8452 и 7. В приведенном выше кусочке скрипта Area_Code и Country_Code определяются переменными $cod и $ccod. (Кстати, а на какой мой скрипт настройки интернет ты ссылаешься? Давай ПМ, вышлю свеженький.) Цитата:
Creat0R Глянь в скрипт. Там есть пример того, как можно записать в ini-файл параметры в нужной последовательности. |
bogomolv
Цитата:
Вот так (см. код ниже), мне удалось во второй раздел ini файла, поместить ключ со значением, но уже не в конец раздела, а в его начало: Код:
$co=IniReadSectionNames("Test.ini") Буду очень благодарен если сможешь помочь! И спасибо за внимание (за пример, и за попытку помочь). Dirk Diggler Цитата:
А на счёт книжки по информатике - как это связанно с AutoIt? или эта книжка предназначена для него?, тогда дай пожалуйста полное название этой книжки, или по возможности, линк по которому я смог бы её скачать... |
bogomolv
Привет! Использовал этот скрипт: Код:
$f = FileOpen(@TempDir & '\ispcnfg.ins', 2) Цитата:
Цитата:
Цитата:
|
Creat0R,
Цитата:
|
XXXler
Цитата:
P.S: Под словом Раздел - я подразумиваю начало пунктам под которым есть ключи и значение у них, вот пример: [Раздел1] Ключь = Значение [Раздел2] Ключь = Значение И т.д.. |
Вызов функции:
IniWriteVP(Файл,Секция,Параметр,Значение,[опционально:позиция параметра в секции]) Например: IniWriteVP($File,"Section","Parametr","Этот параметр будет вторым",2) IniWriteVP($File,"Section","Parametr","Этот параметр будет записан также, как и с пом. IniWrite") Код:
Func IniWriteVP($File,$Sect,$Param,$Val,$Pos=0) |
XXXler
У меня что-то не получается :( . Я если честно, так и не понял, что куда прописывать - Я пытался сделать так: Код:
$Sect="Test1" Если не трудно, напиши пожалуйста скрипт так, чтобы он в файл Test.ini, в секцию "Test3", и в третью строчку этой секции, записывал параметр "Проба" со значением "1". Т.е вот так должна быть прописана строка: Код:
[Test3] |
bogomolv
Цитата:
Ты хочеш сказать, что в справке ясно описанно как сделать мою задумку, или что мою задумку не реально сделать в AotoIt? Тогда как-же в нём делают очень сложные задачи? а такую простую, как запись в определённую строку определённой секции ини файла, не возможно?! не поверю. Просто другое дело, нехватает опыта, или знании сделать такую задачу (или желания), а так или иначе, прямым, или обходным путём, реализовать мою задумку возможно... и надеюсь найдутся добрые, опытные, и желающие помочь новичку в этом деле (в программировании) люди (В их число, думаю входишь и ты, но почему-то предпочитаешь видеть во мне не новичка в программировании, а чайника в целом - что вовсе неверно!). P.S: Извеняюсь за офтоп, но мне хочется чтобы меня понимали, это необходимо для моего прибывание на форуме! |
bogomolv
Цитата:
Во многих кодах, мне ясны только основные вырожения, типа IniWrite, IniRead, For..Next, Do...Untill, переменные $var, $Func, $Sect, $param, $val, $File и т.д и т.п... Но во многих случаях (да почти во всех), увидив их в примерах справки, или тут на форуме, мне не удаётся соеденить их логический смысл воедино. Это подобно тому, как я знаю с десяток слов на французском в отдельности (их звучание и дословный перевод), но если мне начнут говорить на этом языке, даже услышав знакомые слова, я не пойму о чём речь, потому что нету опыта в разгаворе и понимании языка. А взяв русско-французский словарь (аналогия на справку в AotoIt), и прочитав его залпом, будет таже ситуация, и разговор на этом языке я не пойму, пока не стану говорить на нём (разве что если тот самый словарь, будет написан с подробными разъяснениями и мини-уроками по практике речепонимания и произношения). А пример выше, огромное конечно спасибо за попытку, но он, как я понял, проверяет существует ли заданное значение в заданной секции, и если да, то создаёт заданный параметр с заданным значением в этой секции на одну строчку ниже, распознанного значения... а если значение не найдено, то заданный параметр со значением записывается в первую строчку заданного параметра... Но мне, вообще-то, ненужно чтобы там была какая-то либо или чего-то либо проверка, нужно чтобы был скрипт, в определённую команду которого (типа $Pos=3), я смог бы внести номер строки заданной секции, и после запуска данного скрипта, в эту строку прописался бы заданный параметр со значеним. Цитата:
Цитата:
|
bogomolv
Цитата:
Цитата:
А на счёт справки, Спасибо, так намного проще понимать что тебе советуют! :) |
Creat0R, пустые строки в секции имеют место?
|
XXXler
Цитата:
|
Creat0R, все отловил ситуацию:
при таком заполнении: Код:
Func IniWriteVP($File,$Sect,$Param,$Val,$Pos=0) Код:
[Test1] попожжа наваяю, может быть |
XXXler
Огромное спасибо за такое внимание! А может быть есть такая команда, которая после вставки параметра в первую строку, будет как бы двигать его (параметр) по одной строке вниз? А вообще, как я потихоньку начинаю убиждаться, моя задумка очень сложная для выполнения (не только на AutoIt) тем способом который я объяснил. Тогда у меня есть немного другая альтернатива, но цель впринципе та же: Вместо прописывания параметров в определённую строку секции, можно было бы проверять если заданный параметр прописан так как он определён (в скрипте), и если так и прописан, то пусть к этому параметру дописывается символ ; (чтобы параметр был как бы закоментирован), а если у этого параметра уже прописан такой символ, то пусть он убирается, и параметр таким образом становится активным - Этот вриант, как мне кажется, наиболее подходящий, и думаю даже более прост для выполнения скриптом AutoIt. |
Creat0R,
чего-то я недопонимаю: если тебе нужно добавить\убрать, например, 5 и 6
по счету элемент меню, зачем изменять позиции остальных елементов?
добавить: IniWriteVP($IniFile,"Menu_1","Item_5","пятый элемент",5) IniWriteVP($IniFile,"Menu_1","Item_6","шестой элемент",6) убрать: IniDelete($IniFile,"Menu_1","Item_5") IniDelete($IniFile,"Menu_1","Item_6") |
XXXler
Дело в том, что там 7 пунктов меню, и если я, допустим уберу третьий пункт, то тот который был четвёртым, автоматом станет третьийм, и уже потом скрипт ошибётся. А также, может быть такая ситуация (если почти все меню будут убранны), когда останутся два-три пункта меню, и их ненужно трогать, а также ненужно создавать тех которых нету (и которые должный быть, если их включикли - по вызову этого же скрипта, но с другим ключём), поэтому я немогу узнать, какие есть, а каких нету, и нужно просто не убирать их, а закоментировать (как я писал в последнем посте про альтернативу), или раскоментировать, если они закоментированный (символом ; ). |
bogomolv
Цитата:
|
1 вложений
bogomolv
Цитата:
|
Цитата:
|
ANGRO
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Это в браузере Opera! Цитата:
Возле ссылки Полезное сообщение, нужно было-бы приделать и ссылку такую - Бесполезное сообщение :laugh: P.S: А вообще, спасибо за советы, думаю кога-то, в далёком будущем, они мне и пригодятся, и думаю если бы я и планировал серъёзно начинать программировать, то уж точно не начинал бы с AotoIt (При всём уважении к этому проэкту, и поверь, оно есть). |
Creat0R
Да-а-а, глянул твой скрип... Слов нет - одни буквы... Надеюсь, ты сам все понял. Я всю бурную и бесполезную переписку с тобой поудалял. Прошу это сделать и тебя. Те проблемы, которые ты решаешь, - результат твоей фантастической безграмотности и не имеют никакого отношения к программированию и к AutoIt. |
bogomolv
Цитата:
Большое спасибо за помощь! :beer: (это я серъёзно, без всякого сорказма). |
Я тут людей спрашивал как получить данные сетевых соединений, вот как-то так
Код:
Dim $strComputer = "." |
Цитата:
|
Есть ли у кого пример или готовый скрипт поиска файла по всем дискам и всем директориям и поддиректориям
|
adima
Пример поиска файла здесь уже приводился. В твоем случае нужно лишь зациклить поиск по дискам: Код:
Opt('ExpandEnvStrings', 1); default = 0 |
Где можно взять готовый скрипт или может у кого есть на программу R-STUDIO v.3 EN
|
Скажите, как с помощью AutoIt можно получить раздел реестра содержащий какой либо параметр=значение.
Надо чтобы результатом был раздел реестра содержащий данный параметр равный данному значению. Или может кто подскажет как получить название устройства (установленого, например видео карты)из реестра. По адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ имееется информация о всех установленых драйверах системы, но конечный раздел для каждого устройства разный, в зависимости от того как его назвали при разработке драйвера, единственное как можно определить например видеокарту - это что параметр Group = video |
xstranger
ПННХНЧ (Пишу, Но Ни Хрена Не Читаю)? На основе этого примера можно считать и проверить на соблюдение любого условия любую информацию из любого раздела реестра: Код:
;Считывание на стадии CMDLINES.TXT будущего разрешение экрана Данный пример позволяет проверить наличие железки по ее HWID: Код:
$hwid='PCI\VEN_10DE' ;nforce4 |
нет.... это немного не то. Или то но я не могу понять как этого добиться.
Просто есть идея - скрипт запускающийся в detachedProgram и постоянно проверяющий либо реестр (если возможно оттуда получить значение) либо консольное приложение - которое возвращает установленый драйвер видео/звука/ит.д.. этот скрипт выводит на экран в процессе установки - установленые драйвера - видео, звук, модем и количество неопознанных устройств. Можно конечно открыть devmgr по shift+а10, но какаяже тогда автоматизация..., а идея мне кажется хорошая. может есть у когонибудь какие нибудь практические предложения!?... давайте вместе подумаем |
вот уже кое что нашел:
в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video - перечисляются все видео драйверы установленые на компьютере включая vgasave, но только один вложеный раздел содержит параметр Device Description и его значение равно названию видео карты. с помощью утилиты из состава reskit 2k srv - regfind можно получить значение параметра Device Description |
прошу сильно не пинать, а подробненько разжувать:
Есть прога. К ней есть API-функции. Как их передать программе через autoit?? Просьба попожробенее и на примере. Вот, для примера имею: - доступ к функциям осуществляется через единый интерфейс IRunpadShell ---------------------------------------------- HRESULT TurnShell(BOOL bNewState); Включает или отключает шелл (TRUE/FALSE соответственно) ---------------------------------------------- Как мне к примеру через автоит закрыть прогу через эту функцию??? |
xstranger
Цитата:
Может все же поделишься, зачем тебе все это нужно? Цитата:
Задай в параметре find название своей видеокарты и укажи в reg query свою ветку реестра, и мой скрипт ответит тебе, есть ли такая видеокарта. kpuk Цитата:
|
Это только одна из функций для примера, вот другой пример, который можно тока через API сделать:
------------------------------------------------------------------------------- HRESULT DoSingleAction(RSHELLACTION dwAction); Выполняет определенное действие: RSA_SHOWPANEL - показывает плавающую панель с закладками RSA_MINIMIZEALLWINDOWS - минимизирует все активные окна RSA_KILLALLTASKS - снимает все разрешенные задачи (аналог команды шелла/сервера) RSA_RESTOREVMODE - восстанавливает видеорежим (после выхода из проблемных игр) RSA_UPDATEDESKTOP - обновляет рабочий стол шелла RSA_CLOSECHILDWINDOWS - закрывает все дочерние окна шелла RSA_SWITCHTOUSERMODE - переключает шелл в режим пользователя RSA_TURNMONITORON - включает монитор RSA_TURNMONITOROFF - отключает монитор RSA_ENDVIPSESSION - завершает личную (VIP) сессию клиента (только с версии 4.52) Функция является асинхронной. ----------------------------------------------------------------------------------- Как мне через апи завершить личную VIP сессию клиента? через API !!!! |
kpuk
А какое отношение имеет ко всему этому Autoit? Разбирайся с API! |
Ну какбы на нём писать просто - это раз!
И в нём вроди как есть функция dllcall которая позволяет работать с апи! ВОт по этому и спрашиваю |
kpuk
На Autoit сделать то, что ты хочешь невозможно. Так же как и на WBS. Это проблема реализации API в програме RunpadShell. |
Набросал включение отключение сетевой карточки, мож кому пригодится.
Код:
$sConnectionName = "Home Office Connection" |
ANGRO
?????? Код:
devcon disable *net* |
Цитата:
Да да знаю скажиш можно включить в сборку и не кто не узнает, а ещё лучше прямо в реестор писать и всё. Я стараюсь придерживаться другой концепции, пользоваться только стандартным API настолько глубоко насколько знания позволяют и ничего не писать напрямую в реестор, пусть Win сам с этим разбирается. Для узкой направленности автокликанья в своей винде и сборках для друзей и помощи на работе самый короткий путь типа "взял скачал, на винт забросил, команду передал" подходит, а когда билд уходит на сторону хочется гарантировать определённые вещи. В любом случаи ИМХО мне интересней учится взаимодействию с операционкой используя её возможности. P.S. сколько твой devcon весит, а сколько мой код ? |
ANGRO
Может, все же зайдешь по ссылке, которую я тебе давал? Это снимет кучу заданных вопросов. А на счет "интереснее" - тут спору нет. :) |
bogomolv
Спасибо воспользуюсь твоим предложением. Namespace(49) разобрался писать нужно так Namespace(0x00000031) |
Кто нибудь может пожалуйста помочь разобраться с такой пропблемой:
Чтобы прописывать строчки в начало секции *.ini файла, я воспользовался функцией Func IniWriteVP... Так вот, когда я попытался воспользоваться этой функцией в (цикле?) Select...Case...EndSelect, то выдалась ошибка о том что нету совпадения между Select и Case и между EndSelect (что-то в этом роде), и вообще практический все команды в таком цикле не исполняются (т.е если в этом цикле используется упомянутая функция). Вот пример, который по идее, должен записывать в заданную секцию, параметр со значением, в первую строку этой секции: Код:
Select Может кто нибудь подскажет в чём дело, как это осуществить? |
Цитата:
Функция - это подпрограмма, описанная за пределами основного тела программы (впрочем в AutoIT это не обязательно, т.к. нет четкой границы, можно ставить и в начале (после объявления глобальных переменных ипользованных в ней), и в конце), которую можно вызывать из основного тела программы, передавая ей параметры, получая от нее результат: Код:
;~ Описываем функцию: Код:
;~ Описываем функцию |
XXXler
Цитата:
Цитата:
![]() это то что и нужно было! |
XXXler ты человек смотрю добрый разъесни тогда такую весч.
$var=MyFunc("Заголовок","Сообщение") ну с этим всё понятно, а вот здесь Case $CmdLine[0] = 0 IniWriteVP(@ScriptDir&"\Test.ini","Test Section","Parametr Test","Value Test",1) разве не нужно делать через Call(Func). |
Может
кто подскажет как создать WAN PPPoE соединение (обычно это соединение
создающееся для работы через модем) и прописать туда логин пароль.
Спасибо
|
Цитата:
|
я не понял, какой такой идентификации не происходит. Но попробуй еще WinSpy от nnCron, они здорово дополняют друг друга
|
Цитата:
>>>>>>>>>>>> Window Details <<<<<<<<<<<<< Title: >>>>>>>>>>> Control Under Mouse <<<<<<<<<<< Text: |
Как
с пом. Autoit получить SID пользователя или группы? Я сделал функцию
обработки файлового вывода от psgetsid.exe, но она слишком медленно
работает.
|
DenchikK
Цитата:
Можно подождать этого окна вот так: Код:
WinWaitActive('') Код:
Do Процитирую AutoIt.chm: Цитата:
|
Dirk Diggler
Цитата:
Решил похожим методом (т.е. слегка раком :) ), только без посторонних утилит и без обработки потоков с пом. соотв. ф-ций в последних бетах АвтоИт-а (RegRead здесь не катит по причине запрета на чтение требуемой ветки): Код:
Func findsid() Цитата:
|
Подскажите
пожалуйста, можно ли сделать сравнение даты создания (изминения) файла
в сети, с другой датой (указанной в скрипте), и если дата создания
(изминения) файла, ровняется указанной в скрипте, то пусть появляется
меседжбокс, в противном случае, что-то должно делаться. Т.е, допустим в
сети, лежит файл, который в последний раз был изменён 25-ого Января,
2006 г. А в скрипте, указать ту же дату для сравнения - 25-го января
2006 г. И если в момент запуска скрипта, файл не был изменён, и дата
его изменения ровна указанной в скрипте, то пусть выскакивает
меседжбокс, а если файл был изменён (т.е если уже его дата изминения не
ровняется указанной), то что-то должно делаться (неважно что :) ).
Если такое возможно, подскажите плиз как это оуществить. Заранее благодарю за внимание! |
Цитата:
Код:
Func
GetSid($_Username) ;возвращает сид юзера. имя должно быть полным,
все довески(домен, комп) должны быть уже переданы в функкцию Код:
Func GetSid($UserName, $Domain) |
Код:
HotKeySet("{PAUSE}", "Pause") подскажите что не так? |
AdrenalinE
Цитата:
Код:
Func Attack() |
Цитата:
|
Есть
такой вопрос - как заставить скрипт удалить самого себя? Я пробовал
сделать такое, прописав создание файла (батника), который удляет
скрипт, а затем и самого себя, но мне нужно запускать скрипт не из
текущего каталога, а из другого, поэтому при запуске батника, он
(батник) работает как бы из того каталога, с которого был запущен
скрипт, поэтому и не удаляет сам скрипт (хотя на странность, удаляет
сам себя).
|
Всё, разобрался :) ...
Я пробовал через макрос @ScriptName, но таким образом удаляется сам скрипт, а если он закомпилирован в екзешник, то он не удаляется... вот я и решил эту задачю другим способом, и опять таки в помощь пришёл батник: Код:
FileWrite(@ScriptDir&"\temp.bat",
"Del /q """ & @ScriptDir & "\" & @ScriptName & """"
& @CRLF & "Del /q """ & @ScriptDir & "\temp.bat""") P.S: А на счёт моего предыдущего вопроса в посте #272 никто не знает? хотябы подскажите, возможно такое реализовать на AutoIt, или нет? |
Есть вопрос - можно ли по хэндлу восстановить имя файла?.. В противном случае функции FileFind* почти бесполезны
EDIT: все, разобрался - повелся на имена функций, несмотря на схожее название эти две функции делают совершенно разные вещи - одна возвращает хэндл, а другая имя |
Кто-то
может подсказать - как можно осуществить поиск определённого слова, в
файле (например, в test.tmp), и именно в простом файле содержащем
текст, а не в ini (т.к решение для ини уже тут пдооставили ранее).
Заранее спасибо! |
Creat0R
Цитата:
Код:
;в каком файле искать текст |
Creat0R
И для обычного файла решение предоставляли заранее. Это решение я взял из справки по Dos и прикрутил к AutoIt: Код:
If RunWait('@ComSpec@ /C find "Pacific Rim" < trade.txt','',0)=0 Then Sanja Alone, привет! Ты быстрее набираешь тексты! А я - короче! :) |
bogomolv
Строго говоря, оба варианта находят не слова, а заданные последовательности символов. Например, при поиске слова "кот" мы найдем и "котлету", и "антрекот" и много еще чего... В AutoIt явно не хватает поддержки регулярных выражений, в качестве альтернативы можно использовать FINDSTR. Например, следующий скрипт ищет все вхождения слова BASIC: Код:
If RunWait('@ComSpec@ /C findstr /I "\<baSic\>" lang.txt','',0)=0 Then |
Цитата:
|
Sanja Alone, amel27, XXXler:
Во-первых, большое спасибо за помощь. Пример который привёл Sanja Alone, выводит ошибку (в MsgBox), также пример от bogomolv, выводит ошибку о том, что не возможно найти файл (хотя он наместе)... Но не в этом суть, я в результате использовал пример от Sanja Alone, но немного модифицировал его, т.к этот пример не искал кириллицу (для этого добавил перекодировку строк)... но есть другая проблема - если я пытаюсь указать строчку для поиска, не прямым способом, а через переменную ($Text), то поиск не осуществляется, и постоянно возвращается $Var = @error : Код:
;Файл в котором будет произведён поиск Если в файле Test.ini, в секции [Section], у параметра Parametr, будет значение предназначенное для того самого поиска (т.е само искомое слово), то запустив этот скрипт, в любом случае $Var будет ровнятся @error, т.е текст указанный в ини файле, искаться не будет, а именно так мне нужно осуществить поиск. И ещё раз спасибо, буду благодарен если сможете и в этом помочь. |
Creat0R
Цитата:
Например: Код:
If RunWait('@ComSpec@ /C find "Pacific Rim" < C:\DOS\trade.txt','',0)=0 Then Код:
Opt('ExpandVarStrings', 1); default = 0 |
bogomolv
Вот так выглядит у меня состав скрипта: Код:
Opt("ExpandVarStrings", 1) Вот как можно заставить такой вариант сработать, но это тоже только для латиницы: Код:
If RunWait(@ComSpec & " /C find /i /c ""Word"" ""C:\Test.txt"" | find /c "": 0"" > f.tmp","",0)<>0 Then |
Дополнил код по сетевым интерфейсам.
Не могу понять почему не получается обновить информацию по состоянию интерфейса после включения / выключения. Мож кто подскажит. Код:
#include <GUIConstants.au3> |
Creat0R
У тебя потрясающее умение делать ошибки там, где их сделать невозможно! В своих примерах ты в первом случае искал слово "word", а во втором - слово "Word". Естественно, что результаты были разными. Проблема русского языка и DOS поднималась здесь не раз. Один из вариантов: Код:
If RunWait('@ComSpec@ /C chcp 1251 | find "Ворд" < C:\Test.txt','',0)=0 Then MsgBox(64,"","Текст Был найден") |
bogomolv
Цитата:
Цитата:
Цитата:
|
XXXler
Цитата:
|
С поиском я разобрался, Всем спасибо, пример от Sanja Alone
оказался верным, просто нужно учитывать, что поиск включая табы (когда
нажимаем Tab), не даёт результатов, и слова для поиска, не должны
содержать такие пробелы (Tab)...
Теперь у меня немного другой вопрос - как можно записать текст, в определённую строку файла, но не именно в указанную строку (номер строки), а в заданную строку плюс 4 строки? т.е к примеру, нужно в файл Test.txt, в 12-тую строку+4 (т.е получается как бы в 16-тую, но число строки мне заранее не известно, оно будет браться из возвращённого значения - $Var[0]), записать например такой текст - Hello world! -Возможно такое осуществить? Кстати, хотел узнать, в чём разница между FileWrite и FileWriteLine? вроде они одинаково работают, я пологал, что FileWriteLine, как раз-то и поможет мне в прописовании текста в определённую строку файла, а оказалось, эта функция вовсе этого не умеет :( . |
Есть у кого нибудь скрипт на MsOffice 2003 rus?
|
Creat0R
Цитата:
|
|
Цитата:
|
Господа. Никто не подскажет как запустить файл.hta
Я делал так Код:
run ("mshta.exe /имя файла.hta") |
Dark Engel
Смоти соседнюю тему ;) Просто start /wait wpi.hta и все... |
Dark Engel
Цитата:
Код:
run ("mshta путь\имя файла.hta") Код:
run ("mshta " & @ScriptDir & "\имя файла.hta") |
AutoIt 3.2
Новая версия программы, предназначенной для автоматизации часто выполняемых действий в ОС Windows. Утилита позволяет повторять нажатия клавиш клавиатуры, перемещение и клики мышкой, манипуляции с окнами приложений, работу с буфером обмена и другие действия пользователя. Например, с помощью этой программы можно производить установку однотипных приложений. Для выполнения автоматических действий AutoIt создает текстовый сценарий, который использует функции и операторы VBScript и BASIC, а также некоторых других языков программирования. После создания программой специального управляющего скрипта, его можно скомпилировать в исполняемый файл, который будет работать в любой операционной системе семейства Windows. В новой версии изменен синтаксис написания скрипта, добавлены новые способы взаимодействия с ОС, улучшена совместимость с различными языковыми версиями Windows. ОС: Windows 95/98/Me/NT/2000/XP/2003 | Англ. интерфейс | Бесплатно. Скачать | download AutoIt 3.2 >> (2891 кб) http://www.autoitscript.com/files/au...t-v3-setup.exe |
А вот очередной семпл cделанный на последней стабильной версии.
Код:
Const $RASPBDFLAG_PositionDlg = 0x00000001 ;+ xDlg и yDlg |
ALL
Ну и как вам v3.2.0.1? Пока самое сильное впечатление - это растолстевший втрое exe-шник. Большинство новых функций уже имелись в бетах. Значит, весь "привес" - это COM object support? По поводу последней новации. Знающие и неленивые, выкладывайте, плз, свои наработки с использованием COM object support. Особенно интересны сравнения: "Вот так приходилось делать раньше, а вот так - теперь!" Кстати, что за инфа об изменении синтаксиса? Об этом говорится в анонсе, приведенном DenchikK. При изучении справки и changelog ничего подобного не заметил. |
А что такое COM object support и COM вообще? Дайте пару ссылок
|
Как вариант 288 пост
|
Dirk Diggler
Цитата:
И вообще, оно не работает по другим причинам, именно по тем, что файл который предназначен для поиска в нём, сам по себе в кодировке UTF, а как известно, командная строка плохо работает с этой кодировкой (при поиске кириллицы)... bogomolv Цитата:
--------------- У меня есть другой трабл, буду благодарен если кто-то сможет помочь: По непонятной мне причине, когда делаю проверку на существование файла, то скрипт его в любом случае находит, хотя на самом деле его нет... это происходит после попытки закачять файл из сети... вобщем вот скрипт, который пытается скачать файл из сети, и мне нужно сделать так, что если файл небыл скачен, то должно быть предупреждение об этом (MsgBox): Код:
;Берём ссылку из буффера обмена |
Цитата:
Цитата:
можно например сначала попытатся получить размер: Код:
If InetGetSize($Clip)=0 Then |
XXXler
Цитата:
Цитата:
Я пробовал так (без участия буффера обмена, думал в нём дело): Код:
$Clip = "http://ссылка.zip" Когда я поменял немного ссылку (убрав расширение .zip): Код:
$Clip = "http://ссылка" Я даже пробовал через командную строку проверить файл, через функцию _RunDos (закачался ли, или нет), но даже и так файл как бы существовал... а когда делал проверку отдельно (в батнике), то всё ок, никакого файла не существовало. Может всё же есть какой-то, пусть даже хитрый, но работающий способ? |
Цитата:
|
Очередной семпл, в дополнение к 301.
Пишу сюда чтоб сразу не утонул т.к. проявился интересный нюанс. Размер структуры нужно выравнивать по 4 байтам. Уж не знаю везде или нет в приведённом примере точно. Код:
Const $RASEDFLAG_PositionDlg = 0x00000001 |
Какой будет правильный синтаксис в скрипте AutoIT для добавления программы в Firewall Windows XP
Мой вариант не правильный: RunWait ( 'netsh firewall add allowedprogram' '@ProgramFilesDir & '\' & 'InterVideo\DVD7\WinDVD.exe WinDVD ENABLE' ) SciTE выдает ошибку (C:\Install\WinDVD 7.0.27.191\autoit-windvd7.au3(67,69) : ERROR: syntax error RunWait ( 'netsh firewall add allowedprogram' '@ProgramFilesDir & ') |
Цитата:
Код:
RunWait('netsh firewall add allowedprogram ""'&@ProgramFilesDir&'\InterVideo\DVD7\WinDVD.exe"" WinDVD ENABLE') |
XXXler
Спасиба! |
А вот кстати как это будет на COM.
Особо не разбирался в возможностях просто транслировал пример из MSDN. Не уверен что будет работать до WinXP_SP2, но стоит проверить. Код:
;Firewall Adding an Application |
Рабочий вариант:
Код:
Select |
Нужен скрипт который бы сканировал текущий каталог и выводил в результате все подпапки, вот что у меня вышло
Код:
;--------------------------------------Start Dir---------------------------------------- |
bodro
интересно чем не устраивает DIR? Код:
DIR /AD /S /B >test.txt Код:
$root="C:" |
конечно, синтаксическая ошибка. внимательнее надо быть, у Вас апостроф вместо & .
|
Код:
;~ Функция вывода структуры каталогов Есть минус - каталоги в массиве идут по вложенности (сначала верхний уровень, потом вложенные папки), да и быстродействие хромает... |
спасибо DIR /AD /S /B >test.txt меня полностью удовлетворил :)
|
Такой
вопрос - Как можно корректно, закрыть определённую программу (не
убивать её процесс, а именно нормально закрыть). Эту программу не
получается уловить через WinWaitActive, она находится в трее, а как из
трея вызывать окно, я не знаю.
И ещё, я запускаю Winamp из трея (повторным запуском), но не получается также уловить его окно, вроде знаю заголовок, но ничего не происходит, скрипт продолжает свои действия не активируя окно винампа (а действия связанный именно с ним). Может есть другой способ уловить окно? т.е не по заголовку, а по другим показателям, ведь заголовок может меняться (при разных языковых версиях). |
А ProcessClose разве его не корректно завершеает?
Кстати не нашел там ProcessKill По поводу винампа попробуй Код:
AutoItSetOption("WinTitleMatchMode", 4) |
Ivan1986
Цитата:
Цитата:
Я выкрутился временно так: Код:
;Проверяю, если винам не запущен, то... |
1 вложений
Уважаемые
знатоки помогите как в элементе "ClassNameNN: SysTreeView321" поставить
чекбокс в нужном мне месте . Перерыл справку но ничего не нашел ,
наверняка есть как это сделать но ничего не могу найти??
|
Интересно,
как можно задать в скрипте, чтобы определял два параметра командной
строки? Т.е, например, я запускаю закомпилированный скрипт таким
образом - start script.exe %l %c - Где %l это параметр, который
интерпритируется как ссылка (запуск происходит их браузера opera), а %c
это параметр, который передаёт содержимое буффера обмена. Так вот,
после такого запуска, нужно чтобы для первого параметра происходило
одно дейсТвие (пусть даже выводитя MsgBox со значением), а для второго
параметра другое действие.
Или хотябы сделать так, чтобы можно было распозновать параметр не по его конечному значению (если %l то значение будет ссылкой по которой было нажато действие для вызова скрипта), а именно по его изначальному виду. Если скрипт допустим запущен так - start script.exe %l - то нужно чтобы в скрипте было распознование того, что его (скрипт) "вызвали" именно с таким ключом (т.к в скрипте есть ещё другие функции, вызываемые другими ключами)... я пробовал таким образом: Код:
If $CmdLine[1] = "%l" Then Я пробовал и так: Код:
If $CmdLine[1] = 0 Then |
Creat0R
Вот простенький разборщик ком. строки: Код:
If $CmdLine[0]<>0 Then |
Доброго времени суток!!!
1.Сначала у меня вопрос Как запустить папку Панель управления? а ещё лучше сразу открыть "свойства системы" (Система) 2.Обнаружил косяк. Собрал exe-шник, у меня работает хорошо и закрывается, а вот у друзей работает, но не закрывается - просто сворачивается в трей - что делать ?? 3.И ещё как оказалось - у них не отображаются сообщения MsgBox(0, "Сменщик имени рабочей группы", "Вы уже в группе PLEXUS") Вааще странно. У меня всегда отображались :( |
KotoVAS
Цитата:
Код:
%WINDIR%\system32\sysdm.cpl |
KotoVAS
Цитата:
|
Да
все, как запустить я нашел - А мож знаешь надежный спосб переключения
между закладками в "Свойства системы". Мышью пользвать и CTRL+TAB - не
очень надежно )
|
KotoVAS
Цитата:
Вот полный список закладок окна "Свойства системы": System Properties: Advanced System Properties: Advanced Tab System Properties: Automatic Updates (2003) System Properties: Automatic Updates (XP) System Properties: Computer Name System Properties: Device Manager System Properties: General System Properties: Hardware System Properties: Hardware Profiles System Properties: Network Identification System Properties: Performance System Properties: Remote (XP) System Properties: Remote (2003) System Properties: System Restore System Properties: User Profiles P.S. Сейчас подправлю шапку, чтобы всем было понятно зачем нужен этот справочник. |
Sanja Alone
Цитата:
|
Цитата:
я уже давал пример здесь, если его видоизменить то можно передавать определенные значения с подключами: Код:
For $i=1 To $CmdLine[0] |
Sanja Alone
помогите мне сделать сделать маленький скрипт на RAR SFX архив, нажать извлечь, потом вставить пароль с текстового дока, подождать пока распакуется, подождать пока запуститься установка проги, а потом нажать - No то есть не перезагружать комп. заранее большое спасибо! |
prokazzza
Цитата:
|
boss911
Цитата:
|
prokazzza
Цитата:
Сори, оффтоп получаетса!! |
XXXler
Цитата:
Цитата:
Вот как я приминил это дело: Код:
Select А команда для запуска из браузера такая: Код:
Execute program, "Test.exe", "/url=%u /txt=%T" Кстати, ты упустил символы $ у некоторых переменных CmdLine ;) |
prokazzza
Цитата:
Код:
;имя (или полный путь и имя) sfx-архива берем из ком. строки (если ничего нет - выходим) |
Creat0R
Если порядок параметров строго определен, то можно не париться с доп. текстом. Тогда "анализ" ком. строки будет выглядеть так: Код:
If $CmdLine[0]<>0 Then Код:
Execute program, "Test.exe", "%u %T" |
Sanja Alone
Цитата:
Но у меня появилась немного другая проблема (на эту-же тему) - Дело в том, что если выделенный текст содержал кавычки (более чем две пары), то кавычки не попадают в файл. И ещё, если выделенный текст содержит кавычку, а затем пробел (в дальнейшем тексте, и именно в дальнейшем, не в предыдущем), то выдаётся сообщение с ошибкой выполнения сценария - Что мол переменная используется без того чтобы она была объявленна. А когда объявляю переменные, скрипт не выводит ошибок, но при таком случае (кавычка а затем пробел -> "текст ) вообще ничего не пишет в файл (кроме ссылки естественно). - Это лечится? P.S: Странно, но вот например, если выделить такой текст: "Текст То кавычка становится после слова (в файле): Текст" |
Creat0R
Цитата:
Например, если в ком. строке скрипта я напишу: Код:
"Hello, Остап Ибрагимович. Вы являетесь работником фирмы "Рога и копыта"?" Код:
1 - "Hello, Остап Ибрагимович. Вы являетесь работником фирмы Рога" Код:
For $i=1 To $CmdLine[0] P.S. Можешь еще попробовать побороться с буфером обмена. Похожая на твою задача была в старой теме - я решал ее вот так |
Sanja Alone
Цитата:
Код:
$Text = ClipGet() Код:
Copy & Execute program, "Script.exe", "%u" Ещё раз спасибо за помощь! ------------------------------------- У меня тут появилась проблема с другой сферы... Я сделал немного примитивный (пробный) гуи интерфейс (см. код ниже), и есть пару вопросов по этому поводу: А) Как можно сделать, чтобы после зажатия галки у надписи “Опция”, окно (MsgBox) появлялось только после зажатия, а не каждый раз. Т.е в данный момент, если я зажму галку, то сообщение появляется, если отожму, то тоже появляется - как сделать чтобы появлялось только после зажатия? Б) У меня в гуи (GUI), есть две кнопки (кроме прочих) - Одна для отмечивания всех галок ("Выбрать все"), а другая для их снятия ("Очистить все") - Вопрос: Как сделать чтобы была такая одна кнопка, а ещё лучше тоже чекбокс, после нажатия которого\ой, выделялись бы все чекбоксы, а если отжать эту\от кнопку\чекбокс, то чтобы также и отжимались все остальные чекбоксы? Г) Это самая большая прблема, и она у меня имеет наивысшый приоритет для решения - Я поместил в гуи прогресс бар (progressbar), и хотел бы добиться такого результата, чтобы в то время, как происходит копирование определённых файлов, этот прогресс бар был задйствован. Т.е если я копирую например большой файл (фильм к примеру), то чтобы пока он копировался, ползунок бегал в прогрес баре. Мне в принципе не нужно чтобы происходил там какого то рода подсчёт размера файла (хотя думаю в этом и заключается достижение моей задачки), и на основе чего и делался прогресс, а чтобы просто было видно что копирование в прогрессе (и не важно в каком этапе оно находится :) ). Я временно ограничелся запуском внешнего прогресс бара (через запуск этого же скрипта, с ком. строкой), который (прогрессбар) ходит туда сюда до тех пор, пока не будет существовать определёный файл, который создаётся самим скриптом в тот момент, как копирование окончено (т.е я поставил команду создания этого файла как метку, после команды копирования). Но хотелось бы чтобы этот прогресс бар был внутри гуи интерфейса. Скрипт: Код:
#include <GUIConstants.au3> |
Помогите разобраться почему не работает выбор строки из выпадающего меню для Adobe Creative Suite 2 Russian by cvs/SSG
Код:
ControlCommand('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1','SelectString','Photoshop CS2 9.0') |
Creat0R
А) Код:
If $msg = $Opt Then А где ты В) потерял? :) Г) Прогрессбар - это весьма муторная штука, когда нет естественных привязок. Твой вариант - это именно тот случай (такая же проблема была и у меня в OEsr). Я не стал париться, и сделал простой "светофор" :) Он не мешает работе основного приложения (в данном сл. - архиватора) и дает пользователю представление о происходящем (для верности, можно в процессе/конце операции еще проигрывать звуковой файл и/или выводить сообщения в трее - SoundPlay ( "filename" [, wait] ), TrayTip ( "title", "text", timeout [, option] ) ). Я этого делать не стал, а ты можешь попробовать... sattva Цитата:
Код:
ControlFocus('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1') Код:
ControlCommand('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1',"SetCurrentSelection", ControlCommand('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1',"FindString",'Photoshop CS2 9.0')) Код:
Send("{DOWN число}") |
Sanja Alone
я не силен в скриптах пожалуста можно сделать вот скрипт запуск c:/install/install.sfx.exe нажать кнопку "извлечь" вставить пароль из c:/install/password.txt нажать кнопку "ок" пождать пока распакуется RAR архив подождать пока установится istall.exe если выйдет надпись "сделать перезагрузку" нажать нет, если не выйдет надпись то ничего не делать. |
Sanja Alone
Спасибо, сработал только этот вариант Код:
Global $file='Adobe Photoshop CS2.msi', $key='keygen.exe' |
prokazzza
Цитата:
Цитата:
Цитата:
|
Возвращаясь
к задаче поиска вхождений заданного слова в произвольный текст. Выше я
дал маху утверждая, что AutoIT не поддерживает регулярные выражения...
хотя с русским опять облом - если метасимволы \l \u \w еще работают, то (?i) ни в какую... :(
StringRegExp - Check if a string fits a given regular expression pattern. StringRegExpReplace - Replace text in a string based on regular expressions. вариант поиска слова с использованием регулярных выражений (на основе скрипта Sanja Alone): Код:
#include <File.au3> |
Sanja Alone
Снова огромно спасибо за А) и Б) Цитата:
![]() А на счёт Г), я всё же решил немного попариться, и нашёл, я бы сказал, обходное решение... Вместо того, чтобы копировать файл командами AutoIt'а, я повесил копирование на ком. строку: Код:
Run(@ComSpec & " /c copy /y ""c:\File.txt"" ""d:\File.txt""", "", @SW_HIDE) Но и это можно обойти, создав той-же ком. строкой, файл во временной папке %temp%, и по завершению копирования удалять его, а проверку для завершения прогресс бара, делать так: If Not ProcessExists("cmd.exe") or Not FileExists(@TempDir & "\mark.tmp") Then ExitLoop Или может есть более надёжный способ, но тогда нужно узнать, возможно ли, и как, проверять когда был запущен процесс (cmd.exe), и если именно этот процесс не существует, тогда выходить с петли. Если кто-то подскажет возможно ли такое, и если да, то как осуществить, то буду очень признателен. ---------------------- У меня есть ещё один вопрос, и тоже в другом направлении - Нужно взять в переменную, все последние символы идущие после определнного знака у значения другой переменной. Т.е, вот например значение переменной $Var ровняется c:\program files\my programm\test.zip - и нужно чтобы из этой переменной, вернулось такое значение - test.zip - в другую переменную, например в $Var1. Но заранее, не известно, ни количество слэшей (\) в пути, ни количество символов после последнего слэша. Возможно такое осуществить? Как я понимаю, тут как-то нужно задействовать одну из вариации команды String, но если честно, то я уже замучался в попытках подобрать подхолящюю для этой цели вариацию, и справка тоже не помогла :( Я временно это решил опять-таки ком. строкой :) : Код:
$Var = "c:\program files\my programm\test.zip" |
Creat0R
Цитата:
Код:
Func PathName($fullpath) |
Creat0R
Цитата:
Код:
$var = 'c:\program files\my programm\test.zip' |
amel27, Sanja Alone:
Спасибо! то что нужно было! |
Интереснейшая фигня наблюдается. Имеем скрипт, который пингует некий хост, и выходит с кодом либо 1, либо 0
Код:
If Ping($cmdline[1],2000) > 0 Then Код:
@echo off Цитата:
Цитата:
Однако, удалим конструкцию с IF, и всё работает как надо: Код:
@echo off Цитата:
Проверено на XP SP1, AutoIt 3.2.0.1 |
Sanja Alone
вот ссылочка на архив посмотрите пожалуста http://uploaded.to/?id=f31c2d весит метр внутри реадми, файл с паролем и RAR SFX архив внутри архива простая прога Atnotes вирусов НЕТ. Заранее спасибо! |
Такая проблема появилась:
Нужно взять значение пареметра в переменную, но брать нужно не из файла конфигурации (*.ini), а из обычного текстового файла. Я решил эту задачу, но только если кодировка файла не является UTF-8, если она такой и является, то киррилица которая будет прописанна в значении, будет отображаться крякозябрами (если вывести переменную в MsgBox)... вот пример работающего скрипта, с файлом test.txt, который в кодировке ANSI: Код:
$File = @ScriptDir & "\test.txt" Код:
2000000= "это тест" |
prokazzza
Код:
If $CmdLine[0]=1 Then Цитата:
P.S. Гораздо удобнее сделать тихую установку этого самого Atnotes непосредственно из его дистрибутива (с отменой перезагрузки, конечно, если она там требуется), а уже свои настройки для этого приложения восстановить из архива. Код:
Global
$file='atnsetup.exe', $InstPath=@ProgramFilesDir & '\ATnotes',
$programgroup='ATnotes' , $rus=@ScriptDir & '\ATnotes.ini' |
Dirk Diggler
Цитата:
Код:
@echo off |
Sanja Alone
вот картинка перезагрузки (1 рисунок) по умолчанию стоит сразу на YES и просьба можешь доработать вот этот скрипт Код:
Run("rundll32.exe netshell.dll,StartNCW") |
prokazzza
Цитата:
Цитата:
|
Sanja Alone
Цитата:
Цитата:
|
prokazzza
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Код:
$file = "test.txt" |
Кстати,
а что с поддержкой юникода(UTF-8) в autoit? Оч. хотелось бы сделать
gui-оболочку для редактирования файлов с иероглифами. Возможно?
|
amel27
Цитата:
|
Sanja Alone
Ты меня совсем не понял. Извини если я тя чем то задел. Мне не нужен Office (мне его и на работе хватает) я хотел показать тебе экран перезагрузки, я пользуюсь пользуюсь прогой Symantec Ghost AI Snapshot мне так более удобно сделал все настройки сохранил как с Atnotes и все Winamp, Nero устанавливаются за 2-3 секунды, со всеми ярлыками какие нужны, с настройками. Тока один недостаток просит перезагрузку понимаешь как это неудобно в режиме GuiRunOnce после каждой проги появляется экран перезагрузки - Nero перезагрузка, Promt перезагрузка ну и т.д. Постоянно приходится нажимать нет, нет..... Цитата:
Насчет AutoIt, мне он не нужен в дальнейшем, вот как ты думаешь скока часов уйдет на то чтобы я овладел какимитами понятиями о действиях этой проги, для того чтобы поставить одну!!! единственную команду на отмену перезагрузки. |
prokazzza
Цитата:
Цитата:
Цитата:
|
Здравствуйте.
Кто-нибудь знает, как в AutoIt реализована функция ProcessList? Используется ли там DLLCall("psapi.dll"...) или DLLCall("kernel32.dll"...) Заранее благодарен. |
AxelM
однако PSAPI.DLL, хотя конечно не DLLCall :) |
Есть два тревожующих вопроса:
1) Нужно запустить мелодию (точнее звук в 5 секунд), и чтобы она постоянно запускалась в цикле. Т.е пока скрипт запущен, чтобы один и тот-же файл играл по кругу (если закончилась мелодия, то чтобы началась по новой играть). Если нужно было бы только это, то можно обойтись так: Код:
While 1 Код:
Function("File.wav", 1) ; Ноль если нужно просто один раз проиграть, а единица (1) для повторного проигрывания. 2) Мне нужно отнять от формата времени, определённое количество минут (до 60-ти), и нужно чтобы не просто отнимались числа от минут, а чтобы именно происходил подсчёт оставшегося времени (уитывая часы). Допустим, есть данное время 22:07:01 - И отняв от этого времени, допустим 8 минут, нужно чтобы получился такой результат - 21:59:01... Если речь идёт только о минутах (т.е без подсчёта часов), то я могу сделать это так: Код:
$Time = "22:07:01" |
1, Можно через вызов внешнего (скомпилированного) скрипта:
Код:
Func Function ($file, $play) Код:
While 1 Код:
$Time = "22:07:01" |
amel27
Цитата:
Пример который ты привёл, а точнее фраза которую я процетировал, навела меня на идею, которая решает эту проблему. Вместо того, чтобы запускать ещё один скрипт, можно запустить этот-же скрипт, но с параметром ком. строки, а запуск мелодии в цикле, поставить под условие - т.е если скрипт запущен с ключём, то запустить цыкл с проигрыванием мелодии: Код:
#NoTrayIcon Цитата:
Код:
$Time = 01:10:43 Есть один глупый вопрос, но я его всё же задам (любопытство преодаливает :tongue: ) - Чем отличаются между собой: @CR, @LF, и @CRLF ? |
Creat0R
Цитата:
Цитата:
Код:
$Time = "01:10:43" Цитата:
|
Creat0R
Цитата:
Только последний (сдвоенный) символ является полноценным идентификатором перевода строки и воспринимается всеми ОС DOS (собс-но, он в DOS-е и появился) и Windows (в *NIX, afaik, переводы строк совсем другие), но, в msgbox-ах можно без проблем исп-ть и "половинчатые" (@LF, @CR) переводы строк. |
amel27
Sanja Alone Спасибо вам, за столь исчерпывающие описания этих макросов :) amel27 Цитата:
|
Интересно, возможно ли осуществить проверку на подключённость к сети? Т.е проверять подключён ли компьютер к сети, или нет.
P.S: Кстати, я как-то пару страниц назад, спрашивал на счёт проверки на битую ссылку... так вот, оказалось что можно элементарно проверить является ли заданная ссылка битой - нужно просто попытаться узнать размер файла по ссылке: Код:
$Link = InetGetSize("http://test/test.zip") |
Creat0R
Цитата:
Код:
If Ping("www.google.com",3000) Then |
Sanja Alone
если человек сидит за проксёй это ничего не даст |
Цитата:
вот несколько модифицированный пример из справки: Код:
;Установка функции перехвата COM-ошибок |
amel27
Цитата:
Есть только один маленьки вопрос про... Цитата:
Код:
MsgBox (0,"Проверка связи","Интернет-соединение отсутствует: " & $oMyError) ![]() |
Creat0R
если код ошибки то $oMyError.number, другие параметры описаны в секции "Case Else" - на случай возникновения произвольных ошибок (кроме явно описанной для объекта WinHttp.WinHttpRequest) |
amel27
Мне нужно было именно описание ошибки ($oMyError.description), спасибо. ---------------------------------- Есть такой вопрос: Как можно переименовать все файлы с одним расширением, в те же имена, но до самого расширения добавить символы _1 - а если уже существуют такие имена, то вместо _1 нужно подставить _2 и т.д. Пробую так: Код:
FileCopy("*.dat", "*_1.dat") А добавление к коду определение на совпадение имён файлов (для замены _1 на последующие цыфры), я даже и не рискую делаь (если вообще смогу), т.к немогу решить первую проблему в задаче. Возможно ли это решить? |
Подскажите, как с помощью AutoIt, задать конкретному сетевому потключению общий доступ?
|
По
поводу моего предыдущего вопроса - Можно хотябы сделать так, чтобы
символы _1 добовлялись вместе с другим расширением, и чтобы если уже
есть такие файлы, за место _1 писать _2 и т.д?
Не могу понять почему, но вот этот пример не работает как ожидается (мной): Код:
$Number = 1 Почему это происходит, и как исправить? ------------- Есть ещё один, более выжный вопрос... Как можно послать команду в винамп (Winamp), например, на проигрывание файла - не запуск винампа с ком. строкой ровняющейся имени файла, а именно вызов команды в самом винампе? Как я понимаю, нужно использовать ControlCommand, но как узнать какую команду посылать? Я пробовал так: Код:
ControlCommand("Player Window", "", "BaseWindow_RootWnd1", 4) Я бы мог конечно просто посылать нажатие клавиш, но мне нужно чтобы это происходило при свёрнутом окне винампа, а для посылки сочетании клавиш, нужно сделать WinActivate, или чтобы окно само было активным. |
Creat0R
Цитата:
Цитата:
Вот тебе код: Код:
;путь к Winamp |
Sanja Alone
Цитата:
В теории я понимаю как это сделать, но на практике, хоть убейте не получается. Вроде всё просто, уже как говорится, “рецепт написан”, но немогу сложить два плюс два. Если не трудно, покажи плиз как должен выглядеть скрипт, по вызову которого, будет делаться то что я спрашивал: Цитата:
Цитата:
Код:
$WinampPath=RegRead ( 'HKEY_CURRENT_USER\Software\Winamp', '' ) |
можно с помощью скрипта поменять имя рабочей группы и имя пользователя
мне нужно переделать ipset http://home.electronicinsanity.com/a...ipts/ipset.rar тоесть добавить ввод рабочей группы и имя комтьютера |
и ещё можно ли с помощью AutoIt скрипта настроить VPN соединение
|
Creat0R
вариант рабочей функции переименования (без контроля входных параматров!) - номера ранее переименованных файлов не трогаются, новые номера считаются от максимального существующего (поэтому возможны "дыры" в нумерации). По ходу производится приведение всех номеров к единому формату по количеству знаков в номере. Код:
#include <File.au3> |
garbals
Цитата:
|
amel27
Цитата:
Также эта функция переименовывает всего один раз, при повторном запуске, если существуют такие-же файлы, но с последующей цифрой (на одну больше), то эти файлы не переименовываются в существующие, но на одну цифру выше... Попробую перефразировать задачу: В папке c:\test, есть 3 файла (кроме прочих) - myfile.dat, hisfile.dat, aourfile.dat - после запуска скрипта, нужно чтобы эти файлы (именно с таким расширением), переименовались в такие имена - myfile_1.dat, hisfile_1.dat, aourfile_1.dat. Далее, при повторном запуске скрипта, если уже обнаружены такие файлы (myfile_1.dat, hisfile_1.dat, aourfile_1.dat), то именно их трогать ненужно, а нужно все остальные (с таким же расширением, и с таким же началом - до символа _), переименовать в такие файлы - myfile_2.dat, hisfile_2.dat, aourfile_2.dat, а те которые не совпадают в начале имени (до символа _), нужно переименовывать как и в первый раз (добовляя _1). Точно такой способ, реализован в утилите 7-zip, там при расспаковке файлов (через командную строку), можно указать ключ, который позволит именно этим способом переименовывать существующие файлы. |
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
FYI: скрипт подправил, теперь кол-во знаков в номере определяется автоматом |
amel27
Цитата:
Цитата:
|
Creat0R
Цитата:
- у ф-ции будет ДВА рабочих параметра (источник и приемник), а не один; - сравнивать нужно ПОФАЙЛОВО и расширение тут непричем (конфликтуют ИМЕНА, а не расширения сами по себе) Допустим, мы хотим проверить существование заданного файла в каталоге и вернуть его новое для этой папки (см. текст ф-ции), алгоритм будет следующий: перед записью в каталог файла (не из этого каталога!) возвращаем через функцию его новое имя и сохраняем уже под этим именем... если что в 7zip именно так. Код:
MsgBox (0,"",_FileNewName ("myfile.dat", "c:\Test")) |
amel27
Цитата:
Функция что ты привёл в пример, отлично справляется с задачей, если бы нужно было переименовывать файлы которые копируются, в таком случае, можно указать и все файлы с определённым расширением. Но мне нужно проверять именно файлы в том каталоге, куда будут копироваться файлы с другого каталога... Пример: Имеем два каталога, первый - “c:\test\a” (с которого будут копироваться файлы), второй - “c:\test\b” (в который должный помещаться файлы, и в котором должно проверяться совпадение имён). В каталоге “b”, перед копированием файлов с каталога “a”, нужно переименовать все файлы с расширением *.dat, но только те которые копируются. Т.е, если допустим, мы копируем два файла - filefirst.dat, filesecond.dat, то для них и нужно проверять совпадение в каталоге “c:\test\b”, если там такие файлы уже есть, то нужно переименовать их в те же имена + _1, но если уже есть и такие имена, то + _2 и т.д... Чтобы в результате, не было потерь никаких файлов, чтобы те файлы которые копируются с “c:\test\a”, в том же виде поместились в “c:\test\b”, а существующие файлы в “c:\test\b”, чтобы всегда переименовались и сохранялись под разными последовательными именами (с приставкой на конце _1, _2 и т.д). |
Извините, может этот вопрос уже поднимался но поиском ответа не нашел.
Опыта в AutoIt у меня очень мало, и я споткнулся еще на примерах к программе. У меня русскоязычная винда и хотелось бы писать на русском и английском языках скажем в блокноте и иметь доступ к меню (скажем через ALT). Проблема в следующем: англоязычные комбинации клавиш не проходят по определению, русскоязычные типа ALT+Ф проходят только если стоит русский язык по умолчанию, но тогда неправильно выводится англоязычный текст. Переключение текущего языка проблемы не решает, а переключения языка по умолчанию я не нашел. Объясните пожалуйста как решить подобную проблему. |
Creat0R
Цитата:
Цитата:
Код:
$sDir = c:\Source\ Код:
$sDir = c:\Source\ |
|
amel27
Нижний пример почти достигает желаемого результата. Пишу почти, так как есть один нюанс... При первом запуске скрипта, всё проходит отлично - файлы в папке назначения переименовываются в новые имена (с добавкой _1), а файлы с папки источника, копируются на место тех которые переименовались. Однако, после вторичного запуска скрипта, я ожидал чтобы те файлы (в папке назначения), имена которых совпадают с именами копируемых файлов (с папки источника), переименовались уже не в те же что и в первый раз (с добавкой _1), а в имена с добавкой последующей цифры тем что уже существуют (с добавкой _2 в этом случае). А файлы которые копируются, чтобы стали под их оригинальными именами в папку назначения. Таким образом, всегда будут сохраняться копии всех файлов, из всех попыток копирования файлов - но, рабочие файлы (те которые не должный переименовываться, т.е те которые копируются из папки источника), должный быть всегда под своими оригинальными именами, а те файлы (в папке назначения) которые были под этими же именами, должный всегда быть переименованы с добавкой _1, _2 и т.д, но чтобы были всегда последними в последовательности добавленных к ним цифрам. Я пытался самостоятельно переделать немного алгоритм, но никак не получается :( - Я понимаю что там требуется внести какое-то мелкое изменение, но оно должно быть правильное, и я пока этого сделать немогу, нехватает опыта что-ли... |
amel27
Цитата:
Мне всего лишь нужно было заместо перемещения, прописать копирование: Код:
$sDir = "c:\source\" |
Sanja Alone
WinAPI метод переключает раскладки а не изменяет язык по умолчанию. Переключать язык как я понял сугубо недостаточно. Нужно что бы менялся язык по умолчанию. Если язык по умолчанию русский то команда Send("!Ф") предположим, срабатывает, но тогда неправильно отображается английский текст. Да и надеяться что у пользователя язык по умолчанию будет русский (у меня у самого английский) не приходится. Так что нужен способ изменения языка по умолчанию. Я понимаю, что для автоматизации инсталляций работа с меню неактуальна, но неужели никто не задавался таким вопросом? |
Creat0R
Цитата:
FYI: подредактировал ф-цию _FileNewName... старый вариант был короче, но для файлов без расширений всегда возвращал на конце точку - для операций с файлами это не важно, а вот для сравнений не есть гут |
1 вложений
Всем здрасти!
Если кому нетрудно помогите с такой проблемкой. Вот написал скрипт для автоматической установки драйверов (просто автоматизировал "Мастер установки оборудования") для установки драйверов с CD. Так вот помогите зациклить процесс выполнения скрипта (сразу говорю я не программист, многое я не могу делать ) я попробовал сам сделать но не получилось. Заранее благодарен!!!! :) :) Все ребята разобрался сам.Всем спасибо! |
Мужики всем привет.
Если кому нетрудно объясните как правильно работать с функцией PixelSearch ( x , y ) Надо чтоб в клиентской части активного окна найден нужный цвета пиксель и если он найден происходит двойное нажание мыше в нужном месте окна. Делаю так Цитата:
|
Не подскажете - как убрать с помощью AutoIt часы на таскбаре
|
xstranger
Цитата:
Код:
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","HideClock","REG_DWORD",0x00000001) Код:
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","HideClock") |
LORDMA
Цитата:
Тогда попробуй так: Код:
Opt("PixelCoordMode", 2) |
Запуск exe файла из определённой директории
Есть
потребность запускать некоторые exe файлы с параметрами определённой
директории (как правило "лечилки" от жадности), например, строчка:
Код:
Run("с:\program files\everest\crack.exe") Приходится обходиться батником в котором прописано: Код:
C: P. S. Я новичок, помидорами не кидать :) |
Lodoss
Код:
FileChangeDir ( @ProgramFilesDir & "\Everest" ) Цитата:
Код:
Run ( @ProgramFilesDir & "\Everest\crack.exe", @ProgramFilesDir & "\Everest" ) |
2 вложений
Вот кому интересно нацарапал пару скриптов для автоматизации установки
драйверов после установки операционки(звук ,видео,и т.д.). Нужно иметь только диск с распакованными драйверами, а скомпилированный скрипт запускать через autorun.inf Один скрипт определяет неустановленное оборудование по желтому пикселю, а второй просто клацает по списку устройств в верхней строчке пока невыскочет "Центр справки" Это мои первые скрипты, так что сильно несудите. Creat0R Большое спасибо,за помощь! |
может кто подскажет код скрипта который делает следующее
Имеются общие задачи дня н количества файлов например Код:
modifype file |
xstranger
Цитата:
Код:
#include <File.au3> |
Спасибо за ответ, но если можно немного по прозрачнее
опишу мою ситуацию. у меня системные файлы патчатся ресурсами в стиле висты на этапе RunOnceEx, так вот, я хотел бы поменять командный файл, на автоит скрипт. вот команды командного файла Код:
... и еще один вопрос. есть ли в автоит какое либо подобие xcopy? чтобы копировались только новые файлы, если есть, то скажите куда смотреть заранее спасибо |
Всем привет!
Может кто поможет. Есть такая необходтмость устанавливать софт с диска на компы(ежедневно около 20-30 компов).Основной комплект прог для большинства компов одинаков,но достаточно часто возникает нужда поставить стандартный комплект прог с небольшими изменениями (вместо одних прог поставить другие,например вместо windvd power dvd). Написал в AutoIt примитивный скрипт типа: Код:
run ("Multemedia\Burn disk\Nero\Nero6608a.exe") Заранее благодарен. |
xstranger
Цитата:
Цитата:
|
Michail77
Цитата:
Код:
#NoTrayIcon В примере я использовал метод диактивации гуи (Gui) перед выводом MsgBox (GUISetState(@SW_DISABLE)), и полсле нажатия на ОК, гуи активируется (GUISetState(@SW_ENABLE)). Но дело в том, что у меня, по не понятным причинам, после активации гуи, он как бы сворачивается. Почему это происходит, и как это предотвратить? - Я также в примере поставил активацию окна (WinActivate), но в момент активации окно на секунду мигает, хотелось бы достичь идеального способа диактивации и затем активации гуи интерфейса. |
Michail77
Цитата:
|
Есть два вопроса (взаимосвязаны между собой):
1) Как можно узнать общий размер всех файлов (в байтах или мб) с определённым расширением, но учитывать файлы в подкаталогах? - Есть функция _FileListToArray, но она не учитывает подкаталоги, может можно её как то улучшить? (там требуется #include <File.au3>). 2) Возможно ли вычислить самый новый файл (взять имя файла и путь к нему в масив), в определённом каталоге - файлы из подкаталогов тоже должны учитываться. |
Мне
необходимо отобразить процесс копирования MS Office 2003 на жесткий
диск, а затем отобразить сам процес установки через AutoIt.
Сделал это с помощью ProgressOn & ProgressSet... Не устраивает: во первых процегресс-бар при копировании не изменяется, а во время установки приложений прогресс бар переваливает за 100 проценнтов и установка приложения при этом продолжается: Код:
ProgressOn ('Копирование MS Office 2003 на жесткий диск','Прогресс','Выполнено',-1,-1,18) |
Creat0R
Цитата:
Код:
@echo off Цитата:
Код:
rem Каталог sattva Цитата:
|
Creat0R
Если только средствами AutoIt, то вот что получилось Код:
#include <File.au3> |
Вопрос, где в этом скрипте ошибка???
Код:
Run ("d:\1\Winamp 5.24\Winamp 5.24.exe") |
Sanja Alone
Цитата:
Цитата:
Код:
cd "путь\к папке" Код:
$NewFile = FileReadLIne("Test.tmp", 1) Цитата:
![]() Angelus Цитата:
Код:
Opt("TrayIconDebug", 1) И когда запустишь скрипт, то наведи мышку на иконку скрипта в трее, и посмотри на какой строке “зависает” скрипт. Как я это вижу, скрипт зависает на одной из строк, содержащей WinWait или WinWaitActive - желательно ставить время, по истичению которого, скрипт больше не будет “ждать” появления окна или его активности... Код:
WinWaitActive("Заголовок", "Текст", 120) ;Где
120, это секунды, по истичению которых, скрипт “продолжит” дальше, вне
зависимости от того, появилось\активировалось ли окно или нет. |
Creat0R
Цитата:
Angelus
|
Есть неплохая идея: написать оболочку (GUI) для авторизации запуска скрипта от имени админа.
начал писать и наткнулся на проблемку - незнаю как реализовать проверку строки RunAsSet на наличие прав администратора вот код: Код:
#include <GUIConstants.au3> Помогайте решать ! :) думаю вещь полезная и пригодиться многим. |
Lodoss
Цитата:
Код:
#include <GUIConstants.au3> |
Наваял тут скрипт для FastStone Image Viewer 2.8 с последующей русификацией.
Может, кому пригодится. Код:
RunWait (@ScriptDir&'\'&'fs.exe /S') ; Тихая установка самой программы |
2Sanja Alone
Да это, но наполовину. проверил: Если пользователь админ - оболочка не запускается как и хотелось , если GUI запускается проверка учётки на привелегии админа Код:
Case $msg = $ok и ещё вопрос можно ли в комбо списке сделать отображение учёток обладающих этими правами администратора :). в макро переменных нашёл только @UserName а можно ли получить список всех учёток зарегестрированых на компе и обладающих администраторскими привелегиями?. |
Как сделать закрытие окна (Alt+F4), например окно хелпа?!
|
TERMINAL
Цитата:
Код:
WinClose("Заголовок окна", "Текст окна") Код:
WinActivate("Заголовок окна", "Текст окна") |
Хотелось бы решить такую задачу...
Имеется файл, а в нём много разного текста, и нужно перечитать весь текст, и проверить, не содержатся ли в нём дубликаты определённой переменной. Т.е, допустим файл содержит такой текст: Код:
Первая строчка Нужно в этом файле вычеслить, повторяется ли этот самый текст (тот который в переменной), если есть совпадения, то желательно вернуть номер строчки где есть совпадение, и строку содержащюю найденый дубликат (в Array[1].. [2] и т.п). Возможно уже есть такая опция в AutoIt, но я что-то затрудняюсь найти в справке подобную функцию :( |
Creat0R
Спасибо тебе-(Send("!{F4}")) конкретно помогло. Вопрос ещё один. У меня в программе ACDSee 8 вводится ключ в поле регистрации,но на совремменых компах он успевает вводится, а на слабых компах скрипт успевает ввести только 4 первых символа (паузы почемуто непомогают). Как сделать чтобы скрипт дождался полного ввода серийника. Код:
Global $serial='12345-67890-12345-67890' |
Из
скрипта запускается консольный nerocmd.exe. Можно ли как то получить
данные, показываемые в консоли для отображения их в GUI автоита?
|
TERMINAL
Цитата:
Код:
ControlCommand("ACDSee 8 - InstallShield Wizard", "Customer Information", "Edit3", "EditPaste", $serial) Цитата:
Код:
Opt("WinTitleMatchMode", 4) VelDmi Цитата:
Код:
$NerocmdTxt = WinGetText("Заголовок консоли", "") |
Creat0R
<Нужно всё поместить в цикл, и в конце проверять существование окна...> А примерчик простенький можна? |
TERMINAL
Цитата:
Цикл: Код:
While 1 Код:
While 1 Код:
While 1 |
Creat0R
Цитата:
Код:
#include <File.au3> |
Lodoss
Цитата:
Код:
;=============================================================================== |
Я наверное плохо объяснил...
Суть проблемки с циклами вот в чём-программа имеет сетап и патч. При установки сетапа всё происходит ОК, а при установке патча (если нет видео драйверов) выдаётся ошибка и прекращается установка.Потом опять запускаешь патч до тех пор пока он не начинает сам ставится (это бывает от 1 до 2 раз). Вот я и хочу объяснить скрипту что если ничего не вылезет то можно продолжать установку (а не так как у тебя-ВЫХОД), а если вылезет окно ошибки, то нужно закрыть его и опять устанавливат этот патч пока он не установится. |
amel27
Цитата:
Просто дело в том, что задача у меня примерно такая: -Проверить файл на дубликаты определённово слова (а точнее ссылки), если есть таковы, то просто удалить все дубликаты, оставив один-“оригинал” - Как удалять я знаю, имея номера строк, я могу восспользоваться функцией _FileWriteToLine... Код:
#include <File.au3> --------------------------------- TERMINAL У тебя в примере, нет упоминания о патче, но попробую привести нужны пример на основе воображения :) : Код:
Opt("WinTitleMatchMode", 4) |
Нижеприведенная
функция убивает все возможные окна от запущенного ей процесса и если
какие-либо окна появлялись - перезапускает прогу заново (убиваются окна
также дочерних процессов, просто одноименные окна\процессы не
затрагиваются)
Код:
;~ Пример запускает+закрывает setup.exe: |
TERMINAL
Цитата:
Код:
$serial="серийник" |
Creat0R
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
Код:
#include <File.au3> |
amel27
Приогромное спасибо! Я думал что функция для моей задумки, будет выглядеть намного длинее :) В связи с тем, что эта функция относительно быстро срабатывает (я проверял на большом файле с текстом), у меня появился вопрос... У меня есть функция (от Sanja Alone), которая делает поиск по файлу, и если текст найден, то возвращается в Array[0] номер строки где был найден текст, а в Array[1] возвращается состав этой строки. Так вот, та функция, визуально большая, и большие файлы обрабатывает довольно долго (доходит до 5-ти секунд). И ещё, возвращается только первое-найденное вхождение, а хотелось бы точно также как и с твоей функцией, чтобы в массив возвращались все номера строк, и все содержания этих строк. В общем, вопрос в том, можно ли немного переделать эту функцию, чтобы вместо поиска дубляжей, искалось просто слово, и возвращались те же значения, что и в этой функции? (чтобы также можно было воспользоваться ими, ну, допустим для замены текста на что то другое - для этого у меня уже есть функция). |
Creat0R
Цитата:
Цитата:
в чем разница-то?.. возвращаются всегда все значения, просто при замене использовались не все (смотри пределы): Код:
For $i = $Array[0][0] to 2 Step -1 |
amel27
Ещё раз спасибо. В данном случае, нет необходимости в поиске текста содержащий кириллицу (разве что бывают ссылки с кириллицей :) ). |
1. Creat0R спасибо за скрипт, но он всеравно не подходит. В твоём скрипте постоянно, бесконечно стартует Setup.exe
При установке программы (например-Setup.exe) может вывалиться окно с ошибкой ERROR (ошибка вылетает в том случае если неустановлены видео драйвера), а может и не вывалиться (если же установлены видео драйвера). Так вот, хотелось бы чтобы скрипт работал как с установленными дровами так и без них. Т.е. при старте Setup.exe может установка прекратиться и вылезет окно ERROR-так можно этот файл стартовать до 3х раз-потом уже ошибка не вылетает и прога начинает устанавливаться, а может ошибка и не вылезти. ======================================================= 2. ПОМОГИТЕ НАЙТИ ОШИБКУ !!! Мне нужно убрать галочки при инсталяции (именно мышкой <ControlClick>)-написал такой скрипт, но он не убират галочки: HTML код:
WinWait("InstallShield Wizard","InstallShield Wizard Complete") |
TERMINAL
Цитата:
Цитата:
Код:
If WinExists("ERROR", "") Then ;Если окно с заголовком ERROR существует, то.... Цитата:
Код:
ControlClick("InstallShield Wizard","InstallShield Wizard Complete","Static1") |
amel27
Есть ещё небольшой вопрос, также немного затрагивающий функцию поиска дубликатов... Возможно ли сделать поиск по файлу на дубликаты, но заранее не знаяя вхождения? т.е нужно проверить все существующие строки в файле, и если хоть какая то из них имеет дубликат (именно по строке), то удалить все точно такие же строки, но оставив оригинал (для каждой такой найденной строки, произвести данную операцию - т.е удаление дубликатов найденных строк). Но, подвог (для меня) в том, что нужно удалить не именно те строки (их дубликаты), а те которые располагаются на три строчки выше. Вот пример файла: Код:
Первая строка P.S. В данном случае, скорость обработки, не очень уж важно, да и визуализация тоже :) - Главное функционал! |
Creat0R
Цитата:
Код:
#include <File.au3> |
amel27
Я извеняюсь, я не обращал внимания, но в том файле, для которго это будет делаться, есть дубли которые не должны быть тронуты. Т.е я даже заранее знаю начало строки - URL= но перед этим идёт таб (@Tab)... в общем, вот часть этого файла (это закладки от браузера Opera): Код:
#URL |
Creat0R
просто добавь еще один IF: Код:
... |
amel27
Цитата:
Цитата:
|
Creat0R
Цитата:
- читаем файл и сразу нумеруем записи по блокам (а не по строкам); - один из реквизитов (URL) оформляем как ключевой для блока; - формируем новый файл ссылок (поверх старого), но уже без дублей. З.Ы. обычно чем "правильней" алгоритм, тем он медленней |
amel27
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
применительно к твоему скрипту код можно еще укоротить: Код:
#include <File.au3> |
amel27
Цитата:
Цитата:
Дело вот в чём, браузер не всегда затирает нужные закладки, иногда, если были удалены заглавы (#URL) двух закладок (блоков) идущих подряд, то он удаляет иногда и ту закладку которая идёт выше этих двух. Может всё же как то можно чтобы уже сразу весь блок удалять? :blush2: Цитата:
|
Creat0R
Цитата:
1. перенес IF в код функции - это необязательно, но оптимизирует поиск дублей, 2. добавил удаление остальных строк блока (в обратном порядке!). Код:
#include <File.au3> Цитата:
|
1 вложений
amel27
Тоже есть трабла :( . Оказывается :) , иногда некоторых пунктов в этом блоке нету\есть, они не присутствует\присутствуют в том случае, либо, если у закладки нет\есть описании (DESCRIPTION), либо нет\есть код посещения (VISITED=), либо нет\есть код активвности (ACTIVE=). Вот как выглядит самый полный блок (т.е больше этих пунктов нет) : Код:
#URL Код:
#URL Код:
For $i=$DupLines [0][0] To 1 Step -1 Вот на всякий пожарный, прикладываю файл, содержащий дубликаты таких (разных) блоков. |
Creat0R
Цитата:
Код:
#include <File.au3> |
amel27
Удаляются не все дублирующиеся блоки :( - и как ни странно, не удалился дубль именно закладки этого поста :) (эксперементировал на прикреплённом мной раньше файле). |
Creat0R
Цитата:
Ладно, коли такое дело :) переделал функцию - теперь она возвращает начало и конец продублированных блоков (от содержания строки отказался, т.к. невостребовано). Далее - предыдущий вариант страдал нелогичностью по отношению к операциям ввода-вывода, то смотрим в массив, то в файл.... зачем тогда было его загружать?.. Поэтому все операции с файлом (в т.ч. удаление строк) переделал для массива, в заключении готовый массив выгружается поверх старого файла: Код:
#include <File.au3> |
:help: :help: :help: H E L P ! ! ! :help: :help: :help:
Написал кучу скриптов с помощью AutoIt и тут вдруг обновляется Dr.WEB и начинает запрещать работать с этим прекрасным редактором. Начал проверять свои рабочие скрипты-на половину все заражённые вирусом BackDoor.Hengto :vampire:.Скачал с оф.сайта опять эту прогу-проверил (в ней вирусы зашиты). Так почему же тогда раньше ВЕБ не кричал и почему не все тогда скрипты заражены??!! или у меня на компе просто глюк??? |
TERMINAL,
у меня Nod32 одно время обзывал скрипт для генерации Inf как
Trojan.Autoit.A - потом прошло... Хотя хз, мож ты чего-то и хватанул
|
TERMINAL
Цитата:
Цитата:
|
Да не должен подхватить-2 антивирусника стоят...
Облазил весь инет, попровирял разными антивирусниками-все отвечают что файл ОК - незаражон...,а ВЕБ орёт и блокирует. Может это у него такая реакция на скрипт??????,правда он не может сказать что файл якобы ВОЗМОЖНЫЙ ВИРУС-просто берёт и блокирует....У кого то такое было????????просто хочется быть уверенным что это из-за скрипта, а не вирус... |
Sanja Alone Я скачиваю повторно файл установки AutoIt с оф.сайта-начинаю устанавливать и ВЕБ начинает орать опять на установочные файлы.
НАРОД ПЛЗ ! Пришлите мне какой нибудь скрипт "ехе" упакованый с "au3" на trm6@mail.ru , а я его проверю.... |
amel27
Всё работает как по маслу! Огромное Мерсий! :pray: TERMINAL У меня тоже на несколько закомпилированных скриптов, Dr.Web ругается на вирус BackDoor.Hengto - Наверно это из за структуры самого скрипта. Но это не значит что там есть вирус, это значит что Dr.Web (и ему подобные) не достаточно “умный” (при всё уважении к нему :) ), чтобы определить является ли это действительно вирусром, и просто напросто перестроаховывается. У меня стоит последний Kaspersky, он молчит, также молчат проверки online, так что это глюк в этой базе данных доктора ;) (имхо). |
amel27
Есть небольшая пролблема с функцией, которую ты написал для проверки подключённости к интернету :( ... При проверке синтаксиса в SciTE, выдаётся ошибка, а именно, эта строка подчёркнута как ошибочная: Код:
SetError(err.number) |
Creat0R
опечатку исправил... только почему-то на моем компе она перестала работать - вываливает ошибку таймаута и все тут, хотя точно знаю что все работало!... уже и PROXYCFG проверил - ничего не помогает... ладно, сейчас некогда ковыряться может позже разберусь в чем причина. Цитата:
|
amel27
Если я сделаю так (см. ниже), будет ли это являться корректной проверкой подключения? Код:
;Установка функции перехвата COM-ошибок P.S: Просто интересно, как ты разукрасил код скрипта? :) неужели каждую команду (и разделители) обрамлял тегом цветов и выделения? |
Creat0R
Если речь про функцию MyErrFunc () то она построена некорректно, посуди сам что выходит: если ошибку вызвал модуль "WinHttp.WinHttpRequest" - устанавливаем только код ошибки и ничего не возвращаем, а если любой другой - только возвращаем текст ошибки... Если скрипт не отслеживает другие возможные ошибки кроме HTTP и тебе нужен не только номер, но и текст ошибки лучше сделать иначе Код:
;Установка функции перехвата COM-ошибок P.S. шалость удалась (c) :) ... конечно скриптом - больше ради прикола чем по необходимости, заодно разобрался с тегами форума и погонял функции StringRegExp*, если есть интерес то могу запостить... на самом деле все гораздо проще чем кажется. ;) |
amel27
В принципе, мне не нужен код ошибки, нужно только описание, т.е если и была ошибка (не важно какая), то нужно сообщать что она была, и по возможности выводить описание этой самой ошибки. И как я понял, используя пример из кода твоего поста (последнего), это оптимальное решение. Если честно, я смутно понимаю всю работу этой функции, для меня вообще много что связанно с интернетом, пока не очень ясно, я в сети не более полу года нахожусь, и тем более что тут не только о самих понятиях интернета идёт речь, но ещё и о модулях, о которых я только начинаю что то узнавать. Цитата:
Код:
$File = @ScriptFullPath |
1 вложений
Creat0R
По поводу раскраски кода (поскольку это решение на AutoIT то имхо не оффтоп) ... Замечу, что лобовое решение требует последовательного разбора всего текста кода по словарю, а это слишком большой объем работ... Но зачем изобретать велосипед, если SciTE4 уже делает это и весьма успешно? Одна из его возможностей - экспорт кода в HTML/XML-формат с сохранением всех стилей, осталось только определить соответствия между стилями XML и форума и произвести замену. Поэтому обработка проходит в два шага: экспорт кода в XML-файл и последующая обработка его скриптом - содержимое полученного TXT-файла (уже с тегами кода) можно публиковать в форуме. Поскольку текст скрипта напичкан всевозможными тегами вынужден прикрепить его отдельным файлом... P.S. Как видно из текста скрипта я определил еще не все стили (например пропущены 2, 10, 12, 13) и наверняка не все спецсимволы... они мне просто еще не попадались, на этот случай я оставил проверку на полноту замены... если кто обнаружит их раньше просьба сообщить в личку. линк: http://www.sendspace.com/file/wjwk9r -------- нормальные герои всегда идут в обход (c) :) |
amel27
Файл не скачивается :( - т.е скачивается, но архиватор ругается на то что архив повреждён... может зальёшь на http://www.sendspace.com/ - и\или мне на мыло? |
Отвечаю на повторяющийся по мылу вопрос. Итак, "Как же определить букву дисковода по маркерному файлу?"
|
2amel27
Цитата:
весь сыр бор был из-за GUI авторизации запуска от имени админа. повторю задачу: 1.Требуется запустить какой либо setup.exe, если пользователь не админ - нарисовать GUI с полем имени и пароля для авторизации запуска (конечно можно воспользоваться стандартным запуском нажав shift но хочется реализовать задачу при помощи AutoIt) 2.В комбо боксе приводим список учёток обладающими правами для установки т. е. админов 3.При неправильном вводе пароля - выдать сообщение об ошибке НЕ закрыв GUI повторю код Код:
#include <GUIConstants.au3> PS с оболочками только только начал разбираться, многое не понимаю. Помогите PLS |
Lodoss
Цитата:
Вот немного изменил - добавил проверку (отдельную) на проавильность ввода пароля (это при условии что пароль заранее известен): Код:
#include <GUIConstants.au3> |
amel27
Класный скрипт, как видно в посте чуть выше, я его уже приминил :) - Я тут немного повазился, и немного автоматизировал этот процесс, так что вот, залил ;) ![]() ПРИМЕЧАНИЕ: После завершения обработки, в первую и вторую строку самого скрипта, прописываются пути к файлу обработки (*.xml) и к выходному файлу (*.txt), и при повторном запуске скрипта, эти значения будут подставляться в соответствующие поля, так что эти строки лучше не трогать (для удобства). Можно было бы ещё лучше автоматизировать этот процесс, если бы можно было автоматичкский экспортировать указанный скрипт в *.xml формат - может можно как то задать параметры для SciTE, чтобы там в тихом режиме указанный файл экспортировался в нужный формат? Тогда можно было бы сразу указывать скрипт (*.au3), и всё бы происходило автоматом - минимальное вмешательство юзера ;) |
Цитата:
Это я тут в комбо списке написал "Администратор,admin.....так не должно быть. решение КАК выдать список учёток обладающими правами админа есть от amel27 (осталось только разобраться как это привинтить к комбо списку пользователей %) ) а пароль должен ввести только админ. Цитата:
1.заходим под обычным пользователем в систему если вводим правильные данные (админа)- запускается сценарий run("setup.exe").... 2.если вводим неправильный пароль то выдаётся сообщение "ошибка" и предлагается ввести пароль заново в существующем сценарии ошибка выдаётся даже если правильно ввёл пароль и файл setup.exe существует либо вообще ничего не происходит по нажатии кнопки ОК |
Lodoss
Вот рабочий (у меня) вариант (в нём уже включено помещение списка юзеров в combo) : Код:
#include <Array.au3> |
Цитата:
_NetLocalGroupGetMembers ("Администраторы", "", 0, 1) ...справедливости ради приведу еще один вариант функции через COM (взял с форума AutoIT): Код:
Func _NetLocalGroup ($HOST, $LocalGroup) |
Не
пойму в чём проблема.... хочу осуществить замену текста в определённом
каталоге у определённой группы файлов (по маске), но почему то функция
которую я написал, не хочет этого делать :)
Код:
#include <File.au3> Всё, нашёл свою ошибку :) - См. подчёркнуты текст в коде - Там было $NewText. |
Sanja Alone, а можешь обновить свой скрипт для CuteFTP 8.0.3 с новым патчем (165 кб который)! Очень надо )))
|
Craager
Цитата:
|
в
AutoIt как лучше захватить системную дату? Есть ли вообще такая
возможность (не прибегая к хитростным изворотам и изворотливым
ухищрениям?)
в идеале интересует дата в опр. формате (напр. YYYYMMDD или MMDDYY), для дальнейшего использования в качестве переменной. |
Нужна помощь.
Вот скрипт.Автор его Creat0R за что ему ОГРОМНАЯ БЛАГОДАРНОСТЬ. Нужно чтобы при отметке установки нескольких программ они запускались поочерёдно. Как это сделать? Код:
#NoTrayIcon |
Yozhegg
Цитата:
Код:
@SEC - Значение секунд на часах. От 00 до 59 Код:
MsgBox (0,"Текущая дата",@YEAR & @MON & @MDAY) |
To Sanja Alone:
Благодарю за ответ. Спустя 24 часа оценил некоторую поспешность
вопроса. Покопавшись в хелпе нашёл эти макросы, но меня смущало
отсутствие
возможности форматирования.. мне нужно было (ГГММДД)... Код:
Global $y = @YEAR |
А как в AutoIt снять показание с RadioButton(OptionButton)?
Ischecked -это параметр, или макрос, которым можно проверить отмечена радиокнопка 1 или радиокнопка 2? |
Yozhegg
Цитата:
Цитата:
Код:
If BitAnd(GUICtrlRead($Radio_1),$GUI_CHECKED) Then Цитата:
|
Michail77
Цитата:
И ещё, если установка того или иного приложения, “запускает” внешние модули\приложения, то нужно определить какие именно, т.е какие процессы, или окна появляются, и в соответствии с этим делать проверку на окончание процесса установки. Если же всё обходится (заканчивается) одним процессом (не запуская внешние\дополнительные процессы\окна), то досаточно того метода который я упомянул чуть выше. ---------------------- 2 ALL Есть такая проблема - Я хочу сделать проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя. Известно что есть функция _IsPressed - Но она проверяет каждый раз ввод\нажатие одной клавиши\кнопки, а мне нужно чтобы проверялось любое вхождение при одной (или даже нескольких) проверке... я сделал это для нескольких вхождении, но предусмотреть все, мне не удалось... Код:
For $i = 01 to 91 ---------------------- P.S Переделал полностью (кроме самой главной функции от amel27) скрипт для перекодировки скриптов в целях помещения их в форуме (в разукрашенном виде :) )... получилось полностью автоматизировать весь процессс - теперь не нужно самому экспортировать скрипт au3 в xml формат, это сделает автоматический сам скрипт, нужно всего лишь указать файл скрипта (*.au3), и в процессе (до процесса) обработки, он будет экспортирован в xml формат - Для этого редактор SciTE должен быть в дефолтной папке AutoIt'а, т.е путь берётся относительно @AutoItExe: Код:
$SciTEPath = StringTrimRight(FileGetShortName(@AutoItExe), StringLen(StringRegExpReplace(@AutoItExe, "^.*\\", ""))) & "SciTE\SciTE.exe" И ещё, теперь данные для последнего используемого скрипта (и файла в который будет помещён результат), вписываются в конец самого скрипта, и считываются как с файла конфигурации (*.ini), мне кажется так надёжнее. Так что компилировать скрипт нет смысла, а если есть желание, то лучше исключить из скрипта эту функцию. Скачать архив со скриптом можно тут |
2 Creat0R
БИГ СЕНКС. И ещё вопросик.как запустить на установку файл *msi. речь идёт про касперского антивирус 6.0.300 с 5х проблем не было. run-ом всё нормально ставилось а тут.... |
|
2 Creat0R
Спасибо. Приведи пожалуйста пример с “запускает” внешние модули\приложения... 2 Sanja Alone Спасибо,помогло. |
Michail77
Цитата:
Код:
RunWait("Setup.exe", "", @SW_HIDE) ;Запуск главного установщика |
Michail77
Creat0R Цитата:
|
Вопрос.Можно ли сделать так чтобы в Msgbox была фоновая картинка,т.е есть примитивный код:
Msgbox (0, ".........................." &@CRLF& "............................." и т.д Нужно чтобы была фоновая картинка а поверх неё писался бы текст как в обычом Msgbox-е Как это сделать? И ещё такой вопрос.Как запустить *.bat? Сделал компактный Office 2003. занимает 105мб места. Если пишу так Run(RunWait) ("office/setup.bat") то появляется и сразу исчезает окно Dos-эмулятора. Как сделать правильно чтобы всё работало? Заранее спасибо. |
Michail77
Цитата:
Цитата:
Цитата:
Я обычно запускаю батник (хотя стараюсь выполнять его функции в самом скрипте) таким образом: Код:
RunWait(@ScriptDir & "\Batnik.bat", "", @SW_HIDE) Код:
Run(@ComSpec & " /c start .....", "", @SW_HIDE) По поводу MsgBox'ов (и не только), у меня тоже есть один вопрос... -Возможно ли привязать MsgBox, или любое из окон вызываемое для выбора/сохранения файла/папки (FileSelectFolder к примеру), к окну гуи? т.е чтобы при вызове одного их этих окон, оно было уже как бы дочерним окном гуи, и чтобы не было доступа к родительскому окну (гуи) до тех пор пока не закроется это-дочернее окно. Знаю что для обычных, гуивских дочерних окон, можно прописать как последний параметр переменную определяющую относительность к родительскому гуи, и также нужно неитрализовать родительский гуи макросом @SW_DISABLE, но как такое же сделать с окнами вызыванными по FileSelectFolder, FileOpenDialog, FileSaveDialog или даже тот же MsgBox? для этих окон вроде нет такого параметра, который определял бы их относительность к гуи. |
Всем добрый день!
Господа, вопрос, возможно, глупый, но может ли скрипт написаный с помощью AutoIt работать на компьютере к которому не подключен монитор? |
Dentel
Будет. |
qeraser
Не работает. У меня есть сервер, к которому не подключен монитор. На сервере установлена WinXP. Захожу на этот сервер с помощью "Подключение к удаленному рабочему столу" через локальную сеть. На сервере вылажен скрипт. Если "подключение" активно, то скрипт работает и делает то, что надо. Если "подключение" закрыто, скрипт глохнет в самом начале, а именно: началом работы скрипта является запуск программы (вылезает окно авторизации), далее с помощью WinWaitActive определяем, что это окно активно и дальше понеслась (ввод пароля, логина ну т.д. и т.п.). В случае если "подключение" не активно, то скрипт "не видит" это окно авторизации и оно просто висит и ничего не происходит. |
Creat0R
А чем не устраивает простое отключение/включение родительского окна? Код:
#include <GUIConstants.au3> |
amel27
Цитата:
В идеале, хочется чтобы можно было вызвать окно сохранения (к примеру), и нажимая на окно гуи, чтобы вызванное окно мигало, точно также как это происходит если вызвать дочернее окно гуи... вот пример: Код:
#include <GUIConstants.au3> P.S Вместо WinSetState лучше GuiSetState, и порядок таких объявлении очень важен... если именно для дочернего гуи, то так как я привёл в посте (@SW_HIDE в конце), это идеальный способ (таким образом не мигает окно родительского гуи в момент его активации). И ещё, вместо WinActivate("Title") лучше WinSetState("Title", "", @SW_RESTORE), это если для гуи, оно быстрее срабатывает. P.S.S. А ты не знаешь случам как решить задачку про проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя? (Которую я тоже привёл в посте со скриптом для разукрашивания). |
Dentel
Цитата:
|
Creat0R
Цитата:
Код:
#include <GUIConstants.au3> |
Creat0R
Цитата:
- нет надежных средств для снятия состояния клавиатуры, пользовательские программы работают с виртуальной, а не реальной клавиатурой; - существуют API-функции, позволяющие снимать состояние всех клавиш виртуальной клавиатуры за один вызов, т.е. возможно отслеживать все действия пользователя, но пока активно окно приложения. |
Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь.
Вот что нужно сделать последовательно: 1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1 2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1 3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, ..., text_n) 4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5 5) сохраняем все изменения и выводим отчёт о проделанной работе :-) Заранее благодарен. |
biork
п.п.1-4, точно в соответствии с формулировкой (см. примечания): Код:
#include <File.au3> - INF-файл не просто текст, поэтому корректней говорить о переопределении параметров секции, а не "замене текста"; - соответственно, по п.4 возможно имелась ввиду замена строк целиком, а не вхождений текста; - секции могут не отличаться от INI-файлов, в этом случае можно задействовать встроенные ф-ции AutoIT INI*. |
2Creat0R
Не совсем так,точнее совсем не так :) Дать ссылку на картинку(системную,т.е на ту которая находится в системе по умолчанию,например в папке system32) это легко. Мне надо чтобы картинка интегрировалась внутрь скрипта,с расположением которое ей указано и всегда была там,независимо от того есть такая картинка в системе или нет. |
1 вложений
amel27
Большое спасибо. Ошибочка выпадает (см. файл) ... и что такое? Код:
#include <File.au3> |
biork
Цитата:
|
amel27
С пользовательскими функциями разобрался. Пришлось, всего-лишь, переустановить AutoIt... Что касаеися самого скрипта: 1) Удаление файлов в заданном каталоге по маске - работает! 1.2) Возвращает количество удаленных файлов - где и как посмотреть? 2) Удаление строк файла по условию вхождения заданного текста - работает! 2.1) Возвращает: 1 - успех, 0 - ошибка. Коды ошибок - так же не знаю где их увидеть. 3) Добавление заданного массива строк в секцию INF-файла - не работает... 3.1) Возвращает: 1 - успех, 0 - ошибка. Коды ошибок - очень хотелось бы их посмотреть... 4) Замена текста в пределах заданной секции INF-файла - не работает... 4.1) В чём ошибка - так же не видно... Я понимаю, что всё от криворукости... но всё же? :-) Ещё вопрос: строки text_2, text_3, text_n, а так же text_4 и text_5 содержат всякие знаки припинания (запятаи, кавычки, скобки и пр.). Может, нужно принимать какие то дополнительные меры, что бы всё это правильно было интерпритировано? в 4 пункте, действительно можно бы было не менять текст, а изменить значение параметра. |
А нет ли для AutoIt какой-нибудь рисовалки форм?
А то очень долго координаты с "дизайн-макета" списывать.. |
biork
Цитата:
Код:
; ... Цитата:
|
amel27
Код:
1 - переданный параметр не является массивом; |
biork
Извиняюсь, очепятку исправил... |
amel27
Цитата:
В связи с этим есть вопрос: Что в функции нужно поменять, чтобы вместо открытия фалов, был выбор каталога (FileSelectFolder), и также хотелось бы чтобы была функция сохранения файлов (FileSaveDialog) - Буду очень благодарен если поможешь с этими функциями... И ещё (не принципиально) - при выборе файлов, возможно сделать массовый выбор? т.е чтобы можно было выбирать несколько файлов. -------------------------------- По поводу самого гуи, я немогу понять одной вещи - чтобы создать гуи, необходимо построить цикл, но на сколько известно, безпрерывный цикл “заставляет” сильно загружать ЦП... т.е если мы сделаем такой цикл: Код:
While 1 Просто дело в том, что хотел сворачивать скрипт в трей, затем в трее вывести меню, но если ставлю задержку в цикле скрипта (для трея), то пункты в трее не срабатывают, а если не ставить задержку, то процессор сильно грузится (бывает до 80-90%) - Как это решить? |
Michail77
Цитата:
Для установки файла исользуй такую команду: Код:
FileInstall("Полный\путь\к\изображению\для\установки\image.png", "Путь\куда\будет расспаковано\изображение\image.png", 1) Код:
GUICtrlCreatePic("Путь\куда\будет расспаковано\изображение\image.png",0,0, 300,40) |
Creat0R
Цитата:
Насчет: While 1 Sleep(100) Wend (применительно к другому случаю) сам бы хотел знать, какую оптимальную задержку выставлять. Yozhegg Цитата:
|
2 Creat0R
Спасибо,всё получилось :))) |
All
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki. |
Sanja Alone
Слушай помнишь ты давал мне вот такой скрипт, я тут не нашел куда вставить имя rar архива и что будет если убрать из скрипта строчку ProcessWaitClose('INSTALL.exe') она мне не нужна. Код:
If $CmdLine[0]=1 Then |
Vadikan
Цитата:
Далее - где-то надо обсудить какие сабжи и в какой форме нужно выносить на WIKI, все-таки выдернуть скрипт из контекста обсуждения не так просто - придется приводить его к более универсальному виду, добавить комментарии, поработать с именами переменных. З.Ы. Либо я еще не понял WIKI либо одно из двух, но без древовидной структуры от категорий мало толку. |
amel27
Я извиняюсь, уже, наверное жутко надоел, но... ...скрипт ни как не может найти секцию... может с синтаксисом чего? Код:
$ret = _InfSectionAddLines ($DIR1 & '\' & 'HIVESYS.INF', 'AddReg', $Lines) Код:
$ret = _InfSectionReplaceText ($DIR1 & '\' & 'HIVESFT.INF', 'Strings', $text_4, $text_5) |
Creat0R
Цитата:
Цитата:
biork файл и путь в личку |
amel27
Можешь доделать вот такой скрипт, я тут не нашел куда вставить имя rar архива и что будет если убрать из скрипта строчку ProcessWaitClose('INSTALL.exe') она мне не нужна. Код:
If $CmdLine[0]=1 Then |
VelDmi
Цитата:
|
1.Как сделать чтобы после 1 января нельзя было запускать, допустим, некий файл Test.exe?
2.Как следать чтобы выезжал диск из CD-Roma? |
VelDmi
Цитата:
Цитата:
Цитата:
amel27 Цитата:
Ещё раз Спасибо, очень выручил :) TERMINAL Цитата:
Код:
$Proga = "test.exe" Но можно например в этот день, создать файл, и упрятать его куда нибудь подальше, а ещё лучше, запись в реестре, и тогда можно будет проверять уже не дату, а существование файла\записи в реестре... примерно так: Код:
$Proga = "test.exe" prokazzza Цитата:
Цитата:
|
Yozhegg
Цитата:
prokazzza Цитата:
TERMINAL1. 1 января какого года? При условии, что Test.exe это AU3-скрипт: Код:
#Include <Date.au3> |
Yozhegg
Цитата:
|
VelDmi
Цитата:
prokazzza Цитата:
|
Всем здравствуйте!
amel27 Спасибо за помощь, только теперь, соотвественно, вопрос, а как удаленно разблокировать рабочий стол? (Это к вопросу о работе скрипта, если к ПК не подключен монитор) |
Вопрос для настоящих знатаков:
создаю AutoIT скрипт, который автоматически создает VPN подключение (эта часть поддалась без проблем) и потом его настраивает(прописывает IP,DNS и прочие настройки в свойства адаптера). Вопрос: Как открыть свойства конкретного сетевого подключения(в моем случае это VPN) и как связать это с autoIT. заранее всем спасибо. |
desperate
У меня сделано через netsh interface, если нужно подробнее попозже напишу. |
VelDmi
буду очень благодарен и думаю другим это тоже будет интересно. |
Да
забыл указать самое главное, мне надо не только вкладку Сеть ->
свойства TCP/IP настроить, но и другие параметры, шифрование, WINS и
проче.... вообщем пройтись по всем вклдкам свойств определенного
адаптера (т.к. VPN создается для работы с провайдером спутникового
интернета)
|
Creat0R
Цитата:
- новый флаг: 32 = Hide places bar (не отображать панель с иконками); - новый параметр: Default Extension (если пользователь не вбил расширение, то автоматом добавляет указанный); - новый параметр: HWND головного окна GUI (из-за чего собственно весь сыр-бор). Код:
Func _FileOpenDialog ($sTitle, $sInitDir, $sFilter = 'All (*.*)', $iOpt = 0, $sDefaultFile = "", $sDefaultExt = "", $mainGUI = 0) |
Код:
$ip = '192.168.100.' & $ComputerNumber |
Первый запуск netsh.exe нужен для того, чтобы выяснить имя сетевого интерфейса, т.к. оно может изменяться.
Второй запуск уже устанавливает для подключения необходимый мне ИП, gateway и проч. |
VelDmi
хороший скрипт, спасибо, но как настроить остальные параметры шифрования,Wins и прочих на других вкладках окна свойств??? |
biork
Цитата:
Код:
Func _FileReadUnicodeToArray ($sFilePath, ByRef $aArray) |
desperate
Цитата:
Код:
Чтобы получить справку по команде, введите эту команду, |
VelDmi
без вариантов, не получилось с помощью netsh настроить все параметры. Поэтому мой вопрос по поводу автоматического открытия Properties определенного сетевого подключения остается открытым. |
desperate
Цитата:
|
Снимаю
свой вопрос, проблема решиласт сама собой, когда набрел на форуме а
статью про автоматическое создание dial-up соединения.
у кого будет подобная проблема пишити в личку и тогда создам отдельный топик, в котором будем развиваться и совершенствоваться. |
desperate
Цитата:
|
amel27
Огромное спасибище! Всё работает! |
Извините пожалуйста, а существует ли такая команда с помощью которой можно было бы закрыть определенное окно!
Например я сделал так что при открытии моего диска(autorun)он сначало записывает мой шрифт в директорию %windir%\Fonts и Я сделал так поместил explorer.exe в директорию диска и написал в cmd файле %CDROM%\Autoplay\explorer.exe %windir%\Fonts Это мне нужно чтобы он открывался А как сделать так чтобы она вслед за этим закрывалась автоматически Пожалуйста напишите мне |
А можно ли средствами AutoIT (навеоняка можно, только придумать не
могу как) удалить файл с фиксированным именем во всех неопределенных деррикториях - имена, количество, уровни которых заранее неизвестны? Допустим имеем файл который надо удалить - 1.txt Имеем каталог в котором его надо удалять - 2 И вот в этом то каталоге может быть любое количество каталогов, подкаталогов, подподкаталогов - какие - не понятно, имена их - не известно, количество - то же, уровней вложения - тем более. Мозг опухают - в хелпе пока ничего не смог отыскать. |
amel27
Цитата:
Есть вопрос - а можно чтобы вместо (как опция) прикрепления гуи, можно было также прикреплять любое другое окно (по его заголовку)? P.S При разукрашивании скрипта, если поставить Send("{...}") то скрипт ругается на неопознанные стили, а точнее, это если только есть кривые круглые ораньжевые скобки :) Heaven Цитата:
Цитата:
DenchikK Цитата:
Код:
|
Creat0R
Извините пожалуйста за глупый вопрос - скопировал скрипт в файл au3, переписал в тот каталог откуда запускаю - 2 файла include. Запускаю - а мне выдается ошибка - Error: Unknown function name. на строчке Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) |
DenchikK
проверь наличие в заголовке скрипта строчек: Код:
#include <File.au3> Цитата:
Цитата:
|
amel27
Есть эти строчки - один в один все как указано у Creat0R |
DenchikK
Цитата:
|
Цитата:
Цитата:
Добавлено: Нашел в скрипте Sanja Alone функцию _FileListToArray и поместил её в файл \Include\Array.au3 (ибо этой функции ни в одно файле каталога \Include не было), вот код: Код:
Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0) Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) Local $i, $j, $rlist[1] ERROR Error: No virriable given for "Dim", "Local", "Global" or "Const" statement. |
Всем привет!
Поможите, кто может. Задача простая. Необходимо периодически на удаленном компьютере (под Unix) выполнять ряд команд с дальнейшей обработкой выводимой в консоль информации. Хочу использовать для этого строку $t=Run("telnet","",@SW_HIDE,3) и далее при помощи StdinWrite, StdoutRead работать с открытой консолью. Но почему-то процесс telnet.exe закрывается сразу же после запуска. Где ошибка? |
amel27
Цитата:
Цитата:
mpn Цитата:
Попробуй перед запускам сменить рабочий каталог FileChangeDir("путь\к telnet.exe\"), или указать путь в самой сроке запуска... Код:
$t=Run("telnet.exe","путь\к telnet.exe\",@SW_HIDE,3) Код:
$t=Run("путь\к telnet.exe\telnet.exe","",@SW_HIDE,3) Пиши скрипт так, и ненужно никаких Include ;) : Код:
$Path = @ScriptDir & "\2" |
amel27
Цитата:
Цитата:
Цитата:
:( |
Creat0R
Уже перепробовал все варианты. При этом, если если вместо telnet поставить, например, cmd - все работает. |
Creat0R
Спасибо большое, но всё равно ошибка выдается: Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) Local $i, $j, $rlist[1] ERROR Error: No virriable given for "Dim", "Local", "Global" or "Const" statement. |
mpn
Цитата:
Код:
FileChangeDir("Путь к проге") Цитата:
|
Creat0R
Цитата:
Цитата:
Всё, спасибо! Заработало! Зашел на сайт - а там версия новее. Скачал - всё замечательно! Ещё раз спасибо! |
Creat0R
Пробовал и с командной строкой. При этом первым запускается процесс cmd.exe, именно он становится доступным для ввода/вывода (последний параметр в команде run =3). Запускающийся следом telnet.exe не принимает команды, отправленные при помощи StdinWrite, даже при правильно указанном PID. Поясню еще. Программу необходимо запускать в т.ч. и ночью на заблокированном компьютере. Поэтому использование send, отправляющей символы в активное DOS-окно, отпадает. Различные Control.. не работают с такими окнами. Пробовал вместо telnet запускать hyperterm.exe, но при его закрытии (на заблокированном ПК) Windows ругается: "...неизвестная ошибка...", и больше его запускать не хочет. Использование экзотических терминальных программ ограничивает мобильность скрипта. Выход где-то должен быть! |
Creat0R
А можно Вас ещё побеспокоить? Никак не могу изменить скрипт так, чтоб удалялись несколько файлов, и с нескольких путей. Приходится для каждого файла и каждого пути писать отдельный скрипт, при компиляции каждый скрипт начинает весить 180 kb, и несколько - уже весят за 2 мегабайта! Заранее спасибо! |
mpn
А утилиту telnet пробовал ставить в тот же каталог вместе со скриптом? (или наоборот, скрипт в ту папку в которой telnet) - может что-то блокирует запуск программы? файрвол? какие то другие ограничители доступа в сеть? DenchikK Цитата:
Код:
$Path = @ScriptDir & "\имя другого каталога" Код:
Func _DeleteFileInFolders($FileName, $Path) Код:
_DeleteFileInFolders("File1.txt", "C:\Dir1") P.S Функцию поместить в конец скрипта (после трёх существующих функции - _FileListToArray, _ArrayAdd и _DirListToArray). |
Переделал немного функцию для удаления файлов из подкаталогов, чтобы она ещё возвращала значения...
если все файлы были найдены, то возвращается сообщение о том что всё прошло успешно, если какого-то файла не удалось удалить, то возвращается список тех файлов которых не удалось удалить :) - если каталоги небыли найдены, или сам путь не сущестсвует, то также возвращается сообщение об ошибке. P.S. Хотелось бы узнать, как можно построить функцию так, чтобы возвращалось значение в массиве (через _ArrayAdd полагаю), я пробовал сделать, но у меня почему то возвращается только первое значение (из $Results[1]) - если кто-то может показать как правильно строить массив на примере с этой функцией (для удаления), то буду очень признателен. Код:
$Results = _DeleteFileInFolders($FileName, $Path) |
Доброго времени суток!
Интересует следующее - можно ли при помощи AutoIt скрипта сделать следуюющее. Пользователь входит в систему, появляэтся переменная окружения %USERNAME%=zzz_aaa, где zzz - группа пользователя, aaa - инициалы пользователя. Нужно получить только группу пользователя, и ввести в систему новую переменную set USERGROUP=zzz. Вопрос каким образом можно взять из имени пользоваетля только группу. Спасибо. З.Ы. Имя пользователя находится в актив директори. |
Sla8ak
Цитата:
Код:
$SplitUserName = StringSplit(@UserName, "_") |
С помощью какой команды можно переименовывать файлы!!? Например wgatray.exe в wgatray.exe.old.
|
sattva
Цитата:
Код:
FileMove("wgatray.exe", "wgatray.exe.old") ----------------------------------------- У меня есть такой вопрос: -Возможно ли в GUI, построить реальную ссылку, на которую можно было бы нажать, и она открывалась в браузере (желательно чтобы был выбор с каким браузером запускать)? |
Доброго времени суток.
Интересует следуюющий вопрос: каким образом при помощи AutoIt-скрипта можно перенаправить (переназначить) папку "Мои документы" в другое место, например на сетевой ресурс. Заранее спасибо. |
Vadikan
Как конвертировать в код AutoIt v3 вот такой CMD скрипт? Будь добр, приведи код готового скрипта. Код:
FOR %%I IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%I:\PROG.EXE SET path=%%I:\;%path% |
Sla8ak
Цитата:
Код:
$NewMyDocsPath = "C:\MyDocs" Цитата:
Код:
$AllDrivesVar = DriveGetDrive("all") |
есть скрипт autoit_KIS.exe .для запуска нужен еще и AutoIt3.exe ? или скрипт сам по себе?
|
bes1de
Цитата:
|
Creat0R
Спасибо, буду пробовать. |
Creat0R
Код:
$AllDrivesVar = DriveGetDrive("all") Подскажи как точно нужно написать скрипт. Я то в этих скриптах ни бум-бум. |
Djons
Цитата:
Код:
$AllDrivesVar = DriveGetDrive("all") Последняя строка предназначена для обновления переменных сред. |
помогите, пожалуйста такая проблема автоит версия 3,2
пытаюсь эмулировать клики мыши по касперскому 5 Код:
WinWaitActive("Антивирус Касперского Personal", "Настройка") |
S377
Используй AutoIt Window Information Tool (Aut3info.exe) чтобы определить заголовок окна, его текст, и класс кнопки ( ClassNameNN: ) на которую нужно нажать. Также учти, заголовок окна (и, наверное текст), чувствителен к регистру, попробуй ставить в начале скрипта Opt("WinTitleMatchMode", 4) . |
использую AutoIt Window Information Tool (Aut3info.exe)
но она чтото часто гонит может изза того что в виртуальном компе отлаживаю скрипты видимо в виртуальном компе и добром ControlClick не работает? что скажете по этому? и еще можно сделать клик мыши (координаты мыши ОТНОСИТЕЛЬНО ОКНА) ? |
S377
Цитата:
А в начало скрипта такую строку нужно ставить: Код:
Opt("MouseCoordMode", 0) ;или вместо 0 -> 2 - тога будет относительно клиентским участкам окна |
Благодарствую за совет!
не знал про: Opt("MouseCoordMode", 0) ;или вместо 0 -> 2 это очень удобно |
Хотел спросить, можно ли такое осуществить на примере установки
соединения и настройки модема. А именно - список установленных модемов как я поонимаю, сортируется по алфавиту. Предугадать заранее, на каком месте он окажется, разумеется не возможно. Можно всё таки как то установить курсор на нужный мне модем (тот, который заранее знаешь как называется)? Список модемов в "Телефонах и Модемах" определяется как SysListView322, при установке соединения - SysListView321 |
Creat0R
Вот так работает: Код:
For $i = 1 to $AllDrivesVar[0] |
1.У меня вопрос такой...
Можно ли в скрипте написать такую прогу которая будет определять дату записи диска (например, дата записи диска 30.12.2006 программой НЕРО) и если дата не соответствует то выполняется например перезагрузка машины а если дата соответствует, то выполняется к примеру старт файла SETUP.exe? |
Кто нибудь сталкивался с _GuiCtrlStatusBarGetText? оно не работает в GUI :(
Берём тот же пример из справки: Код:
opt("MustDeclareVars", 1) Как получить текст из статус-бара? |
Поздравляю Всех С Наступающим Новым Годом!
Я тут написал небольшую функцию, возможно кому ни-будь она пригодится... Код:
; Преобразовывает десятичное число в другие системы счисления |
Обратное преобразование в десятичное число.
Код:
; Преобразовывает числа из различных систем счисления в привычные нам десятичные |
Всех с новым годом!
Вопрос опять по гуи (непомню задавал ли уже, по поиску вроде не нашел)... Возможно ли внедрить ссылку в гуи? т.е чтобы был подчёркнуты текст как ссылка, и при нажатии выполнялось какое то действие (запуск браузера с ссылкой - но это я знаю как сделать). |
Creat0R
Можно внедрить целую HTML страницу: Код:
#include <GUIConstants.au3> Код:
#include <GUIConstants.au3> |
Diamond_m
Цитата:
|
Вопрос знатокам AutoIt:
как при помощи этой программы изменить права доступа NTFS к отдельному файлу (в WinXP естесственно)? |
biggreeder
Цитата:
|
Sanja Alone
А можно "по-пензенски"? Как конкретно команду прописать, чтобы запретить запись "C:\Путь_к_файлу\Имя_файла" для групп SYSTEM и администраторы? |
biggreeder
Цитата:
Код:
cacls "C:\Путь_к_файлу\Имя_файла" /E /G SYSTEM:R Администраторы:R Код:
RunWait(@comspec & ' /c cacls "C:\Путь_к_файлу\Имя_файла" /E /G SYSTEM:R Администраторы:R','',@SW_HIDE) |
Sanja Alone
Спасибо, думал я не так что-то делаю. Но именно такие команды на срабатывают. В смысле права доступа остаются прежними. И разные варианты команд пробовал и разные файлы. Ничего не помогает... :( |
Как
можно деактивировать гуи (GuiSetState(@SW_DISABLE)), но чтобы можно
было перетаскивать окно (через заголовок)? или хотябы как
деактивировать элементы гуи (кнопки, поля ввода и т.д.), но чтобы они
не затемнялись, а в обычном их виде были недоступны для использования?
|
Creat0R
Цитата:
Ведь если запретить обработку событий ВСЕХ кнопок и элементов то это и будет по сути заблокированное GUI. В функции которая обрабатывает событие кнопки надо поставить условие: Код:
Dim $zapret=False |
Diamond_m
Цитата:
И даже если и подойдёт такой ввариант, у меня слишком много чекбоксов в гуи (более 30-ти), и ставить их всех на условия не очень практичное решение... хотелось бы просто заблокировать элемент (чекбокс к примеру), и чтобы небыло возможности зажать галку, но и вид чтобы оригинальный оставался. Я думал что может есть какой то стиль который это делает, но в справке уже замучался искать :( Спасибо за попытку помочь... но мне кажется моей задумке (как и многим другим моим задумкам :) ), в AutoIt'е просто нет решения :( |
Creat0R
Цитата:
Код:
#include <GUIConstants.au3> |
Diamond_m
Цитата:
Может можно как то блокировать доступ клавиатуры именно в гуи (BlockInput() не предлагать :) )? |
Creat0R
Сначала я решил что дело только в стиле кнопки $BS_DEFPUSHBUTTON, который я вставил умышленно для удобства тестирования. К сожалению о пробеле и TAB я не подумал. :sorry: А что если в функцию CoverGui() после условия Else добавить строчку: ControlFocus("TestCover","",$cover) а в шапке добавить: HotKeySet("{TAB}","nul") где nul() это пустая функция которая ничего ни делает (её так-же придётся дописать). Это сработает! Минус только в том что мы получаем неработающую клавишу {TAB} в системе. Ну и конечно убрать стиль: $BS_DEFPUSHBUTTON с кнопки, чтобы ее нельзя было нажать с помощью ENTER. |
Creat0R
Ещё проще... Ничего в шапке писать не надо, потребуется только изменить функцию. Это хотя бы позволит отключить {TAB} только на момент блокировки GUI. Код:
Func CoverGui() |
Diamond_m
Цитата:
Ладно, ничего не поделать, придётся деактивировать "некрасиво" ;) ($GUI_DISABLE - или 128). Есть у меня друга задумка, но она тоже не работает :( - нужно поставить прогресс бар, и потом отменить его... вот гуи, и не пойму почему не работает такая конструкция: Код:
Opt("GuiOnEventMode", 1) |
есть ли у кого нибудь красивое решение установки alcohol120 а потом сразу lingvo11?
так как пока что у меня все это выглядит достаточно сложно и некрасиво... :( запускаю autoit скрипты из wpi 5.6, который в свое очередь стартует из RunOnceEx.cmd который стартует с CD... надеюсь про запуск строчка будет понятна :) вот как сейчас это работает у меня: скрипт alcohol120 отрабатывает, а потом команда %reboot%, wpi перезагружает комп, я наивный думал что потом продолжится установка alcohol120, и только затем стартанет lingvo11, но нет, wpi запускается раньше и не дает закончить установку.... конечно можно сделать в 3 строки, что-то типа: alcoho120.exe (без добавления в автозагрузку скрипта после перезагрузки) %reboot% alchol120.exe (скрипт закончит установку) и потом начнется установка lingvo11, скрипт lingvo11 первым делом запустит установленный alcohol и даст ему секунд 5-10 для создания виртуального CD, после чего alcohol будет закрыт, а установка lingvo11 продолжена... но мне кажется есть решение проще и красивее, нет ни у кого идей? |
Creat0R
Ты наверное заметил что во время работы цикла также недоступна обработка системного события (т.е. Выход из GUI). Я думаю, единственный путь привязать функцию к основному циклу. Может кто-то считает по другому? :) Код:
Opt("GuiOnEventMode", 1) |
Diamond_m
Цитата:
НО!, ах это "но"... Проблема в том, что основной цикл не удобно использовать, у меня на кнопку старта, повешаны многие операции (функции, и статус бар ещё). Т.е запускается скрипт, нажимаем кнопку Старт, пускается по событию функция кнопки, в этой функции существует цикл, т.е в самом конце цикла происходит выход с него ExitLoop (обязательно), и мне нужно сделать так, чтобы в процессе выполнения всего этого цикла (показа статус бара, прогресс бара, выполнения разных функции и т.п), можно было нажать на кнопку "Аборт", и тогда должен происходить выход из цикла (не закрывая программу) - а точнее, должно выводиться сообщение с вопросом, мол хочет ли юзерь прервать операцию, и если ответить положительно, то выходим из цикла, если отрецательно, ничего не делаем, продолжаем с того же места на котором была нажата кнопка "Аборт" (тот же "Старт" переименованный)... Нужно каким то образом, заставить вызвать событие (функцию) из самого цикла, преостановив этот самый цикл... В приведённом тобой примере, функция которая вызывается по нажатию кнопки, как бы вызывается без прерывно, т.e постоянно начинается с начала, а мне нужно чтобы начало функции не происходило, при нажатии на "Аборт" просто приостанавливалось её (функции) выполнение. Кстати, вот если не убирать иконку в трее, и оставить её функциональность по умолчанию, то при нажатии на неё появяется меню, там можно выбрать пункт Script Paused, и скрипт полностью преостанавливается - вот может можно как то точно также имитировать подобную паузу (вызвать функцию во время паузы)? P.S Надеюсь не запутался в объяснениях, просто уже голова пухнет от того что не могу никак сообразить, как решить эту, кажется простую задачку. :wacko: |
ВО!
такой вариант работает по нажатию на горячую клавишу (Ctrl S), почему
же событие не срабатывает при нажатии на кнопку? :idontnow:
Код:
Opt("GuiOnEventMode", 1) |
Creat0R
Цитата:
|
Всем привет! Помогите новичку.
Вообщем возникла такая проблема. Мне нужно заменить один текст внутри exe файла, на свой. Ну например, текст: This program cannot be run in DOS mode Заменить на текст: <----------------AutoIT RuleZ----------------> Я пытался использовать вот эту функцию: Код:
Func ReplaceText($FileNameT, $OldText, $NewText) Я также пытался, передавать ему не простые строки текста, но и в HEX, Binary формате (BinaryString), всё равно не может ничё сделать. На офф, форумах AutoIT нашёл функции BinaryWrite/BinaryRead, но так и не смог в них разобратся. Не могли бы вы помочь мне, в реализации моей затеи, желательно с примерами. Спасибо. |
Diamond_m
Цитата:
|
Creat0R
Цитата:
|
RemoteAdmin
Цитата:
Могу предложить такой вариант на функцию замены текста в файле: Код:
Func ReplaceText($FileName, $OldText, $NewText) Цитата:
|
Написал
две примитивные функции - Одна предназначена для не совсем точного
подсчёта скорости закачки (по InetGet), а друга на основе этой скорости
закачки высчитывает сколько времени осталось до окончания (в
секундах)...
НО! я полагаю что есть более точное решение этой задумке, ведь по идее, должны учитываться не просто полученные данные в интервале одной секунды, а ещё и скорость модема, скорость отдачи на сервере и т.п... вот как бы всё это расчитать, и построить точную функцию для подсчёта скорости закачки и оставшееся время до окончания? :idontnow: Вот эти две функции и пример их применения: Код:
;Заносим в переменную $URL ссылку на закачку. P.S. Если файл около 2-ух 3-ёх MB, то функции подсчитывают довольно точно, но если речь идёт уже о 5-ти и более MB, то счётчик начинает показыать результаты в хаотичном порядке. |
Привет
народ... Я в этом деле новичок, но мне нужно сделать автоматизацию не
из самых простых (как для меня) :) Вообщем помогите плиз чем сможете...
Что собственно нужно:
Есть кейген... 1) Нужно его запустить (сделал) 2) Нажать на кнопку Generate (не получилось, но это впринципе не обязательно) 3) Скопировать текст(ключ), который он выдал (тоже непонятно) 4) Затем создать новую запись в реестре по заданному мной пути (ну в данном случае это HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA Games\Battlefield 2\ergc) 5) Создать там параметр со стандартным именем (строковый, REG_SZ) 6) Изменить его значение на такое - x9392тотсерийникбезчёрточек вот собственно и конец... Если никто не сможет помочь по каким либо причинам то расскажите хотя бы как делать вышеперечисленные операции :) Заранее спасибо !!! |
timon_90
Для начала, прочти FAQ 2). Пункт 7 раздела Вввод данных / работа с элементами управления FAQ - ф-ция ControlClick(); 3). Ф-ция ControlGetText(); 4,5,6). Пункт 2 раздела Импорт данных из reg-файла в реестр FAQ - ф-ция RegWrite(). Заменить черточки пустотой - StringReplace("серийник с черточками","-",""). P.S. Во многих моих скриптах выполняются подобные действия - используй их в кач-ве примера (посмотри скрипт для Alcohol, FR7, SoundForge 6 и др.) |
Сенк большой!) Если будет чёто не понятно то напишу)
|
Для тех кто хочет использовать трекерную музыку в проектах AutoIt.
Трекерная музыка фактически не загружает CPU и из-за её малых размеров, пользуется популярностью программистов при написании кейгенов, кряков, трайнеров, а также инсталяторов. Для проигрывания трекерных модулей в AutoIt я использую библиотеку BASSMOD.dll. BASSMOD.dll (не путать с bass.dll) можно скачать c оф. сайта http://www.un4seen.com весит 33,5 КБ Много трекерной музыки можно найти на сайте http://www.keygenmusic.net а также на http://www.websound.ru Размещаем в папку \AutoIt3\Include\ скрипт(bassmod.au3) следующего содержания: Код:
#include-once BassMod($dllPath,$sPath,$flag) $dllPath - Путь к BASSMOD.dll (Если в качестве пути указать (-1 или "") функция поищет BASSMOD.dll в текущем директории а также в путях определённых для системной переменной %path% ) $sPath - Путь к трекерному модулю $flag - Метод обработки (см. предыдущий код: Music flags) BassModClose() - закрывает BASSMOD.dll и выгружает музыку из памяти (Эту функцию следует вызывать при выходе из GUI) Пример использования: Код:
#include <GUIConstants.au3> |
Diamond_m
Спасибо! давно искал подобное решение - оно позволяет проигрывать мелодию в фоновом режиме, и многое другое... Примечание и вопрос: Примечание - Если путь к BASSMOD.dll не указать полный (просто "BASSMOD.dll"), то мелодия не играет. Это можно исправить изменив немного первое условие функции BassMod, и добавив после него такую строку: Код:
If StringRegExpReplace($dllPath, "^.*\\", "") = $dllPath Then $dllPath = @ScriptDir & "\" & $dllPath Код:
If $dllPath = "" Or $dllPath = -1 Then $dllPath = @ScriptDir & "\BASSMOD.dll" -Я в системной папке нашёл файл BassMod.dll, возможно ли как то использовать его? |
Creat0R
Цитата:
Цитата:
Я считаю что лучше указывать полный путь, чтобы уж знать наверняка, что играет правильный BASSMOD.dll. P.S. Скорее всего какая нибудь программа временно извлекла BASSMOD.dll для одноразового проигрывания музыки, а в последствии не стала его удалять. Лично я считаю такое поведение некорректным для программы, поскольку это засоряет системную папку. Вот ещё вариант для скомпилированного скрипта с применением FileInstall() (по крайней мере как это вижу я) Все ресурсные файлы извлекаются в @TempDir только после запуска окна справки, а после его закрытия сразу удаляются. Код:
#include <GUIConstants.au3> |
AutoIt, "защита от пользователя", как?
Добрый день.
Проблема такая. Некоторые пользователи любят во время установки программ крутить и тыкать во все стороны мышью :) У меня довольно много программ настраиваются при помощи скриптов автоит. Пользователи от этого офигевают - мышка сама ездит :) Вобщем нужно на время установки запретить использование мыши и клавиатуры. Кто-нибудь делал так? Как это можно реализовать? |
nadge все вопросы по AutoIt задавайте пожалуйста в соответствующей теме http://forum.oszone.net/thread-60616.html
Если почитать эту тему, то ответ на Ваш вопрос уже давно есть: Код:
;блокируем мышь и клаву Код:
BlockInput ( 0 ) |
Цитата:
Спасибо за ответ. |
Хотел
было спросить, как переделать функцию для поиска в файле, чтобы искать
можно было исключительно слово целиком (Match whole word only), но
сначала решил немного поковыряться в ней (функция от Sanja Alone), и на моё же удивление, у меня получилось это осуществить... :yes:
Не знаю пока корректный ли мой способ, но вроде работает: Код:
Func _FindTextInFile($iFile, $Text, $MtchWholeWrdFlag = 0, $CaseSense = 0) Немного переделал функцию, тепрь если искать кириллицу, то чувствительность к целому слову учитывается... но вот если проверять учитывая регистр, то для кириллицы не действует... также добавил в функцию 4-ты параметр, который определяет чувствительность к регистру букв. А также в начале функции поставил проверку на существование файла, если не существует, то возвращается -1. P.S. Если кто-то знает более правильный способ, или более эффективный, то буду рад узнать его ;) |
Никак не могу разобраться со всем что связанно с кодировками...
При проверке на существование файла, если проверяемы путь в кодировке UTF-8, и содержит кериллицу (русские буквы), то файл не найден, перекодировать то можно, но что делать если заранее не известно какая будет кодировка (путь к примеру берётся из файла конфигурации)? Можно ли написать функцию, которая будет определять кодировку строки? А таже проблема с отображением кодировки в гуи, если язык в системе не русский и не английски, то ни одна функция не помагает нормально отобразить кириллицу. Есть функция _Utf8ToAnsi() (от amel27), но она тут не помагает (помагает если системный язык русский), есть также функция StringToUTF(), и она тоже не помагает... как сделать уникальное отображение кириллицы в гуи, чтобы на любом языке (установленном в системе), нормально всё отображалось? |
написал скрипт на AutoIt для установки Office 2000.
серийник там в SETUP.INI никак не задается, поэтому серийный номер ввожу вот так: Send('FXWX9QCJ4FGHCRYH9Y8FXQP6G') но срабатывает это далеко не всегда. есть две проблемы: 1) если в винде язык по умолчанию - русский, то вместо латинских букв скрипт вводит в поле ввода русские: АЧЦЧ9 ЙСО4А итд, то есть те русские буквы, которые написаны на соответствующих клавишах. 2) иногда что-то протормаживает и вообще вводится мешанина из букв, как будто из этой строки Send('FXWX9QCJ4FGHCRYH9Y8FXQP6G') выбрали 7-9 букв, через каждые 2-3 буквы и разбавили их буквой "Ж", которой вообще по-идее там быть не может, ведь она соответствует на клавиатуре знаку ";" сейчас попробую сделать ввод серийника с помощью ControlSetText, но мне непонятно, почему так странно работает 'Send' если язык в винде по умолчанию задан русский? может подскажет кто-нибудь? спасибо. p.s. с помощью 'ControlSetText' вроде получилось, хотя учитывая непонятность работы 'Send' нет уверенности, что все и всегда будет работать корректно :( пока работает... |
i_mihal
Да, есть такая проблема... Я её решаю с помощью вставки из буфера обмена: ClipPut("FXWX9QCJ4FGHCRYH9Y8FXQP6G") Send("^м") Цитата:
Всем: Оказывается, с помощью WinApi можно проделывать интересные манипуляции с окнами... Анимация окон GUI, с помощью WinApi Использование: DllCall("User32.dll","long","AnimateWindow","hwnd",Идентификатор окна,"long",Продолжительность в миллисекундах,"long",Эффект) Эффекты: Эффекты имеет смысл задавать в качестве констант: Const $AW_ACTIVATE = 0x20000 AW_ACTIVATE = 0x20000 (Активирует окно, конфликтует с AW_HIDE) AW_BLEND = 0x80000 (Постепенное исчезновение-появление) AW_CENTER = 0x10 (Разворачивает окно из центра) AW_HOR_POSITIVE = 0x1 (Слева направо) AW_HOR_NEGATIVE = 0x2 (Справа налево) AW_SLIDE = 0x40000 (Прокрутка) AW_VER_POSITIVE = 0x4 (Сверху в низ) AW_VER_NEGATIVE = 0x8 (Снизу в верх) AW_HIDE = 0x10000 (Скрывает окно) Эффекты по умолчанию ориентированны на появление окна, для скрытия окна используйте их совместно с AW_HIDE. Можно получить интересные результаты комбинируя эффекты между собой. Например: 0x4 + 0x1 (анимация по диагонали) Рабочий пример: Код:
#include <Guiconstants.au3> |
i_mihal
ControlCommand вроде будет всегда срабатывать: Код:
ControlCommand("Title", "", "Edit1", "EditPaste", "FXWX9QCJ4FGHCRYH9Y8FXQP6G") Diamond Красиво! :UP: но рамка всего гуи как бы нарисованна, т.е углы не округлённые как должны быть в XP, даже немного затемнённые, это можно поправить? P.S Цитата:
|
:yahoo:
Оказывается, возможно привязать функцию _MsgBox() (от amel27), и любое окно гуи к другому окну (не обязательно к гуи).... На мысль меня навёл пример из Faq'а о переключении раскладки клавиатуры (а именно, пременная $hWnd): Код:
Opt("WinTitleMatchMode", 4) |
Creat0R
Цитата:
Цитата:
Спасибо, приму к сведению. :) |
Diamond
Цитата:
Цитата:
Цитата:
Вставляем так: ClipPut($CmdLine[1]) Если Ком. строка содержит кириллицу, то когда пытаемся куда то вставить текст из буфера обмена, то уже вставляется в неверном формате... кстати я даже не знаю как перекодировать его, кто знает плиз подскажите, давно хотел узнать :blush2: Т.е вот к примеру если такой скрипт закомпилировать: Код:
ClipPut($CmdLine[1]) Код:
Start ClipTest.exe тест |
Ещё один способ получить список существующих дисков на компьютере:
Код:
$Drives = "" |
Creat0R
Цитата:
|
Creat0R
Цитата:
Цитата:
graftabl 1251 | echo %username%>MyName.txt Хотя конкретно для твоего случая это не сработает. При создании пакетного Файла возьми за привычку конвертировать текст в Dos(oem), например c помощью текстового редактора: BRED - хороший заменитель блокнота, или любой другой доступный редактор который умеет работать с кодировками, в самом крайнем случае открываешь пакетный файл в WordPad ( > Сохранить как > Текстовой документ MS-DOS), а затем меняешь расширение на *.bat |
Creat0R
Цитата:
Вот ещё один способ, сделано через VBScript Код:
#CS |
VelDmi
Цитата:
Код:
Func _MsgBox ($mainGUI, $MsgBoxTitle, $MsgBoxText, $MsgBoxType) В первом параметре задаётся идентификатор гуи (как выяснилось можно и от WinGetHandle), во втором заголовок, в следующем текст, и в последнем тип (иконка, кол-во кнопок и т.д.)... Вот рабочий пример с этой функцией: Код:
Opt("WinTitleMatchMode", 4) P.S. Я когда то писал: Цитата:
Diamond Цитата:
|
Creat0R
Цитата:
|
Народ!
Я повторяюсь, но очень интересует ответ на простой вопрос: у кого нибудь выполняется корректно строка $f=Run("telnet","",@SW_MAXIMIZE,3) ? У меня, если ее выполнить без последнего параметра, открывается окно telnet, в противном случае процесс закрывается через 0,5 сек после запуска. AutoIt v.3.2.0.1. |
Цитата:
|
Creat0R
Пробовал через WinApi - kernel32.dll там вроде бы должна быть нужная функция... В общем совсем запутался - ничего не получается. :( Если у тебя проблемы только с Dos-кодировкой, то можно побить кракозябру её же собственным оружием. Код:
$ret="ЄхёЄ" |
Diamond
Цитата:
По поводу режима чтения из консоли (StdoutRead), если я ставлю 2 как последний параметр у команды Run, влияет ли это на то как будут выполняться команды ком. строки? т.е на что вообще это повлияет (кроме как на возможность чтения изх консоли)? |
Creat0R
Эта Функция в её текущем виде не предназначена для чтения из консоли, она задумана мной только для преобразования искажённого текста. Т.е я заставляю консоль испортить кирилический текст, как она это делает обычно, но только в нужную нам сторону. Но если ты хочешь использовать StdoutRead() непосредственно по назначению, т.е для чтения стандартного потока из консоли... Пример кода был взят из справки AutoIt v 3.2.2.0 $STDOUT_CHILD = 2 Необходима для получения StdoutRead() в первом цикле $STDERR_CHILD = 4 Необходима для получения StderrRead() во втором цикле Имена констант очевидно говорят об их предназначении (см. справка: StdoutRead и StderrRead) Константы влияют только на возможность чтения потока из консоли. При этом возможность сохраняется до тех пор, пока ты делаешь запросы StdoutRead(), вплоть до закрытия самой консоли. Код:
; Demonstrates StdoutRead() Исправляем этот недостаток заменой первой строки в коде: Код:
$foo = Run(@ComSpec & " /c graftabl 1251 | dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) |
Как можно изменить функцию _ChooseColor(), чтобы можно было прикрепить окно выбора цвета к гуи?
Я пробовал в DllCall добавить параметр ..."hwnd", $Gui...., но функция ругается на сбой в скрипте и не хочет запускаться :( - возможно ли это как то решить? Diamond Цитата:
|
Три способа определить - является ли файл папкой:
P.S. Возможно, для многих это не новость, и всё-таки... Код:
;~ Путём получения атрибутов Цитата:
А всё-таки кракозябры были не связаны с буфером обмена или AutoIt. :no: А то, я уж чуть было не усомнился в эфективности способа который я предложил i_mihal :tomato: |
Здрасьте всем.
Вот история моей болезни: я написал батник для автоматической рассылки писем, когда он срабатывает, то появляеться окно аутглюк с предуприждением, что программа пытаеться сама отправить письмо и т.д.. На нужную кнопку в этом окне я нажимал скриптом Autoit. [code]Opt("TrayIconHide", 1) WinWaitActive("Microsoft Office Outlook") Sleep(6000) ControlClick("Microsoft Office Outlook", "", "Button4") Send("{ENTER}") Все работало нормально, но последнее время если компьютер заблакированн мой "нажиматель" не срабатывает, так как окно аутглюка стало теперь не активным. на писал такой скрипт: Код:
Opt("TrayIconHide", 1) Кто виноват? Что делать? |
Diamond
Цитата:
;Возвращает -1 если файл вовсе не существует, 1 если папка, и 0 если файл.... Код:
Func _IsDir($FileName) Цитата:
papik_bat Цитата:
У тебя второй пример весь держится на условии что “скрипт будет дожидаться” окна, попробуй опустить условие и ограничить дожидание: Код:
#NoTrayIcon ;Так надёжнее ;) |
Продолжаем беседу...
CreatoR Компьютер заблокирован = Ctrl+Alt+Delete -> Блокировка, либо когда блокировка включаеться автоматически. Попробывал предложенный код, не идет... После разблокировки окно аутлука свернуто. |
Вот нашел описание команды которая могла бы, я думаю, решить мою беду WinRestore, но у себя в Autoit 3, ее не нахожу. Как быть?
|
papik_bat
Цитата:
Теперь (в 3.2.2) нужно так: Код:
WinSetState("Microsoft Office Outlook", "", @SW_RESTORE) |
CreatOR
Цитата:
Попробую пойти другим путем, не дам компютеру блокироваться написал скрипт Autoit "мышка летит на юг" :-)! Через каждые 10 минут мышка двигаеться в южном направлении. Просто отключить блокировку нельзя. |
Creat0R
Цитата:
Тот что на основе VBScript запрашивает напрямую ($fso.FolderExists() куда уж надёжней...). Там я сделал только одну поправочку. Дело в том что в VBScript, значение False понятно 0, а вот значение True = -1, поэтому я добавил Abs() для совместимости с AutoIt. Файл "nul" - неотъемлемый элемент папки и он никуда не денется, так что тоже можно пользоваться смело. :) |
Уважаемые, подскажите пожалуйста, может кто знает как реализовать на AutoIt v 3 следующее: (Что-то сам никак не могу придумать) 1. Как вызвать меню программы, которое вызывается только по клику правой кнопкой мыши на иконку программы в трее ? (Другого интерфейса программа не имеет...) Или как кликнуть нужную иконку программы в трее ? |
Respect
Цитата:
Код:
#NoTrayIcon Diamond Цитата:
А по поводу файла Nul, видимо он гинерируется (по крайней мере имитируется его присутствие) если существует файл с таким же имененм без расширения... Т.е к примеру, создаём файл Test в папке C:\ (без расширения), и проверяем является ли он папкой: Код:
$TestName = "C:\test" |
У меня есть такой вопрос:
-Возможно ли проверить функцию BlockInput()? т.е есть способ узнать, включена ли (или отключена) такая блокировка (от самого скрипта)? Мне нужно включить BlockInput(1), и в течении того времни пока всё заблокированно, проверять были ли нажаты клавиши Alt Ctrl Del (что и вызывает отключение блокировки) - или хотябы как проверить нажатие этих клавишь, _IsPressed не помагает, не получается проверить нажатие сразу трёх клавишь :( P.S. И ещё такой между прочный вопрос - почему в справке нет (у меня) описании команд StringRegExp, StringRegExpReplace? где можно почитать описания, и желательно примеры этих функции? может мне справка попалась бракованная? (она шла вместе с дистрибютивом AutoIt'а). |
Цитата:
координаты конкретной иконки будут однозначно отличаться !?... Вопрос № 2. Как определить какая в текущий момент раскладка клавиатуры RU or EN и как переключать раскладку клавиатуры, не применяя эмуляцию нажатия клавиш ? Наверняка не сложный вопрос, просто нет времени разбираться. Извините, если эти вопросы уже обсуждались в форуме. Хочется услышать именно ответы. Спасибо. |
Creat0R
Цитата:
AutoIt, AutoIt3, AutoIt3Help, и наконец UDFs3 - (User Defined Function). В первых трёх, есть описания этих команд (у меня). :) Цитата:
Цитата:
|
Respect
Цитата:
Цитата:
Diamond Цитата:
Цитата:
Цитата:
Код:
@echo off |
Вопрос:
Можно ли как-то заставить GUI, игнорировать (установленый в системе по умолчанию) стиль Windows XP. Т.е чтобы окно отбражалось в классическом виде (как в 98-м) не зависимо от системного стиля? Второй вопрос: Сущесвует ли какой нибудь простой способ претаскивания окна стиля $WS_POPUP или это возможно только за счёт слежения за позицией курсора? Кому нибудь уже удавалось двигать такое окно с помощью мыши? Я написал код, окно двигается без проблем, только вот я не уверен что это правильный способ. Код:
#include <Guiconstants.au3> Цитата:
Цитата:
|
Хочется узнать, как бы сделать так, чтоб скрипт искал файл qip.exe во
всём каталоге Program Files, и если таковой найдется - возвратил бы тот каталог, в котором он лежит и запихнул бы в реестр полный путь к катлогу (не к файлу). Это вообще осуществимо? Заранее спасибо! |
Diamond
Цитата:
Цитата:
Код:
#include <Guiconstants.au3> Цитата:
|
DenchikK
Цитата:
Код:
#include <File.au3> |
DenchikK
Creat0R К сожалению, а может и к радости, мне не удалось найти уже готового решения и я решил написать функцию поиска сам. А сейчас захожу на форум и, вот тебе раз, опоздал... Ну да ладно... как вам такой вариант, вроде бы тоже ничего? :blush2: P.S. Есть ещё перебор через VBScript с помощью ObjCreate(). Если интересно - выложу. :) Код:
$ret = find(@ProgramFilesDir,"qip.exe") |
Такой вопрос:
-Возможно ли получить иконку из файла, в случае если расширение файла не зарегистрированно в системе? Т.е мне нужно сделать GuiCtrlSetImage(), и указать так, чтобы та иконка которая отображается на файле, была считана для контроля ($CtrlID). К примеру, есть файл Program.exe, известно что далеко не все исполняемые файлы (и другие) содержат иконку, и нужно каким то образом определить, содержит ли этот файл иконку, если не содержит, то естественно путь к иконке можно указать к Shell32.dll, 2 (где 2 это ID иконки для екзешников не содержащих иконки), если содержит, то к самому файлу, и как ID ставить 0. А если файл не исполняемы, то можно по расширению читать из реестра путь к иконке. Вобщем-то сам вопрос - Как узнать, содержит ли файл иконку? и по возможности, получить путь к иконке для не зарегистрированных типов файлов. |
Diamond
Цитата:
Правда есть пару минусов - нет возможности заранее получить общее количество найденых папок (для точного подсчёта прогрессбара, или вывода прочей информации), также нельзя искать по маске, или ставить случайно слеш после пути :tongue: . Но в данном случае, если требуется произвести исключительно поиск, то этот (твой) вариант идеальный! :up: P.S. Немного изменил гуи для перетаскивания, и код для поиска (там в самой функции случайно указал \qip.exe :blush2: ). |
Diamond
А функция не работает то :( - нужно Global $GetPath = 0 ставить вне функции, т.к каждый вызов подфункции, вне зависимости от того найден ли файл, задаёт переменной $GetPath значение 0, таким образом цикл не прирывается, и пока не проверяются все файлы функция действует... Вот немного изменил её (сорри если что), а также добавил в неё определение файла в корневом каталоге (в $Path): Код:
Global $GetPath=0 P.S. всё изменённое выделенно. |
Diamond
Немного “гуинизировал” твою функцию для поиска файла :biggrin: - в первом поле задаём путь в котором нужно искать, а в нижнем запрос (имя файла) - неверно набранный путь (если не существует или содержит слеш на конце) определяется, а также определяется если набранное имя файла содержит непозволенные символы (< > | ? : * / \ "): Код:
Opt("GuiOnEventMode", 1) |
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
А вот ExitLoop что ты добавил, никак не влияет на прерывание! :nono: |
Diamond
Цитата:
|
Creat0R
Цитата:
Когда дочерняя подфункция находит файл, она завершаясь возвращает контроль родительской функции, которая в свою очередь (как я понял) продолжает работу с того места откуда последний раз запускала дочернюю подфукцию, а вот тут-то :moderator её будет поджидать твой ExitLoop. Исходя из всего выше сказаного, я думаю (моё) "условие для прерывания всех циклов" - абсолютно лишнее! Т.е. когда стоит твой ExitLoop, то до моего условия (прерывания), дело вообще не доходит!!! Уф-ф... В общем, я убираю его (условие)... :) |
Нашёл
в аутоите баг (или это так задуманно?) - При BlockInput(1), вроде всё
кроме Ctrl Alt Del должно быть заблокированно, но срабатывает нажатие и
на Sleep и на Power.
Собственно вопрос: Возможно ли перед блокировкой, назначить другое действие для этих клавиш? (т.е чтобы при их нажатии ничего не происходило) - Очень очень нужно :( . P.S Задать клавишу Sleep можно, но она почему то продолжает работать (как Sleep) |
Давно
искал способ сделать “плавающее окошко”, чтобы ещё при “плавании” :),
перемещалось хаотично по экрану. Когда ещё только начинал разбирать гуи
в AutoIt'е, думал это не реально, и забросил эту затею, но вот тут ни с
того ни с сего, я вдруг вспомнил об этом, и решил попробовать
реализовать (всё же знании уже побольше), и, реализовал! (довольно без
проблем, и быстро)...
Вот Пример: Код:
#include <GuiConstants.au3> |
Оказывается,
можно вызвать MsgBox не в стильном виде (не испоьзуя стиль WinXP) - т.е
сообщение будет выглядеть как системное в Win98...
Нужно просто перед основным флагом, ставить стиль 0x20000: Код:
MsgBox(0x20000+64, "Hello!", "I am styleless MsgBox ;) ") |
Привет всем!!!
Помогите пожалуйста с скриптом для установкой Fraps и Runpad Shell. Для тихой установки уже наверное все ключики перепробывал, но не помогает, всеравно вылазиет табличка с уведомлением установить программу. |
borzoy
Цитата:
А вообще, нужно было создавать отдельный топик: Цитата:
|
Creat0R
Цитата:
|
borzoy
Я отправил вам оповещение, что ваша тема [autoit] Fraps и Punpad Shell4, с просьбой помочь создать скрипт, перенесена в созданную вами же тему Помогите с тихой установкой Fraps и Runpad Shell, в которой уже начато обсуждение. Зачем создавать одинаковые темы? ОПК - пункт 2.1 (Тема переименована в [autoit] Fraps и Runpad Shell, ни один пост не удалён) |
В AutoIt'е плохо (а точнее не корректно) работает функция FileDelete - например если написать её так:
Код:
FileDelete(@TempDir & "\") |
Creat0R
Цитата:
Думаю всё же, такой способ надёжней в плане безопасности, чем мучаться и придумывать разные хитрости, пытаясь исправить баг AutoIt'а. :) Код:
Dim $fso |
Diamond
Да, это неплохой способ, спасибо, возьмём его пожалуй в арсенал функции аутоита ;) Я что-то не нашёл функции, которая проверяла бы данное число на чётность/не чётность, и решил её сам сделать (понадобилась сея функция), но не уверен что это правильное решение, может уже есть подобная функция, или у кого то есть более универсальное предложение? :shuffle: Код:
$iNumber = 2075674 И ещё, заметил вроде ещё багу в аутоите, проверить очень просто: Код:
MsgBox(0, "", 0.00001) |
Creat0R
Привет, на самом деле все гораздо проще: Код:
Func _IsEven ($num) Цитата:
Для однозначного представления используй StringFormat: Код:
MsgBox (0,'',StringFormat('%.5f',0.00001)) |
Creat0R
Diamond Красивый способ для FileDelete с форума поддержки: Код:
Func _FileDelete ($file) |
Подскажите, как с помощью WinApi поменять частоту обновления экрана?
В интернете есть множество примеров с использованием библиотеки: user32.dll функция: ChangeDisplaySettingsA, но как реализовать это в AutoIt совершенно не представляю. Очень надо!!! |
amel27
Цитата:
Цитата:
Цитата:
Такой вопрос: Как послать обычное нажатие клавишы Windows (с изображением окон)? нужно отдельно в експлорере вызвать контекстное меню, и единственны способ который мне пришел в голову, так это нажать эту клавишу... Пробую так: Код:
Send("#") Или, как можно обновить окно експлорера, но не посыланием F5, а именно полноценным обновлением (в некоторых случаях F5 не помагает). |
Ещё способ удаления файла:
Код:
Func _FileDelete($Path, $FileName) Код:
$FileName = @ScriptDir & "\test.txt" Если поставить последний параметр как 1 ($Flag=1), то подсчёт не будет учитывать возврат каретки и перевод строки (@CRLF), если поставить параметр на 2, то будут учитываться все символы кроме @CR, ну а если поставит параметр $Flag = 3, то будут учитываться все символы за исключением символа перевода строки (@LF). |
Diamond
Цитата:
Код:
; Пример использования функции |
Creat0R
Цитата:
Код:
Func _FileCharCount ($file, $flag=1) |
amel27
По поводу частоты обновления Отлично! Всё работает! :UP: Если честно, я и не надеялся что вообще кто нибудь ответит, иначе задал бы этот вопрос ещё месяц назад. Большое спасибо! P.S. Была проблема с видеокартой, в некоторых играх частота сбрасывалась с 85 Гц. на 60 Гц. Перепробовал уже (наверное) все известные утилиты и ни одна из них не помогла. Теперь проблема решилась. :victory: Ещё раз спасибо! |
Есть фирменная YAMAHA'овская программа для конвертирования звуковых WAV-файлов
в формат MMF (используется в сотовых телефонах Samsung, LG, Pantech, etc...) Называется WSC-MA2, сайт http://smaf-yamaha.com/ Это, похоже, единственая программа, которая может конвертировать WAV->MMF. Но она не работает из командной строки, у нее нет меню, она не работат в пакетном режиме. Для того чтоб сконвертировать WAV в MMF надо схватить WAV-файл мышкой, перетащить и бросить его на маленькое, красивенькое окошко этой программы. Можно ли с помощью AutoIt проделать такую операцию? То есть "взять некий WAV-файл мышкой" и "кинуть его на окошко этой проги" (в перспективе взять по-очереди в цикле все файлы с расширением WAV и покидать их на окошко программы) Реализуемо ли это в рамках Auto-It? или вообще как-нибудь, кроме как вручную. спасибо. |
i_mihal
обычно перетаскивание можно заменить на копировать/вставить через буфер обмена... |
Чтение параметров локализации средствами API:
Код:
$sys = DllCall ("kernel32.dll", "int", "GetSystemDefaultLCID") |
Написал давно желанную функцию, но она работает как бы наполовину - она должна заменять стандартную функцию FileSelectFolder, но проблема в том, что у меня не получается - А) либо создать все вкладки (в TreeView) для всех существующих папок (это также займёт кучу времени на их генерацию), Б)
либо создавать их “находу” (т.е в момент вызова/раскрытия той или иной
вкладки) - в принципе, проблема со вторым вариантом такая - нужно
узнать как очистить одну выделенную вкладку от её подвкладок (не удаляя
её саму).
Для чего нужна такая функция? во-первых для того чтобы можно было прикреплять это окно к другому приложению (или к родительскому гуи) - эта одна из основных причин (даже самая) - далее можно также используя подобную функцию, просто создавать это окно с разными размерами, с разными кнопками и возвращаемой информацией, также будет возможность задать этому окну атрибут “поверх всех окон” и т.д и т.п... Вот в принципе сам скрипт с примером: Код:
#include <GUIConstants.au3> |
Вопрос знатокам.
А можно ли как-нибудь "раскомпилировать" .exe файл обратно в .au3? |
biggreeder
Цитата:
|
Creat0R
Спасибо, дружище. Выручил. Винт накрылся. Думал пропали все мои скрипты (на диск записывал только exe-файлы) |
День добрый,
интересует следующий вопрос: Можно ли запускать IT скрипт с какимилибо параметрами, например мне нужен скрипт который бы выводи мне 2 значения из командной строки т.е. скрипт я запускаю Код:
RUN.exe параметр1 параметр2 заранее спасибо |
Вообщем
такой трабл, при установке Agnitum Outpost Firewall выдает 2 окна с
ошибками Microsoft Visual C++ Runtime Library. Я написал в скрипте
функцию отлова этих окон с ошибками, но когда закрывается первое окно с
ошибкой установка стопорится на Мастере Настройки, т.е дальше только
вручную нажимать кнопки приходится. Посмотрите скрипт, мож че
подскажите, или из-за чего такие ошибки вылетают, вроде библиотеки Си
стоят.
СИНИМ выделено то, что добавил я, все остальное исходный скрипт от Sanja Alone Код:
#cs |
Dicken
Цитата:
... а также поищи в справке по ключу $CmdLine. |
В
стандартных примерах нашёл скрипт sysinfo. Так вот, можно ли сделать,
чтобы этот скрипт вместо временной папки или папки Windows(допустим)
выводил пароль и имя для каждого пользователя?
Кстати, у кого-нибудь есль стандартные модули с русскими комментариями? |
Нашёл недостаток в InputBox(), проверка на IsNumber() всегда возвращает строчную переменную, даже если вводимые данные были представлены в цифре.
Предлагаю два варианта решения: Код:
;~ Эта функция работает только с обычными целыми числами |
Diamond
Это не недостаток, а издержки типа данных Variant - кстати, аналогично и в Visual Basic... Преобразование типа происходит непосредственно перед выполнением операций с данными - например, при попытке провести арифметические операции со строковой переменной... поэтому иногда вместо преобразования проще прибавить к переменной "0". То, что InputBox() возвращает текстовую строку вполне логично. ИМХО текстовый ввод проще контролировать регулярными выражениями, тем более что этот способ универсален и подходит для любых входных данных: Код:
Func _IsStringNumber ($sVar) |
amel27
Цитата:
Немного в другую сторону... У меня есть пару вопросов касающихся сети: 1) Функция InetGet при закачке файлов, обходит прокси? или таже UDF-функция для _InetGetSource тоже не работает с прокси? Мне нужно каким то образом, получать данные с сети (будь то закачка файла или получение исходного кода страницы), вне зависимости от того, подключён ли компьютер к сети через прокси или напрямую. Но желательно каким то хитрым образом обходить прокси, не выключая его (т.е не заметно для юзера) - это вообще возможно? 2) В сети у меня лежит файл с расширением *.js (хотя не очень важно расширение), какое самое быстрое средство для получения с него данных (для его чтения)? неужели _InetGetSource() это самое быстрое(?) средство? |
Creat0R
Цитата:
Цитата:
|
amel27
Цитата:
|
Diamond
Обнови версию AutoIT - это новая фича, еще не устаканилась... :) |
amel27
Цитата:
|
Creat0R
Цитата:
Цитата:
|
Creat0R
Уф, добил таки самопальный _FileSelectFolder, только есть два замечания: 1. Внимание! В параметре $root передается код папки (CSIDL), но ни в коем случае не путь к ней! 2. Функция не поддерживает параметр каталога по умолчанию ("initial dir")... хотя теоретически эту фичу можно реализовать через GUICtrlSendMsg (), т.к. окно выбора может принимать сообщения пред-селекта и установки текста статус-бара Код:
Func _FileSelectFolder ($title, $root = 0, $flags = 0, $hwnd = 0) |
amel27
Цитата:
Приношу свои извинения. :) |
Mihal> Можно ли с помощью AutoIt проделать такую операцию?
Mihal> То есть "взять некий WAV-файл мышкой" и "кинуть его на окошко этой проги" amel27> обычно перетаскивание можно заменить на копировать/вставить через буфер обмена... в этой проге (yamaha'вская wscma) нет "вставить" к сожалению. |
amel27
Цитата:
Цитата:
Цитата:
Но всё же ещё раз огромное спасибо за эту долгожданную функцию :) P.S На офф форуме кстати, тоже вроде с нетерпением её ожидают ;) |
Creat0R
Цитата:
FYI: "по горячему" немного оптимизировал код |
amel27
Цитата:
Немного поизвращался в другом направлении, и сделал нужные для себя функции связанные с массивами, но подумал может кому то ещё пригодятся :shuffle: (комментов нет, но думаю запустив примеры всё довольно быстро станет ясно): Код:
#include <Array.au3> |
Ещё
функция для работы с массивом - _ArrayReplace() - Кстати, предыдущие и
эта функция, работают только с одномерным (с одним элементом) массивом:
Код:
Func _ArrayReplace(ByRef $Array, $ValueToReplace, $NewValue) P.S А как определять является ли массив двухмерным, или нет? |
Всем всем!
Кому интересна фича отката скрытых папок и расширении файлов, посмотрите на эти два скрипта: Для отката расширении файлов: Код:
$RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" Для отката скрытых папок и файлов: Код:
$RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" В сети можно найте несколько подобных расширении, но я ещё не видел подобное, чтобы весь процесс проходил незаметно. Вот если бы ещё найти способ как внедрить пункт в контекстное меню папки, по нажатию которого и запускался бы этот скрипт (в закомпилированном виде), то это было бы вообще шикарно! |
Creat0R
Цитата:
- во избежание проблем индексные переменные в функциях нужно объявлять как Local; - пустые массивы (счетчик со значением 0) нужно обрабатывать отдельно перед входом в цикл; - учитывая, что счет индекса идет всегда с единицы, одной проверки IsArray() явно недостаточно. На самом деле все приведенные функции работают с пользовательским типом данных - "массив со счетчиком"… вот на принадлежность этому типу и надо проверять. Более того, при наличии уверенности в корректности массива можно обойтись без лишнего пользования UBound() - достаточно взять значение по индексу 0. - параметр $JoinedArray в функции _ArrayJoin() имхо избыточный, при нужде поменять параметры проблемы не составит: Код:
If $JoinedArray Then - в функции _ArrayReplace две строки перепутаны местами. Код:
#include <Array.au3> Цитата:
|
Creat0R
Цитата:
Цитата:
|
amel27
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
P.S Думаю мне можно простить ошибки которые я допустил в функциях, т.к совсем недавно я вовсе не мог работать с массивами (для меня это было что то страшное и неопознанное), и то что я осмелился написать сам нужные мне функции, это что то - и благодаря таким замечаням как твои, думаю я вскоре освою их основы :UP: . |
Creat0R
Цитата:
Цитата:
Цитата:
Код:
Func _ArrayClear (ByRef $arr) Цитата:
|
amel27
Цитата:
Цитата:
Цитата:
|
amel27
На основе твоего примера для определения цифрового значения, я сделал функцию для обнажения всех НЕ числовых значении, т.е в результате возвращается значение содержащее только цифры: Код:
Func _StringStripNotNumber($String, $RetType=0) Может у кого то есть более оригинальное название для этой функции? :shuffle: мне если честно ничего другого в голову не пришло. А как можно получить весь путь до файла, за исключением самого имени файла? Т.е к примеру, имеем путь C:\test\test.zip - и нужно получить только путь C:\test - хотел бы узнать как это можно осуществить исключительно регулярными вырожениями.... Я до сих пор обходился так: Код:
$Path = "C:\test\test.zip" |
amel27
Извини что достаю тебя уже третьий пост подряд, но я нашел небольшой недочёт в функции _FileSelectFolder() - там заголовок (первый параметр $title) не отображается :shuffle: |
Creat0R
Цитата:
Код:
Func _StringStripNotNumber ($String, $RetType=0) Цитата:
Код:
StringRegExpReplace ($file, '[^\\]*$', '') |
Creat0R
Цитата:
|
amel27
Цитата:
Цитата:
Цитата:
Цитата:
Моя версия на функцию деления пути используя регулярные выражения: Код:
#include <Array.au3> |
Creat0R
Цитата:
- какие еще ты предполагал разделители кроме '\' ?... имхо часто перегружаешь функции избыточностью, да и читаются они так сложней - легко ошибку пропустить... знаком с "бритвой Оккама"? ;) - зачем последний цикл?.. какие случаи имелись ввиду?... или опять на всякий случай? ;) |
amel27
Цитата:
Цитата:
Цитата:
Просто путь может быть и как ссылка, тогда разделитель будет другой. Цитата:
Цитата:
Соответсвенно замечаниям немного переделал функцию :) : Код:
Func _PathSplitByRegExp($sPath, $pDelim="\") |
Вот
ссылка на пост в котором я оставил пример использования функции
_StringStripNotNumber() - этот пример по сути предназначен для
демонстрации чтения данных из консольного окна (при архивировании или
расспаковке), вывод этих данных в статус баре, и собственно обнаженные
значения до чисел для того чтобы корректно отобразить процесс
распаковки/запаковки в прогресс баре.
http://www.autoitscript.com/forum/in...t=0&p=307745&# P.S Функцию может переименовать так: _StringStripWords() ? |
Creat0R
Цитата:
Код:
Func _IsUNCPath ($str) Цитата:
Цитата:
|
amel27
Цитата:
Интересно, ну я кажется понял суть, но если смотреть в сторону программирования таким подходом, то тут нужен исключительно немалы опыт (которым обладаешь ты ;) ), имхо. Цитата:
Цитата:
Можно последний цикл прописать так (чтобы не было хвостов в виде пустых элементов массива): Код:
For $iArr = 7 To 1 Step -1 |
Creat0R
Цитата:
Код:
#include <File.au3> Цитата:
Цитата:
|
amel27
Вот более модифицированный пример архивирования файлов с выводом процесса в гуи (я там использовал новую твою функцию _FileSelectFolder(), а также заметь, я накалякал свою собственную функцию для InputBox() - она позволяет прикреплять InputBox к окну гуи, и также в ней есть всё тоже что и в обычной функции, и даже больше, мне впервые удалось реализовать ограничение на изменение размера гуи :) - т.е установить минимально допустимы размер окна гуи ) : Код:
#include <GuiStatusBar.au3> |
Функция для ограничения размеров гуи при испольовании стиля $WS_SIZEBOX (я кажется как то спрашивал тут про это, но тогда не имел понятия как сделать, а сегодня уже знании побольше :) )...
Код:
#include <GuiConstants.au3> Полагаю и это можно как то решить, но мне и так пока нравится, если у кого то есть желаение, милости просим ;) - буду благодарен. |
Как можно изменить функцию _ChooseColor чтобы в ней был параметр hWnd?
Я пробовал подсталять этот параметр в DllStructCreate и потом задать его при заплонении структуры данных (DllStructSetData) но всё безуспешно :( ... может кто-то знает как это сделать, и возможно ли вообще? P.S В начале самой функции есть упоминание об этом: Цитата:
|
Creat0R
Цитата:
Цитата:
Код:
Func _ChooseColor($i_ReturnType = 0, $i_colorref = 0, $i_refType = 0, $hwnd = 0) |
Здравия желаю!
Простите если повторюсь,просто не нашёл(а может плохо искал). Есть скрипт ,который архивирует,а потом с помощью встроенного в винду ftp клиента отсылает архив восвояси.так вот хотелось бы перехватывать сообщения ftp и писать их в лог ,что бы занать что и когда как это можно сделать? |
amel27
Цитата:
Цитата:
13ghost Цитата:
|
Creat0R
завтра попробую |
amel27
Цитата:
Вот исходник функции: (если не трудно, укажи где именно нужно менять) Код:
Func _INetGetSource($s_URL, $s_Header = '') |
Creat0R
Код:
Local $ai_IO = DllCall($h_DLL, 'int', 'InternetOpen', 'str', "AutoIt v3", 'int', 1, 'int', 0, 'int', 0, 'int', 0) |
amel27
Спасибо! Такой вопрос по регулярным вырожениям - Как возможно получить определённый текст, который находится между двумя заранее известными символами? Т.е к примеру, имеем такой текст: Код:
test1*этот текст нам нужен*test2 |
Creat0R
что-то подобное я делал в скрипте "расцветки": Код:
$str='test1*этот текст нам нужен*test2' |
amel27
Я имел ввиду получить текст между двумя символами, но они могут быть разные, к примеру если этот метод использовать так (как функию): Код:
$String = '1теперь нам нужен этот текст2' Добавлено: Во! сделал, правда я не уверен что учёл все символы... Код:
$String = '_теперь нам нужен этот текст^' Хм, но теперь другая проблема - если более чем два совпадения символов, то возвращается последнее межсимвольное значение, а нужно чтобы в таком случае возвращалось первое совпадение (с левой стороны, т.е сначала). |
Creat0R
ну... вот еще вариант, выбирающий фрагмент от первого вхождения 1-го символа до первого вхождения 2-го: Код:
$String = '_теперь нам нужен этот текст^' |
amel27
Цитата:
Поздравляю со статусом Ветерана! :4u: Код:
$String = 'Это нам не нужно. Нам нужен этот текст, :и этот тоже:, а :этот нам не нужен:' |
Объясните пожалуйста,а то я не догоняю,не могу понять что в справке написано:
что делает ConsoleWrite? и для чего её можно применить? зарание благодарен |
13ghost
Штатное применение - отладка скриптов средствами SciTE, кстати неплохая альтернатива MsgBox() ;). Выводит заданный тект (например, значения переменных) в экран вывода - тот, что включается по F8. Из нештатных - запись данных в STDOUT при запуске скрипта через CMD. Creat0R Цитата:
Цитата:
|
Цитата:
|
amel27
Цитата:
Цитата:
|
Вопрос
про чтение stdout'а AutoItом - наблюдаю эффект, что для некоторых
программ, stdout то читается, то не читается (в зависимости от опций).
Например, рассмотрим следующий код: Код:
Func ShowStdout($cmd) C уважением, Стас. |
Иногда
название окна не меняется. Получается, что посылая следующий {ENTER}
нажимаешь на {Cancel}. Команда sleep не очень эффективна, т.к. она
нормально отрабатывается на одном компе, на другом с заметной задержкой
а на третьем задержки не хватает. Как быть в таком случае?
|
belonesox
Цитата:
Код:
Func ShowStdout($cmd) Evgeniy15 Цитата:
|
belonesox
попробуй следующий вариант (проверил только для java, python под рукой нет): Код:
#include <Constants.au3> просьба не забывать добавлять в скрипты необходимые строчки #include ! |
Как
можно получить загрузку ЦП определённого процесса? не важно, по имени
образа, пути к файлу процесса, или по Pid. Это возможно узнать?
(AutoIt'ом естественно ;) ).
|
Creat0R
что-то типа такого: Код:
MsgBox (0, '', _GetCPUUsageProcess ('winrar')) |
amel27
Цитата:
Вернее доходит (это я с полным именем проверял, включая расширение), но возвращается всегда ноль :( |
Creat0R
попробуй запустить архивацию каталога и проверить процесс "winrar", FYI: эта функция показывает мгновенное значение загрузки CPU |
люди подскажите пожалуйста
недавно аозникла проблема доведения инсталяции софта до уровня автомата... почти сразу столкнулся с проблемой - не могу заставить скрипт определить сидюк. если прописываешь жестко с какого диска стартовать софтину, то все прекрасно, но когда надо чтоб он сам запуске скрипта определял под каким диском идет сидюк, возникают проблемы, команда неверна и тому подобное.... заранее благодарен |
amel27
Цитата:
Код:
#include <GuiConstants.au3> И ещё, а для чего по умолчанию стоит процесс idle, как я понял это типа “Бездействие системы”? но если оставлять по умолчанию, то возвращается тоже ноль, хотя в Диспетчере задач если ничего не грузит процессор то это значение становиться 99. P.S Что такое FYI? Izh Цитата:
Код:
$var = DriveGetDrive( "CDROM" ) |
Как определить период бездействия пользователя (пример):
Код:
#include <Date.au3> |
Creat0R
Ну... значит процесс не может определить загрузку самого себя, т.к. эти операции выполняются синхронно - пока WMI вычисляет загрузку сам процесс (AutoIt3) ожидает ответа, т.е. действительно простаивает... потому я и сказал о мгновенном значении. по поводу Idle - там скорей всего общая загрузка CPU P.S. FYI - For Yur Information :) |
Цитата:
$source = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup", "SourcePath") runwait($source & 'Software\prog.exe') это хорошо работает на этапе GuiRunOnce, при автоустановке софта. но может и дальше использоваться если конфигурация носителей не меняется |
amel27
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Creat0R
исправил скрипт - добавил усреднение по заданному интервалу (в "тиках"), кроме того процесс может теперь передаваться как по имени, так и по PID. |
amel27
Цитата:
Хотя мне пока не удаётся подобрать оптимальный интервал использования этой функции (между каждым её вызовом и установкой тикания ;) ). Цитата:
Мне вообще то всё это нужно для одного моего небольшого проэктика, я пытаюсь написать утилитку менеджер процессов - Получилось ВСЁ что хотел, кроме (теперь корректного, т.е в реальном времени) слежения за загрузкой ЦП (каждого процесса в отдельности и общего использования), и использования памяти каждым процессом. Мне удалось адаптировать многие функции из офф. форума, естественно кучу твоих функции, и пару собственных. Утилита позволяет просматривать подробную информацию о процессе, имеет почти все те же функции что и у встроенного taskmgr.exe в Windows (включая собственный диалог запуска приложении - FileRun), и даже чуть чуть больше :) . Добавлено: amel27 Цитата:
|
Diamond
Ты как то спрашивал про то, как заставить гуи НЕ отображать системны стиль, так вот я нашел на офф. форуме решение этой задачки... Это простой скачивальщик (не знаю на сколько он полезен), при его запуске задаётся стиль как в старых/без стильных виндоус. Вот ссылка, я немного переделал, так как там не совсем весь гуи был таким стилем, я даже удивился, как окно от FileSelectFolder() приняло старый (не)стиль :) - видимо и всё остальное что будет использованно в гуи будет иметь подобный стиль. Я не разбирался как оно работает, но видимо там упорно используются Dll'овские штучки :) |
amel27
Тоже на офф. форуме нашел функцию для слежения за бездельем юзера :biggrin: (немного переделал для примера) : Код:
Dim $i_LastActive = _LastActive() |
Creat0R
Цитата:
Цитата:
Код:
$a = _ProcessList ('') |
Creat0R
Цитата:
Код:
#include <Date.au3> |
amel27
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
Код:
#include <Date.au3> |
amel27
Цитата:
Цитата:
Цитата:
Цитата:
Я пока остановлюсь на простеньком... я сделал типа юмористичесукую напоминалку для бездельника :) - вот код: Код:
HotKeySet("^e", "Quit") Будет перебираться случайный промежуток времени, и выскакивать треевская подсказака с напоминанием о том сколько времени пользователь ничего не делал. |
Creat0R
Цитата:
Цитата:
Код:
#include <array.au3> Цитата:
|
amel27
Цитата:
Цитата:
Цитата:
Кстати, я вот ещё что придумал... заносим в массив (можно из файла) разные сообщения (с разной характеристикой и контекстом), и тоже случайным перебором выводим в TrayTip'е, а также можно занести в массив все файлы из папки мелодии Windows - C:\windows\media (можно даже свою папку с мелодиями указать), и тоже в момент вывода сообщения случайно (в смысле в случайном порядке :) ) их проигрывать... |
Ура!!! я это сделал, немного помучался, но всё же сделал!
Вместо использования звуков системы, я использовал её персонажа - старый добрый волшебник “Merlin” :)... ![]() Если в системе не найден персонаж, то выводится TrayTip. А и ещё, чтобы персонаж ещё и говорил, в системе должен быть установлен голосовой движёк. При простое более 5-ти секунд, иконка трея меняется на неактивного юзера, при активности иконка обратно меняется на что-то вроде юзера в движении (не смог в системе найти более походящей иконки). Также при простое в переменную $TotalTime накапливается общее время простоя (секунды), а при активности эта переменная сбрасывается на ноль (0)... Также удалось заносить в массив отдельные заготовки сообщении, если есть файл сообщении (LazyMessages.dat), то с него считываются строки, если его нет, то в скрипте уже заготовлены 10 сообщении (на английском)... Для выхода из скрипта в любое время, нужно нажать Ctrl E (при английской раскладке). В общем, на мой взгляд получилось довольно неплохо... правда есть пару моментов, например, как можно проверить закончил ли персонаж читать текст, и соответственно убить его? :) ... вот скрипт: Код:
HotKeySet("^e", "Quit") Скрипт чёрно-белый потому как в разукрашенном виде он занимает более 40-ка тысяч строк. |
Я тоже игрался с msagent-ом. Мои наблюдения:
Код:
#include <File.au3> |
Sanja Alone
Цитата:
Код:
With $AgentControl.Characters($fig) -А что, при использовании Switch учитывается регистр букв? (я про StringLower). Цитата:
Цитата:
Кстати, в системе есть более одного персонажа, благодаря этой статье, я значительно улучшил скрипт - Я написал функцию которая собирает в массив пути к этим персонажам (если они найдены) - _FiguresListToArray(), и затем на основе этих путей, методом случайного перебора (Random естественно), вызывается персонаж... А также удалось осуществить “убийство” персонажа при любой активности пользователя (это я реализовал на основе наводок твоего примера - спасибо). У меня такие вопросы: 1. Где можно узнать список действий определённого персонажа? (желательно средствами AutoIt'а выявить список действии для указанного персонажа). 2. Как можно, и можно ли вообще, регулировать скорость произношения речи? (или хотябы скорость печатания букв). Вот новый скрипт - Детектер лени - Я пока не знаю какой из существующих персонажей что умеет делать, поэтому присвоил им всем одинаковые действия (ошибку вроде не выдаёт) - можно было ещё перебирать оффисные персонажи (как и в статье указанно), но я посчитал это лишнее, хватит пока и 4-ёх :). Код:
HotKeySet("^e", "Quit") |
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
Код:
[HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices] |
привет, в общем такая проблемка, нужно чтобы в этом скрипте перед Send ( 'Иванов' )
раскладка менялась на русскую а перед Send ( 'Ivanov@f57.nalog.ru' ) на англискую заранее спасибо Код:
; Автоматическое заполнение квитанции |
Sancho111
FAQ -> Как с помощью AutoIt сменить раскладку клавиатуры -> WinAPI-метод |
Sanja Alone
Ты не поверишь, но я на офф. сайте нашел библиотеку для управления персонажами MSAgent! Там есть функция которая возвращает массив всех действии для заданного персонажа, и даже больше, там есть функции позволяющие добавлять/удалять действия в контекстное меню персонажа (по правой кнопке мышки на нём). В общем я в эйфории! :yahoo: Цитата:
А функция для получения списка действии персонажа вот (довольно проста оказалась) : Код:
Func _MAListCharAnimations( ByRef $oCharacter ) |
Creat0R
Цитата:
Цитата:
Код:
FFFFFFF6 - минимальное значение |
Код:
; Автоматическое заполнение квитанции $akey=StringSplit($key,',',1) $akey=^ERROR Error: Incorect number of parametrs in function call |
Sancho111
Я же говорил о методе "WinAPI" Код:
Run ( 'fap2006.exe' ) |
Спасибо за код, но возникла следущая ошибочка
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0) Local $ret =^ERROR Error Uknown Function name |
Sancho111
Цитата:
Установи последнюю версию. |
Sanja Alone
Цитата:
Сделал функцию для установки скорости произношения речи, но не уверен что это правильно: Код:
Func _SetSpeachSpeed($Speed) Что то никак не соображу как использовать Regshot. |
Creat0R
Цитата:
Он сравнит состояния реестра до и после и выдаст изменения. |
VelDmi
Цитата:
У меня вроде нечем так особо задать скорость, до, и после, а потом проверить... т.е нету способной на это программы, сами персонажи вроде не задают скорость, да и в функциях которые я нашел (с офф. форума) нету ничего подобного. |
Creat0R
Цитата:
|
Sanja Alone
Цитата:
Цитата:
P.S Кстати на её (функции) основе, можно также в своих скриптах строить подобный ползунок :). |
написал
скрипт, который сперва пишет огромный файл, а потом его же считывает, и
проверяет, считалось то же, что записалось или нет?
работает, но медленно, видимо, за счет сравнения строк. Как бы ускорить? что писать в файл, значения абсолютно не имеет. Код:
$filename = "now" & @MIN & @SEC & "temp" |
Dirk Diggler
Цитата:
И нет необходимости строить новый гуи и удалять старый, можно использовать и тот же. А для проверки нажатия кнопки, можно использовать метод реагирования на событие (On Event Mode)... И ещё, зачем SetError(1)? это нигде не используется, или я что-то упустил? Просто быстрее делать: If .. Then ... чем: If ... Then ... EndIf Вот немного переделал пример: Код:
$filename = "now" & @MIN & @SEC & "temp" |
ды
вот. эти все потери несущественны по сравнению с теми, что происходят
на проверке равенства строк. Вот как бы придумать алгоритм
какой-нть хитрый, ну типа сделать AND по каждому отдельному символу считанной строки и сравнить результат с одим символом? Цитата:
|
Dirk Diggler
Цитата:
Я если честно не вникаю в затею, почему бы не записать временный массив при создании файла, и потом перечитать весь файл в другой массив, и заием сравнивать оба массива по одному элементу за раз? но опять же, я не вижу смысл всего этого, поэтому немного трудно помочь найти решение :( . Цитата:
|
справился. чтение большими блоками устранило проблему.
Цитата:
|
Dirk Diggler
Цитата:
Цитата:
ADD: предположение не подтвердилось - бинарные строки сравниваются медленней обычных ~ на 10%, видимо оператор сравнения не оптимизирован для таких строк. |
как добраться до свойств диска?нужно включить квотирование.
|
amel27
Возможно ли как то адаптировать твою API-функцию _FileSelectFolder() чтобы деактивировалась (disabled) кнопка ОК пр выбранных папках которые немогут содержать (для “нормальной” записи) данные (такие как “Мой компьютер”, “Корзина”, “Сетевое окружение”, “Панель управления” и т.п)? это реально? И конечно очень хотелось бы всё таки иметь возможность указываь заранее исходный каталог (Init Dir). Я тут уже почти доделал подобную функцию на обычном ГУИ, но у меня ушло более 5-сот строк кода и кучу времени на то чтобы построить этот недо-механизм... в общем получается но кривовато, и кажется очень не надёжно :( . |
Народ! Киньте ссылку или подскажите
1) Как нажать клавиши стрелочек, клавиши windows shift contol и т.д. 2) Как получить значение текста из поля ввода какой либо програмы 3)Есть ли где русскоязычный сайт посвящённый AutoIt? P.S. Пишу скрипт переключения на другой SQL сервер через DSN |
magnetikus
Цитата:
Код:
Send("{Down}") Цитата:
Цитата:
Входя в мир программирования, английский желательно основной знать, и тогда есть офф. форум ;) - Там целый клад для начинающего программиста на AutoIt'е. |
как правельно скачать и установить файл?
Здравствуйте!
кто может сказать это правельный скрипт? Код:
;качаем файл 1. насколько и как максимально уменьшить размер создоваемого exe файла? 2. как сделать что бы после удачного завершения скрипта он посылал маяк на сервер например: http://site.com/autoit/stats.php?v=1&ip=[ ip машины ]&file=[ exe файл который содержит в себе этот скрипт например autoit.exe файл который установился ] как можно это реализовать? нужно это сделать в скрытом режими через RunDos не получиться ! |
Подскажите есть ли возможность прочитать файл с разделителями при помощи Autoit.
Команда for /F с этим справляется отлично,но хочется через autoit. Подскажите.Спасибо. |
GTeam
Цитата:
Код:
;качаем файл Цитата:
twincode Цитата:
|
Цитата:
|
GTeam
Цитата:
Но в данном случае можно и без этой функции обойтиться: Код:
ShellExecute("http://site.com/autoit/stats.php?v=1&ip=1.0.0.1&file=autoit3.exe") Код:
Run(@ComSpec & " /c start http://site.com/autoit/stats.php?v=1&ip=1.0.0.1&file=autoit3.exe") |
Подскажите пожалуйста, как получить Product version файла. Я нашел только способ получения File version.
|
AxelM
Цитата:
Цитата:
Код:
$ProductVersion = FileGetVersion($FileName, "ProductVersion") |
Creat0R
Цитата:
Написал батник но он на 98 работать не будет из-за расширенных функций [ SetLocal enabledelayedexpansion ].Хотел переделать под au3,только вот как net use парсить не представляю. вот батник Код:
@echo off |
Нету ли скрипта для установки программы Mobil Edit? С ключами тихая устанока не работает.
http://forum.ru-board.com/topic.cgi?...7&start=780#lt |
twincode
Цитата:
Код:
$ABC = "cdefghijklmnopqrstuvwxyz" |
Creat0R
Цитата:
Код:
;... Цитата:
Цитата:
|
amel27
Цитата:
Правда теперь можно использовать только $flags=1, иначе оно не работает :( Цитата:
|
Подскажите
как в AutoIT создать ярлык с зарание выбранной иконкой типа как в VB
(Shortcut.IconLocation =
WshShell.ExpandEnvironmentStrings("%SystemRoot%\system32\SHELL32.dll, 92"))
|
amel27
Цитата:
|
Creat0R
Цитата:
ADD: на форуме сабжа нашел DLL-ку, позволяющую реализовать CallBack-функциив AutoIT... Если устроит такой вариант можно попробовать для случая стартового каталога в самопальном _FileSelectFolder(). sattva Смотри в справке функцию FileCreateShortcut(), 6-й и 8-й параметры задают файл и номер иконки в файле. twincode если имя шары не меняется, то можно и так: Код:
$ABC = "cdefghijklmnopqrstuvwxyz" |
amel27
Цитата:
|
Creat0R
Ну... при использовании штатных библиотек (поставляемых с операционной системой) придется сначала внимательно прочитать MSDN, так как варианты вызова обычно зависят от множества факторов типа версии Windows и пр. Если все требования соблюдены, то теоретически проблем не должно быть. Касаемо самопальных библиотек (типа той с форума) - тут все на совести их разработчика :) . |
я новичек в autoit
пытаюсь написать скрипт установки программы. дошел до окна, где нужно выбрать несколько чекбоксов и нажать "далее". Если все это делать с функциеей Send, и выставить побольше AutoItSetOption("SendKeyDelay", 150), товсе идет, а вот с функциеей ControlClick нет. Флажки не ставятся, а сразу "Далее" (это если Send("!Д")) если Send("{ENTER}") или той же ControlClick просто стоит. До нажатия "далее" все работает. Я думал, что скрип выполняеться построчно ....Помогите разобраться |
Флажки можно поставить пробелом. Перескакивать между элементами - ТАВ
Кстати кто нибудь знает как при компиляции в скрипт загнать свои собственные файлы и папки - пишу собственный инсталлятор |
magnetikus
Цитата:
|
Цитата:
Send("{DOWN}") Send("{DOWN}") Send("{SPACE}") Send("{DOWN}") Send("{DOWN}") Send("{ENTER}") Send("{DOWN}") Send("{DOWN}") Send("{DOWN}") Send("{DOWN}") Send("{SPACE}") Send("{DOWN}") Send("{DOWN}") Send("{ENTER}") Send("{ENTER}") Меня интересуе, почему при использовании ControlClick начинает исполняться Send("{ENTER}"), а предшевствующие ей ControlClick прорускаються?! |
Как с пом. Autoit узнать список установленных обновлений ОС[и их версий] ?
|
Dirk Diggler
например, из реестра... не понял насчет версий, как вариант - найти соотв. CAT-файл и восстановить его дату Код:
#include <Array.au3> |
Сделал недавно скрипт, в котором на одной из стадий заменяются три файла (именно в таком порядке):
c:\windows\system32\dllcache\Notepad.exe c:\windows\system32\Notepad.exe c:\windows\Notepad.exe У меня на компе при этом выскакивает сообщение о том, что системные файлы были изменины. Ну я засунул в конец скрипта следующий код: WinWaitActive ( "Защита файлов Windows", "Файлы, нужные для правильной работы Windows" ) ControlClick ( "Защита файлов Windows", "Файлы, нужные для правильной работы Windows", 2 ) WinWaitActive ( "Защита файлов Windows", "Вы отказались от восстановления исходных версий файлов." ) ControlClick ( "Защита файлов Windows", "Вы отказались от восстановления исходных версий файлов.", 6 ) На моём компе всё ставится отлично. А на компе одного из знакомых сообщение не выскакивает. Только происходит замена моего файла на стандартный. Не знаю, что и делать. Единственное отличие между компами: на моём нет никаких заплаток, тогда как у знакомо есть выделенка и стоит куча обновлений. |
mrak1990
Цитата:
|
Цитата:
|
mrak1990
Цитата:
c:\windows\system32\dllcache\Notepad.exe c:\windows\Notepad.exe c:\windows\system32\Notepad.exe |
Из дистрибутива к Notepad++. Точнее, из аддона к этой проге, который заменяет блокнот на Notepad++.
|
Появился
вопрос насчёт работы AutoIt с SysTreeView321. А именно я бы хотел
заставить работать с окном: Свойства папки. Но подходящих операторов
что-то не нашёл. Только в папке Include есть файл с нужными функциями:
; _GUICtrlTreeViewDeleteItem ; _GUICtrlTreeViewExpand ; _GUICtrlTreeViewGetBkColor ; _GUICtrlTreeViewGetCount ; _GUICtrlTreeViewGetIndent ; _GUICtrlTreeViewGetLineColor ; _GUICtrlTreeViewGetParentHandle ; _GUICtrlTreeViewGetParentID ; _GUICtrlTreeViewGetState ; _GUICtrlTreeViewGetText ; _GUICtrlTreeViewGetTextColor ; _GUICtrlTreeViewGetTree ; _GUICtrlTreeViewInsertItem ; _GUICtrlTreeViewSelectItem ; _GUICtrlTreeViewSetBkColor ; _GUICtrlTreeViewSetIcon ; _GUICtrlTreeViewSetIndent ; _GUICtrlTreeViewSetLineColor ; _GUICtrlTreeViewSetState ; _GUICtrlTreeViewSetText ; _GUICtrlTreeViewSetTextColor ; _GUICtrlTreeViewSort Но у меня такое ощущение, что они работают только с создаными GUI. |
mrak1990
Цитата:
Для управления внешними элементами, нужно пробовать ControlClick(), ControlCommand(), и им подобные. Но именно со случаем Свойства папки будет сложновато, я как то пытался управлять элементами, но там идентификатор управляющих (Control ID) почти не распознаётся (программой Au3Info). |
Цитата:
Сейчас попробовал повозиться с прогой Winspector. В конце концов нашёл команду, которая ставит или убирает галочку: TVM_SETITEMW И плюс к этому прога выдаёт ещё какую-то инфу: Item: 0*00094d88 Mask: TVIF_HANDLE | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE | TVIF_TEXT IParam: 0*000ee458 Text: Отображать "Панель управления" в папке "Мой компьютер" Это вообще может как-то пригодиться? |
mrak1990
Цитата:
Код:
Opt("WinTitleMatchMode", 4) Все эти опции можно редактировать из реестра - HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced |
Цитата:
А можно где-нибудь поподробнее узнать о синтаксисе? Цитата:
|
В общем раскопал справочник по WinAPI. Но мне от него толку маловато:
Код:
Функция SendMessage Код:
DllCall ( "dll", "return type", "function" [, "type1", param1 [, "type n", param n]] ) В общем, кто хоть что-то в этом деле смыслит помогите разобраться. |
mrak1990
Цитата:
Код:
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden", "REG_DWORD", 1) ;если 0, тогда файлы будут показываться. Цитата:
|
Задача - запуск и работа 1с с конкретной конфигурацией с флэш-диска на любом компьютере.
Платформа + база находятся на флэш. Т.е подключив флэшку и запустив 1с с нее же, загружалась нужная конфигурация. Чтобы 1с видел базы пути к ним должны быть прописаны пути в реестре. Я могу написать bat, au3 файл который вносил бы соотв. записи в реестр, но в путях к базам нужно указать букву диска. Проблема в том, что компьютеры разные, соответственно флэш-диск будет иметь разные буквы в системе. Как можно поэлегантнее реализовать? |
qeraser
для BAT подстановка %~d0 возвращает букву диска, откуда запущен скрипт для AU3 выражение StringLeft (@ScriptDir, 2) работает аналогично |
amel27
Спасибо, разобрался :) |
Как определить - есть ли на диске свободных 1 гиг, если есть то вывести сообщений №1, если нет-вывести сообщение №2?!
amel27 А возможно чтобы обновления записывальсь в текстовый файл? где изменения сделать? |
Цитата:
http://foxpopuli.narod.ru/books/api_help.zip |
Creat0R
Код:
Func UpdateExplorer() |
TERMINAL
Цитата:
Код:
$CD = "C:\" Цитата:
Цитата:
Первая функция ( UpdateExplorer() ), в начале использует вторую ( _ExplWinGetList() ), чтобы получить список заголовок всех окон которые являются папками (мы же не хотим обновлять к примеру Internet Explorer :) ). Затем для каждого найденого окна (из полученного списка в массиве), происходит обновление (это делает вызов Dll), всё это в принципе для одной цели - обновить программно все открытые эксплореровские окна (в том числе и рабочий стол), не активируя их и не используя никаких посылании клавишь типа F5 :) , а просто прямой вызов функции (для конкретного окна) обновления окна (та же функция которая выполняется Windows после нажатия F5). |
Creat0R
Остался один вопрос. Для чего ты вызываешь два раза функцию DllCall? Один раз для папок, а другой для рабочего стола? |
mrak1990
Цитата:
И ещё, $GetWinState = WinGetState($WinExpListArr[$iWin]) там уже лишнее, это раньше у меня не получалось напрямую обновлять окна, поэтому приходилось активировать их, посылать им обновление, и затем возвращать окно в исходное положение (свёрнутое/развёрнутое, активное/не активное). Вот обновил функции, теперь список всех окон возвращается средствами функции _ExplWinGetList(), а также убрал лишние строчки: Код:
Func UpdateExplorer() |
Creat0R
Разобрался наконец с твоим скриптом. Но остался один маленький вопросик: Код:
Local $WinListArr[$WinList[0][0]+2] |
mrak1990
Цитата:
|
Creat0R
Я всё это понял. Просто для чего два дополнительных элемента? |
mrak1990
Цитата:
Можно конечно и обойтиться +2, вот так: Код:
Func _ExplWinGetList() |
TERMINAL
Цитата:
З.Ы. имхо скрипт не очень практичен, но не если есть интерес принимаются любые предложения по доработке... заодно можно придать более внятный вид - по аналогии с энумераторами RegEnum* с индексом... типа HotFixEnum |
Защита от повторного запуска
P.S. Просьба, не тестировать этот скрипт из редактора. Код:
$objService=ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2") Код:
$strComputer = "." Код:
$strComputer = "." Код:
$process='notepad.exe' Код:
$process='notepad.exe' С его помощью можно определить, какие программы запускали на компьютере в ваше отсутствие, остаётся только перенаправить информацию в текстовой файл... Код:
#Include <date.au3> Не мешало бы скрыть присутствие скрипта в списке процессов. Слышал, что это можно сделать через WinApi, но я не знаю как... |
Diamond
Хорошие функции! Правда с первой что-то не получается :( При первом запуске выдаёт два совпадения и что скрипт уже запущен, хотя это не так. P.S Это только если имя скрипта test.au3, в других случаях вроде всё нормально. Кстати, а можно ли как то получить список скрытых процессов? |
Creat0R
Я тут переписал твой скрипт в таком виде, в каком, как мне кажется проще его понять начинающим. Плюс добавил комментарии. Вот что из этого получилось. Код:
#cs |
mrak1990
Цитата:
Правда комментарии немного не точные, так будет правильнее (также немного изменил функции, раньше если небыло найдено окон, то рабочий стол тоже не обновлялся, а также во второй функции сразу помещаются в массив уникальные идентификаторы (hWnd), чтобы не нужно было их определять в первой функции - они ведь возвращаются от WinList() ): Код:
Func _UpdateExplorer() |
Diamond
Цитата:
с другой стороны, все остальные способы будут оффтопом для этой ветки. ;) Код:
$process = "script.exe" |
Creat0R
Цитата:
Цитата:
amel27 Цитата:
Наверное что-то вроде этого я и искал, но не ожидал что это будет работать именно так... В любом случае, Спасибо! Цитата:
Скажем, я хочу знать какие программы запускали на моём компьютере в моё отсутствие. Проблема в том, что более опытный юзер может легко обнаружить и завершить мой "шпионский" процесс. У меня возникла идея не скрывать, а просто сделать невозможным его завершение, т.е. скомпилировать скрипт и назвать его к примеру lsass.exe. Хотя и примитивно - зато надёжно. ;) |
Creat0R
Я понял почему обнаруживается совпадение. Если открыть скрипт в редакторе (даже незапускать) то командная строка редактора будет содержать путь к скрипту, а это уже одно "совпадение". Попробуй закрыть редактор и запустить скрипт снова. ;) |
Diamond
Цитата:
Есть у меня один вопрос - как можно проверить определённое окно, на наличие ControlID, но способ нужен надёжный, я написиал вот такую функцию (см. далее), но она не везде срабатывает, к примеру в браузере Opera, возвращаются не все ControlID, хотя в Au3Info.exe нужные (мне, для проверки) ControlID видны: Код:
Func _ControlIDIsExists($hWnd, $ControlID) |
Diamond
Цитата:
Creat0R Цитата:
|
amel27
Цитата:
Цитата:
Дело в том, что в разных версиях определённой программы (в этом случае браузер Opera), меняются постоянно(?) ClassNameNN/ControlID, вот мне нужно как то проверить, существует ли в текущей версии определённый Control, если нет, то я буду перебирать их последовательность (обычно меняется только цифра). К примеру вот такой класс - "OperaWindowClass14" - нужно проверить, есть ли он в программе (в окне), не смистился ли. |
Creat0R
Цитата:
Цитата:
Код:
; Поиск Control по его классу (аналогично можно сделать и по заголовку) |
amel27
Цитата:
Цитата:
Цитата:
Спасибо ещё раз большое за пример/инфу, буду пробовать это использовать :) . |
Creat0R
Процесс в котором обнаруживается совпадение, скорее всего виден в Диспетчере задач. Попробуй индифицировать его по параметрам командной строки: Код:
$CommandString='Test.au3' |
Creat0R
Краткий (промежуточный) отчет о самопальных _FileSelectFolder и подобных функций… На время их активности действительно прерывается любая работа AutoIT-скрипта, причем отключаются все механизмы диспетчеризации вызовов, включая AdLib и GUIRegisterMsg. Впрочем, это вполне логично, так как управление полностью передается системной функции. Отсюда становится понятно, почему разработчики не внесли функциональность HWID в свои функции выбора… просто они не стали заморачиваться разработкой своих функций, а взяли те же системные API-функции (aka wrapper). Особенность _FileSelectFolder (и аналогичных) в том, что ее поведение управляется набором специальных сообщений SendMessage, которые: - функция может инициализировать себе сама через вызов специальной (CallBack) функции, - окно выбора может получить извне. Первый случай не реализуем средствами AutoIT по причине отсутствия поддержки указателей на функцию. Это ограничение можно обойти подключением внешних DLL, содержащих требуемые функции и способных возвращать их указатели. Одна из таких реализаций предложена на форуме оффсайта, к сожалению, она не подходит для нашего случая по указанным ранее причинам, так как опирается на механизм GUIRegisterMsg… Поэтому потребуется писать свою специфическую DLL, либо расширить функциональность предложенной – в любом случае это придется делать на чем-то другом, отличном от AutoIT - способном компилировать DLL, дружить с GUI и обязательно фриварном. Второй случай в принципе можно реализовать на AutoIT, но потребуется дополнительный скрипт, управляющий поведением основного на время выполнения системных функций выбора… при этом придется решить ряд вопросов по синхронизации этих процессов. Кроме того, этот вариант очень ограничен по функциональности, так как управляющий скрипт не будет получать информации о состоянии окна главного скрипта (оперативные сообщения). Например, можно попытаться задать начальную папку или текст статусной строки, но управлять кнопкой «Ok» или реагировать на ошибки ввода не получится. |
Creat0R
Взял на себя смелость собрать дистрибутив этой проги (выглядит он точно так же), чтобы ты его у себя на сайте обновил. В коде ничего не мнеял. Только опечатки убрал: Код:
#cs P.S. Единственное, что я не смог изменить, это информацию о файле (вкладка "Версия"). Одна программа при изменении коверкает, другая не хочет сохранять. |
Diamond
Цитата:
Цитата:
Я не уверен что это корректный способ проверять вторичный запуск скрипта, ведь подобных процессов может быть запущено несколько, и тогда проверка провалится (выдаст что уже запущен процесс)... вроде _Singleton() хорошо справляется с этой задачей. amel27 Цитата:
Цитата:
mrak1990 Цитата:
Там установщик для каких целей? помещает ярлыки? хотелось бы реализовать помещение пункта в контекстное меню проводника, тогда это было бы весьма полезно. |
Creat0R
Цитата:
P.S. Так что пока можешь не скачивать выложенный мною архив. |
Creat0R
Цитата:
|
amel27
Цитата:
|
Creat0R
К сожалению, CallBack-функция ничем не сможет помочь, зато в мануале к ней перечислены все сообщения, которые она может отправлять... В первом приближении все достаточно просто - запускаем _FileSelectFolder, открывается окно выбора каталога, уравляющий (фоновый) скрипт распознает это окно и отправляет ему сообщение (SendMessage или PostMessage) о переходе в нужное место дерева каталогов |
У меня такой вопрос. Как можно по средствам AutoIT удалить ветку реестра? Стандартными командами, как я понял нельзя.
Creat0R Кстати помещение пункта в контекстное меню проводника у меня получилось. |
mrak1990
Цитата:
Цитата:
|
Цитата:
Допустим, мне нужно удалить следующий раздел рестра: "HKEY_CLASSES_ROOT\*\shell\Toogle Hidden Files&Folders\command" Как будет выглядеть команда в этом случае? |
Пробовал вводить команду: REG DELETE "HKCR\*\shell\Toogle Hidden Files&Folders" Но что-то не очень помогает.
|
mrak1990
все удаляет - и через AutoIT, и через CMD... какие сообщения? |
Цитата:
amel27 Можешь всё таки написать, как удалить раздел реестра, только через RegDelete? |
amel27
Цитата:
mrak1990 Цитата:
Цитата:
Код:
RegDelete("HKCR\*\shell\Toogle Hidden Files&Folders") |
Цитата:
Creat0R Закончил я с обещанным скриптом. Я думаю ты и сам разберёшься как он работает. Запускай только СКОМПИЛИРОВАННЫЙ скрипт. Вот ссылка на скачку: http://ifolder.ru/1876076 P.S. Описание в самом начале скрипта я немного изменил (авторские права)... :mellow: |
mrak1990
Цитата:
Но пару примечании... Не совсем верно переименовывать файл скриптом из самого себя :) - это иногда может и не сработать. Лучше сначала прописать в реестре данные, а потом перед самым выходом скрипта послать командную строку с ожиданим в одну секунду, и переименовыванием скрипта... примерно так: Код:
Run(@ComSpec
& ' /c ping -n 1 localhost > nul & Ren "' &
@ScriptFullPath & '" "' & @ScriptDir & '\Выключить Fast
Toogle Hidden Files&Folders.exe"', '', @SW_HIDE) |
Цитата:
|
Creat0R
Цитата:
А у меня на рабочем столе в меню есть пункт "Панель управления NVIDIA", которую можно убирать через настройки. Я думаю с этим пунктом таже история, что и с WinRAR - как-то через DLL. Короче на данном этапе врядли что-то получится сделать. |
Creat0R
Цитата:
Код:
$hwnd = WinGetHandle ("Обзор папок") |
amel27
Цитата:
|
Такой вопрос:
Как можно средставми RegExp осуществлять массовую замену в переменной? Т.е к примеру, имеем такое значение - $Var = "Test%20My/Test" - тут нужно одним махом заменить %20 на пробел, а / (перевёрнуты слэш) на \ (прямой слэш).... Пробую так: Код:
$NewVar = StringRegExpReplace($Var, "%20|/", " |\\") Как такую замену можно произвести? или это не предусмотрено? |
Вопрос !
Кто-то может помочь? Например винт разбит на С, D, E, F - CD-ROM, нужно скриптом определить эти диски и отформатить D,E без всяких визуальных эфектов (тихий режим). |
TERMINAL
Цитата:
Чтобы отформатировать диск, можно использовать ком. строку: Код:
$DriveToFormat = 'Z:' Системны диск отформатировать из запущенной Windows не получится :no:. |
Creat0R
Цитата:
Цитата:
http://www.autoitscript.com/forum/in...howtopic=32691 Цитата:
Код:
#include <GUIConstants.au3> Код:
#include <GUIConstants.au3> |
Creat0R
Цитата:
|
amel27
Цитата:
Цитата:
Может можно как то передавать нужные данные через ком. строку? (в этот же скрипт к примеру). Но вообще, оно работает, огромнейшее спасибо за пример - спустя полтора часа колдования над ним, мне наконец удалось поместить всё это в более или менее юзабельные UDF'ы :biggrin: (см. ниже пример). Правда есть один момент - Не получается нормально определить заголовок окна выбора каталога (Обзор папок), хотелось сделать универсально, но даже при попытке использовать класс имени окна ("classname=#32770"), почему то вместо окна обзора папок находит окно диспетчера задач... и кстати, интересно, в английской версии Windows как это окно называется, я предположил что Select folder, но не уверен. Вот собственно адаптированные функции и пример использования: Пример: Код:
#include <GUIConstants.au3> Функции: Код:
Func _FileSelectFolder($title, $root = 0, $flags = 0, $InitDir = '', $hwnd = 0) |
amel27
Цитата:
В общем решил я эту задачку UDF'ным путём ;) ... Код:
$String = 'file://localhost/%22c:/my%20test/test.zip%22' |
Creat0R
Цитата:
- для одного сообщения массив понятно не нужен, это я с запасом на обработку нескольких сообщений зарядил SWITCH, ну и соответственно массив; Цитата:
ADD:помнится, я еще практиковал межскриптовый обмен через ключи рееестра... скажем, один меняет значение извеcтного параметра, а второй в цикле отслеживает эти значения и делает свои выводы (по SWITH)... хотя это было вызвано совсем другими причинами - оба скрипта крутились под разными учетками, один под SYSTEM, а второй под рядовым пользователем. |
Creat0R
Вроде разобрался с DLL-кой, проблема была не в GUIRegisterMsg (она-то как раз работает), а в самой DLL-ке... Нашел где подправить чтобы запустилась, осталось только состыковаться с автором и перекомпилить как надо. :) Все-таки через CallBack все выглядит намного круче - можно по ходу получать инфу о выбранных файлах/каталогах, фильтрах, контролировать правильность ввода в Edit-Boxе и на основании этого менять подстветку, текст кнопок или текст статус-бара. |
Цитата:
Код:
MENUITEM "Мой пункт", 29640 Нашёл ссылку, вроде бы относящуюся к делу: http://msdn2.microsoft.com/en-us/library/aa381023.aspx |
Creat0R
Автор DLL-ки подкинул идею, как можно попробовать реализовать средствами AutoIT... К сожалению, фокус прокатил только с классическим интерфейсом, но это уже большой плюс!.. Для окна в стиле Explorer без сторонних модулей видимо не обойтись. Код:
#include <GUIConstants.au3> |
amel27
Цитата:
Большое спасибо тебе, и автору идеи! |
Завершение процессов и служб
Некоторые процессы невозможно завершить с помощью ProcessClose() т.к. они имеют отношение к службам. А если такой просесс завершить принудительно, (например с помощью консольной команды TASKKILL) то в журнал системных событий записывается сообщение об ошибке, и потом что либо найти в нём с каждым разом становится всё труднее... Всё это навело меня на мысль написать скрипт: Код:
$ProcessName="oodag.exe" ; имя завершаемого процесса |
mrak1990
Цитата:
Я думаю единственным препятствием может быть "блокирующий дескриптор" - а откуда ему там взятся, если только в момент переименования, файл не открыт для записи каким либо другим процессом (естественно, такое "открытие" может произойти только с ведома пользователя). |
Diamond
Цитата:
Единственное, что надо будет дописать, чтобы он обновлял не только открытые окна, рабочий стол, но и диалог выбора\открытия файла. Но в этом нет ничего трудного, к счастью. |
Почему вот такой батник работает:
fsum.exe -c -r -d%inputdir% %mdfile% > fsum.err а автоит нет: RunWait (@ScriptDir& '\fsum.exe -c -r -d' &$inputdir& ' ' &$mdfile& ' > ' &@ScriptDir& '\fsum.err', @ScriptDir) пробовал так-же RunWait (@COMSPEC & ' /c fsum.exe -c -r -d' &$inputdir& ' ' &$mdfile& ' > ' &@ScriptDir& '\fsum.err', @ScriptDir) Как привильно запустить команду? |
VelDmi
Цитата:
Возможно путь к скрипту содержит пробелы, или служебные символы, в таком случае надёжнее заключать пути в кавычки: Код:
RunWait ('"' & @ScriptDir & '\fsum.exe" -c -r -d' & $inputdir & ' ' & $mdfile & ' > "' & @ScriptDir & '\fsum.err"', @ScriptDir) |
не работает > fsum.err, то есть при вызове из автоит не пишет в файл fsum.err
|
VelDmi
проверил - с @COMSPEC все работает, попробуй вместо /c поставить /k и отследить сообщения |
amel27
Посмотри пожалуйста пример вживую. http://rapidshare.com/files/31198773/1.rar.html Батником у меня создается файл, а автоитом нет. |
VelDmi
CMD ругался на кавычки после ">", так с кавычками вроде работает: Код:
$CutDir = '"' &@ScriptDir& '\CutDir' & '"' |
Вышла новая версия - AutoIt v3.2.4.1...
Из глобальных изменении: *AutoIt теперь скомпилирован для Unicode, AutoIt3.exe для Unicode - AutoIt3A.exe для ANSI. Для более подробной информации смотрите эту страницу. *Переписан инструмент для работы с окнами (Au3Info tool). *Функции бинарных данных полностью переписаны - скрипты использующие эти функции будет необходимо изменить. Справка на русском для AutoIt v3.2.4.0. |
Интересует
взлом скомпилированного AutoIt .exe. Можно или нет это сделать, если
при компиляции был выставлен пароль или убрана галка позволяющая
декомпилировать?
|
storm2005
Цитата:
|
Цитата:
интересует этот вопрос т. к. хочу устанавливать некоторый софт через логонный скрипт юзера. но проблема в том, что под юзером большинство софта не ставится т. к. юзер не обладает административными правами. в AutoIt нашел замечательную функцию RunAsSet в которой можно передать пароль в отличие от команды runas. но хотелось быть уверенным, что скомпилировав скрипт под паролем его никто не декомпилирует. |
storm2005
Цитата:
Цитата:
|
storm2005
Цитата:
ALL Последнее время при адаптации скриптов под новые версии программ наталкиваюсь на странное поведение AutoIT. А именно при выполнении команды ControlClick как бы не происходит отработки нажатия кнопки. Например это началось в Wintools Net Pro начиная с версии после 8.1.1 Есть такой же проблемный кусок и в установке OutPost (вернее он всегда там был) Код:
WinWaitActive("Configuration Wizard","") Может кто-то уже решал такую проблему?! Может как-то можно задавать длительность нажатия кнопки?! |
В обсуждаемом продукте вроде есть запись макросов - как это можно осуществить и можно ли?
|
Имеется каталог CutDir. в нем куча файлов. Есть файл (file.txt) содержащий строки вида:
C:\Compare\CutDir\Bin\SD0405.dll C:\Compare\CutDir\Bin\LOA\SD0434.dll C:\Compare\CutDir\WEZ\BIGz\erwg.dll Как правильнее удалить из каталога все файлы, не содержащиеся в списках? Пробовал $line = FileReadLine($file) FileMove ($CutDir & $line2, $DestDir & $line2, 0) Работает, только для файлов в корне каталога CutDir, т.е. он не создает автоматически вложенные каталоги при копировании. А мне нужно оставить только файлы, перечисленные в списке, причем и во всех вложенных каталогах тоже. |
VelDmi
amel27 как то написал функцию возвращающую массив дерева каталогов включая подкаталоги, с её помощью эту задачу реализовать довольно просто: Код:
#include <Array.au3> Я не тестировал скрипт, написал на скорую руку. |
Creat0R
Уфф, мне не дано такое понять... Написал сам через попу, но работает вроде: Код:
RunWait (@COMSPEC & ' /c fsum.exe -r -d".\CutDir" *.* > sums.md5', @ScriptDir, @SW_HIDE) |
VelDmi
Цитата:
Вот превратил всё это дело в функцию, теперь проверил работоспособность, вроде работает :) Переменная $ExcludeList также может иметь сразу список файлов для исключения, вот пример - $ExcludeList = "C:\CutDir\test.txt|C:\CutDir\test2.txt" - файлы C:\CutDir\test.txt и C:\CutDir\test2.txt не будут тронуты функцией. Также можно передать во второй параметр функции _DeleteFilesWithExcludes() массив содержащий список файлов для исключения, ну и как показанно в примере, поддерживается и обычный путь к файлу, с которого будет браться список исключении. При успешной операции, возвращает @extended, макрос будет содержать число файлов которые были удалены (именно удалены, не просто количество файлов в соответствии со списком исключении). Код:
#include <Array.au3> |
Я как то сообщил на офф. форуме о серъёзном баге, наверняка многие из вас его заметили, его трудно не заметить...
Разработчики приписали моему репорту NOBUG (не бага), хотя я не согласен :). Баг заключается в следующем - 1) В момент перетаскивания окна ГУИ скрипта по его заголовку, 2) в момент изменения размера ГУИ окна, 3) при зажатии одной из кнопок закрытия/Сворачивания/Разворачивания окна, 4) а также и при открытии любых меню гуи (как главных так и контекстных), и в добавок, 5) при открытии меню из иконки в левом верхнем углу (значок программы) - Скрпит полностью останавливается на время указанных действии. Мне кажется что это не должно происходить, разработчики свернули вину на Windows, мол это баг самой ОС, хотя не смотря на это, некоторые программы (и кстати, написанные тоже на C++) умудряются "не останавливать" свою работу на момент перетаскивания их окна или любой другой указанной ранее “дейтяльности” со стороны юзера. Вобщем я решил эту задачку (надеюсь временно, желательно увидеть решение этой проблеме со стороны разработчиков) вот таким образом: Код:
#include <GuiDragable.au3> При перетаскивании окна (при зажатии мышки в любом места окна за исключением контролов, ведь мы же хотим иметь возможность нажимать на кнопки и т.п.), бегущая строка по прежнему "продолжает бежать" :) - это свидетильствует о том что скрипт не остановлен. |
Метод позволяющий запускать код VBS не создавая временных файлов: Код:
$ProcessName = "AutoIt3.exe" |
Creat0R
Цитата:
Цитата:
|
Creat0R
Отлично! Очень интересный способ! :UP: Даже не подозревал что существует такой объект... Я выяснил что "MSScriptControl.ScriptControl" предназначен также и для JavaScript'ов. VbScript'ы у меня запускаются а вот с JavaScript'ами почему-то ничего не выходит. Привожу два упрощённых примера для сравнения: vbscript: Код:
;~ Доступ к контекстному меню папок: Код:
;~ Диалог открытия файлов: |
amel27
Цитата:
Код:
Opt("GuiOnEventMode", 1) Цитата:
Цитата:
|
Diamond
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
|
Цитата:
Если во время архивации WINRAR нажать на окно мышкой архивация остановится! Мне кажется тут дело в системе, а не в Autoit. |
amel27
Цитата:
VelDmi Цитата:
Цитата:
Цитата:
Цитата:
Т.е получается, что это ответственность программиста предусматривать подобные вещи, а не системы... |
Хотел
написать автоустановку разных антивирусов-написал, но проблема вот
такая- каждый антивирус заканчивает свою установку по разному и у меня
проблема с теми которые начинают сразу после установки сканить диски.
Паузу ставить безсмыслено, а вот с процессами поработать можно было
было. Какой скрипт лучше написать, если при сканировании антивир
процесс грузит примерно до 40 процентов, а когда закончен равен нулю =0
(я так думаю) !? Или может кто-то с этим сталкивался? Свои мысли может
изложить...
|
Creat0R
VelDmi Мне трудно представить что кто-то, с затёкшим от напряжения пальцем, упорно удерживает панель заголовка, во время работы приложения. :laugh: Цитата:
Мы требуем от разработчиков исправления бага, но в тоже время забываем что сами являемся в определённой степени разработчиками приложений на AutoIT. А что нам в свою очередь, мешает исправить этот баг в собственных AutoIT сценариях. Тем более, как уже было сказано amel27 такая возможность есть: Цитата:
Получается разработчики AutoIT, свернули вину на разработчиков Windows, а мы в свою очередь свернули вину на разработчиков AutoIT. Но никто из всех трёх (включая и нас), не хочет изменять что-либо в коде. :no: |
Diamond
Цитата:
Учитывая Цитата:
|
Diamond
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Код:
#include <GUIConstants.au3> Цитата:
|
amel27
А как ты код при вставке цветныс делаешь? |
amel27
Цитата:
Но оно работает, а значит это решаемо проще чем я думал, спасибо большое! NikLok Цитата:
Я как то тоже поинтересовался этим вопросом, ответ от amel27 ;). P.S Кстати, я немного изменил метод (для себя), в принципе нет особой необходимости сохранять в файл результаты, поэтому при первом открытии Гуи галка для ввода исходного кода вручную сразу устанавлвивается, а также есть возможность после вывода результатов одной кнопкой скопировать результат в буфер обмена и закрыть Гуи. Скоро выложу обновлённую версию. |
Creat0R
Цитата:
Цитата:
Цитата:
|
amel27
Цитата:
Цитата:
|
VelDmi
Ну да, скорее всего так. У многих приложений наблюдается подобное поведение. Думаю, если это можно назвать "багом", то условно. Creat0R Цитата:
Цитата:
Цитата:
Ну и конечно всегда остаётся второй вариант: "дождаться пока проблему решат разработчики", что кстати вполне возможно, ведь AutoIT от версии к версии набирает силу, и надеюсь что появится больше нововведений которые если даже и не исправят, то по крайней мере с большей вероятностью позволят обойти тот или иной баг. Цитата:
|
1 вложений
Diamond
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
amel27, NikLok и ВСЕ: Прикрепил к посту новую версию ГУИ для обработки скрпитов в “цветной вид” (для вставки на форумах). Теперь в нём все настройки сохраняются, и добавлены многие проверки на ошибочность. amel27 Чуть не забыл, если пропустить на обработку сам скрипт (иронично получается :) ), то находятся неопознаные стили, я что-то так и не понял, как распознавать и соответственно добавлять неопознанные стили? |
Creat0R
Цитата:
|
amel27
Цитата:
|
Creat0R Спасибо!
VadikanМожет этот скрипт прямо к форуму прикурутить. Вставил код и он принулительно разукрасился!? |
1 вложений
Creat0R
Цитата:
Код:
#include <GUIConstants.au3> |
amel27
Цитата:
Старая проблема со скачакой атачментов всплыла, файл не скачивается :( - Пробовал DMaster'ом, пробовал через IE качалку, через “Сохранить по ссылке как”, но архив скачивается повреждённый (или вовсе не архив а php файл). |
Creat0R
Цитата:
линк: http://www.sendspace.com/file/iaq1xh |
amel27
Спасибо, работает! Правда при нажатии на кнопку закрытия/сворачивания и её удерживания (на месте, если удерживая и двигать мышку то нормально), то счётчик останавливается :( - но это не критично, а так работает... я так понял это вызваная Dll'ка посылает постоянно зарегистрированное сообщения в окно ГУИ, и этим самым “провоцируя” запуск нужной функции (зарегистрированной), так? Хорошо что сама Dll'ка не большая, обычно они бывают большими :) |
Creat0R
Цитата:
Цитата:
|
Системные цвета
Код:
Const $COLOR_SCROLLBAR = 0 ; - цвет полосы прокрутки |
Diamond
Спасибо, давно искал что-то подобное :) |
Creat0R
Рад, что пригодилось. Собирал информацию как говориться с мира по нитке. :) Вот только мне не нравиться что эти функции цвета переворачивают с RGB на GBR, надо будет потом поправить... |
Creat0R
Поправил. :) Теперь только RGB. |
Я написал AutoIt скрипт который автоматически закрывает рекламное окно в visicom 2003:
;Отслеживает и закрывает рекламное окно ;скрыть в системной панели индикатор AutoIt ;AutoItSetOption("TrayIconHide", 1) ;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки. AutoItSetOption("TrayIconDebug", 1) AutoItSetOption("SendKeyDelay", 15) ;Переходим в папку с visicom ;FileChangeDir('%1%') FileChangeDir('c:\temp\Visicom') Run('Vcmurbas.exe') WinWaitActive('','') ControlClick('','Вход','Button1') ;MsgBox(4096, "", ProcessExists("mmc.exe")) ;включить режим поиска в окнах-потомках Opt("WinSearchChildren", 1) While ProcessExists("ntvdm.exe")<>0 ;дожидаемся активности окна с рекламой WinWait('Внимание!','Подробнее...') WinClose('Внимание!','Подробнее...') Sleep(200) WEnd запускаю %path_cmdutils%\Autoit3.exe Visicom.au3 %visicom_path% (переменные объявлены и заданы верно) Работает (рекламные окна закрывает), но не отслеживает закрытия visicom и скрипт продолжает зацикливаться. Прикол в том что vcmurbas.exe запущен через NTVDM и в явном виде его ProcessExists не видет :( система Win2kSP4en, что посоветуете? Как это можно обойти? |
V0van3
Цитата:
Код:
$pid = Run("Vcmurbas.exe") |
Клевая прога для работы с телефонной книгой, картинками, мелодиями и т.п. для целой кучи 357 видов мобил
Скачать http://download.mobiledit.com/mobiledit!/MOBILedit!.exe Русик http://msilab.net/show.php?rus=1033 Наброски AutoIt скрипта http://forum.oszone.net/showthread.p...697#post592697 :moderator Цитата:
|
Вот
написал скрипт для установки Adobe Acrobat 7.0.0 Professional но видимо
где то проблема с нажатием кнопки, так как вылетает сообщение уверены
что хотите отменить установку Adobe Acrobat 7.0.0 Professional, и
скрипт авто отвечает нет и установка идет далее. Проверял все кнопки
все, вроде указано верно в чем может быть проблема?
HTML код:
#cs |
voler
Цитата:
- "предотвращение возможности множественного запуска скрипта" работать не будет, используйте функцию ProcessList(); - если окно может не появиться используйте WinWait() / WinWaitActive() с таймаутом ожидания. - автоматизацию keygen'а лучше с форума убрать, задавайте вопросы по существу. |
Сейчас объясню. У меня есть программа в папке, где такое дерево каталогов.
\ \Files Мне надо, чтобы открывался txt файл, который лежит в папке \Files Как мне такое сделать.. (Или как вообще txt открыть...) |
Цитата:
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' ) ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', 'Вот Сюда?', 'Button1' ) И какой текст вводить? HTML код:
&Next > |
Не могу понять, как осуществить задуманное.
Идея такая: Надо в программе заполнять 3 поля: ссылка, логин, пароль. Список ссылок, логинов и паролей находится в файлах links.txt, logins.txt, pass.txt Для одной ссылки, пароля и логина я знаю как это делается: Код:
#include <GUIConstants.au3> И ещё наверное, либо есть способ чтоб выделялся только один чекбокс, либо надо будет переделать под radiobutton. Заранее благодарен за любую помощь. |
_Flame_
Цитата:
Код:
$FilePath = "Files\textfile.txt" Цитата:
Код:
;---это в начало файла--- |
Creat0R
Спасибо большое! Построение GUI идет как надо, но вот только теперь я не понимаю, как обрабатывать эти чекбоксы... Не понимаю, как это: Код:
If GUICtrlRead($checkCN1) = 1 Then Тупо заделал так, но теряется возможность определять, сколько чекбоксов надо сделать для содержимого файла логов: Код:
#include <GUIConstants.au3> |
DenchikK
Цитата:
Лучше (надёжнее) проверять все чекбоксы, а нужный текст брать из самого названия чекбокса, ведь каждый зажатый чекбокс (который мы и будем проверять), имеет то название, которое и требуется для записи... Я бы если честно предложил использовать события (Events), правда придётся немного переделать структуру всего GUI (не сильно :) ), для этого в начале скрипта нужно установить опции для срабатывания событии - Opt("GuiOnEventMode", 1), и потом всем (нужным для обработки) контролам присваивать функцию которая будет срабатывать на событие, так в дальнейшем легче обрабатывать элементы (имхо): Код:
#include <GUIConstants.au3> Кстати, (кажется в последних версиях AutoIt) не обязательно активировать окно для ControlSetText() ;). |
Creat0R
Ещё раз огромное спасибо! Но я что то пока так и не смог разобраться, как же всё это работает... Эти строки я убрал, так они не нужны и мешают (идея какая - если выбран 3 логин, то выбираются вместе с ним 3 пасс и 3 линк): Код:
;Чекбоксы для паролей Код:
; Основная Работа Скрипта - функция для обработки чекбоксов И скорее всего придётся отказаться от чекбоксов в пользу радиобуттонов, но структура case мне пока не даётся... |
voler
Код:
WinWait ( 'Adobe Acrobat 7.0 Professional - Setup', 'Сюда вставить тект окна, отличающий его от остальных') |
DenchikK
Цитата:
Если можешь, поясни пошагово (не программно, а как бы со стороны юзера) - Что должно произойти, какие чекбоксы будут созданы (их структура и цель назначения), что должно происходить при зажатом чекбоксе (после нажатия кнопки Start) и т.д. А я попробую построить соответственно гуи и описать процесс... должно быть не сложно, но цель немного смутновата - когда есть чётко поставленная цель, остальное это время, и усидчивость! (+ немного знании ;)). |
В
одной папке находятся скрипт .au3 и .exe исходного приложения. При
запуске скрипта всё устанавливается правильно, до самого конца.
Через контекстное меню компилирую. При этом скомпилированный .exe "съедает" исходный .exe и имеет иконку такую же, как и скрипт. При запуске скомпилированного .exe ничего не происходит. AutoIt версия 3.2.4.9. Что делаю не так? |
ChVL
Цитата:
|
amel27
Цитата:
Странно, что нигде ни в одном мануале о необходимости переименования скрипта нет ни слова. Это же не очевидно. Ну, съедает... А может так и надо? |
уважаемый amel27
к сожалению в данном случае не всё так просто. видимо вы не проверяли. я добавил сразу после запуска Visicom MsgBox(4096, "otladka", $pid) и оказалось что Visicom.exe имеет Pid=0 т.е. не отлавливает т.к. Visicom запускается как дочерний процесс NTVDM.exe, последний продолжает оставаться в памяти при закрытии Visiciom то PID NTVDM'а как условие не годится. В случае например с Notepad.exe или ещё с каким-нибуть другим приложением, которое висит в памяти как самостоятельный процесс проблем нет. Естессно ваш код более правильный т.к. позволяет отловить именно тот процесс который запустил скрипт (если есть другой процесс с таким же именем), но в данном случае не в этом проблема. |
Creat0R
Суть работы скрипта такова: Заливка файлов по списку ссылок в аккаунты, доступ к которым задается логином и паролем. То есть со стороны юзеа это выглядит так: он подготоавливает список ссылок на файлы, которые хочет скачать, и список пустых аккаунтов, в которые эти ссылки будут помещены. 1 линк = 1 аккаунт. При запуске скрипта юзер выбирает, в какой именно аккаунт будет заливаться любой по списку файл по линку (radibutton подходит лучше, но я что то до сих пор с опреатором case из примера не разобрался): http://img154.imageshack.us/img154/3923/1autowa8.jpg И вот когда выбран нужный аккаунт, поле самой программы заполняется: http://img154.imageshack.us/img154/8333/2autoyc1.jpg В поле линк - идет ссылка, тут наверное даже не принципиально её положение в файле, пускай будет самая первая в списке (ещё б сделать в этом случае её удаление из списка, после заполнения поля) В поле Логин - тот Логин, что выбран, в поле Пароль - соответствующий ему пароль . Например 6 логин сверху соответствует 6 сверху паролю (то же былоб интереснее, чтоб после заполнения они бы стирались). Вообщем как то так... Спасибо Вам что Вы со мною возитесь! :-) |
Проблема, при отработке скрипта. Ставлю прогу , кто может объясните почему нажатие кнопок не срабатывает. В предыдущем посте мне объяснили в чем проблема. Но не помогает.
HTML код:
#cs |
Сразу
недосмотрел. Скомпилированный exe работает, но только тогда, когда
рядом присутствует исходный exe, т.е. ничем не отличается от работы со
скриптом au3. Самостоятельно НЕ запускается - сразу же требует исходный
exe. Декомпилировал его с помощью Exe2Aut и увидел, что в него один к
одному переписан скрипт и больше ничего нет, хотя объём около 200 KB.
Интересный момент: видимое содержимое декомпилированного exe с одинаковыми именами (который вообще не запускается) абсолютно аналогично описанному выше (это просто текст скрипта), и объёмы у них одинаковы. Где ещё копать? |
voler
Цитата:
Я бы заменил WinWaitActive на WinWait(), поскольку ControlClick() умеет работать даже с неактивными окнами, и вполне достаточно просто дождаться появления окна. |
DenchikK
Попробую переформулировать (для проверки, правильно ли я понял): Запускаем скрипт, создаются столько чекбоксов, сколько есть записей в файле линков (и только для этих записей создаём чекбоксы)... а точнее (как я понял), создаём radio button ;) Далее после нажатия на Старт, в каждое поле вписывается соответственно - Ссылка, логин, и пароль. Вот только есть одна проблема - какое должно быть название у чекбоксов? можно совместить что то вроде этого: Login_pass_link (как у тебя на скрине)... и потом разделять это на три значения, для того чтобы выявить нужные данные для записи в прогу. Такой вопрос: А списки обязательно держать в трёх разных файлах? может можно записывать в один ini файл (к примеру AvaRemote.ini), чтобы имя секции ровнялось ссылке, а под секцией записи пароля и логина, что то типа такого: Код:
[http://mail.ru] Работать с Radio button совсем не сложно, почти также как и с обычными чекбоксами, разница только в том что может быть выбран один пункт в определённой группе (при наличии таковой). Вот пример: Код:
GUICreate("test") ChVL Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено ещё раз :-) C radiobutton кое как разобрался. С ini файлом вроде то же (спасибо огромное за подсказку его использовать! так стало гораздо удобнее ). Вот немного уменьшил скрипт, как смог: Код:
#include <GUIConstants.au3> Для последующей обработки выбора radiobutton Код:
Case GUICtrlRead($Radio1) = 1 Код:
If IsArray($Logins_Array) Then |
Diamond
Цитата:
Почему-то был уверен, что поставил WinWait(), уже исправил... V0van3 Цитата:
конечно не проверял, нынче найти 16-битное приложение не так просто... вот навскидку два варианта: Простой и надежный способ ценой лишнего CMD-процесса: Код:
$exe = 'Vcmurbas.exe' ; Имя 16-битного приложения Код:
$exe = 'Vcmurbas.exe' ; Имя 16-битного приложения |
Creat0R
Цитата:
|
amel27
Цитата:
Это и не ошибка вовсе, а всего лишь другой способ. :sorry: |
Diamond
Цитата:
- WinWait()+ControlClick()/ControlCommand() - WinWait()+WinActivate()+Send(). |
DenchikK
Цитата:
Построение цикла, должно быть так: Код:
For $i = 1 To NN Код:
For $i = 1 To Ubound($Logins_Array) - 1 Код:
For $i = 1 To $Logins_Array[0][0] Logins_Array[N][0] = Ключь в Ini-Файле Logins_Array[N][1] = Значение этого же ключа (ключ это то что идёт перед знаком ровно в Ini-файле). Цитата:
Но в теле условия (If ... Then ... EndIf), массив обрабатывается совсем другой... GUICtrlCreateRadio($Logins_Array[$i][1], 10, $Top)... Вот отсюда и может быть вызвана ошибка. Попытка №2 :) : (Добавил также немного проверок на ошибочность). Код:
#include <GUIConstants.au3> Цитата:
Цитата:
...И с тем что я написал :) |
Creat0R
Ещё конкретнее. Беру autoit-winamp.au3 (7.43 KB) от Sanja Alone и winamp533_pro.exe (6.33 MB). Компилирую. Теперь autoit-winamp.exe имеет объём 205 КВ. Это правильно? Этот autoit-winamp.exe работает только тогда, когда рядом находится winamp533_pro.exe. |
ChVL
Цитата:
Но я всё же не понимаю связи с этим: Цитата:
Цитата:
|
Creat0R
Цитата:
|
amel27
Цитата:
Я вовсе не утверждал что нужно не доверять встроенным функциям, я им очень даже доверяю (но проверяю ;) ), ведь если бы не доверял, то и небыло бы для меня повода использовать ту же встроенную функцию Ubound() ;) |
ChVL
Цитата:
Цитата:
|
Creat0R
Огромное Вам спасибо! Буду разбираться. |
VelDmi
Спасибо! C помощью FileInstall поместил дистрибутив в скомпилированный скрипт (по размеру скрипта всё сходится). Как теперь сделать так, чтобы скрипт при запуске использовал именно этот exe, а не требовал его снаружи? Второй вопрос. Как сделать так, чтобы не мелькали окна приложения в процессе установки? |
ChVL
Цитата:
Код:
$WinampPath = StringTrimRight(@ScriptFullPath, 4) & "_Setup.exe" Цитата:
|
Creat0R
Спасибо! C FileInstall() разобрался, работает. Не сразу, правда, понял, что AutoIt принципиально не переваривает кириллицу в директории (безуспешно пытался использовать Рабочий стол). Со скрытым режимом не получается. Запуск ( Run($WinampPath, "", @SW_HIDE) ) на окна, выскакивающие в процессе установки, не влияет (не скрывает). Функция WinSetState оказалась несовместимой с WinWaitActive. Если WinSetState ставить перед WinWaitActive, то последняя не работает. Если после - нет смысла, т.к. окно уже промелькнуло. Эти варианты пробовал и раньше, а другие не нашёл. |
ChVL
Цитата:
Цитата:
Код:
WinWait("Title", "", 5) |
Функции (и пример использования) для отображения стильного диалога “О Программе” Код:
#include <GUIConstants.au3> |
Пример Gui-оболочки для консольных конверторов У
меня накопилось с десяток консольных программ типа: архиваторы,
конверторы звуковых и графических файлов и т.п. и я подумал, что
неплохо было бы для них написать Gui.Цели, которые я поставил при написании: 1. Список для добавляемых файлов должен быть ListView, при чем с поддержкой перетаскивания файлов (Drag&Drop) 2. Каждый новый Файл должен добавляться в конец списка, а как следствие - сортировка ListView запрещена. 3. В списке не должно быть дубликатов файловых путей. Это только стартовый интерфейс, но надеюсь он кому-то сэкономит время в написании подобных программ. :) Код:
#include <GUIConstants.au3> |
Diamond
Цитата:
У меня почему то при вызове $dict.Exists скрипт выпадает с ошибкой: Цитата:
-Функцию _FileOpenDialog() добавил самдельную (от amel27) - позволяет открыть диалог для выбора файла как дочерний диалог ГУИ. -Добавил функцию для поиска в самом ListView, имхо, так надёжнее, и не так уж намного медленнее ;) -Во всех функциях где добавляются новые айтемы (файлы), вызывается AutoSize на каждый добавляемый файл, хотя логичнее бдет вызвать один раз эту функцию по оканчанию добавления всех файлов. -Теперь при добавлении файлов используя перетаскивание, существующие в списке файлы будут подсвечиваться (выделяться) - так думаю более удобно :). -Функцию GetFileName() немного укоротил ;) -Добавил отображение иконок для добавляемых файлов, иконки определяются используя функцию _FileGetIcon() (тоже где то на оф. форуме нашел, правда немного изменил). -Чтобы можно было присваивать иконки айтемам, пришлось вместо вставки айтемов, создавать их встроенными средствами, т.к требуется ControlID. Вот что получилось: Код:
#include <GUIConstants.au3> |
Есть такой вопрос:
Утилита OpenedFilesView, “умеет просматривать” файлы которые заняты разными приложениями... Среди прочих возможностей программы, она имеет весьма удобную функцию - закрывать файлы (их Handle), чтобы к примеру, можно было удалить/переместить/переименовать файл без проблем, или изменить в нём данные. Также программа отображает полный путь к приложению которое “держит” эти файлы... Вопрос в том, возможно ли и на AutoIt получить доступ к подобной информации, а также иметь возможность закрывать Handles файлов, или временно их неитрализовывать (чего в самой программе нет :) )? Полагаю тут надо копать в сторону DllCall, но я даже и не знаю какой “тип лопаты” выбрать :biggrin: P.S На оф. форуме поднимался подобный вопрос, но до сих пор так ни кто и не нашёл решения, надеюсь среди наших, найдутся знатоки и умеющие хорошо копать люди :) |
Просьба помочь "чайнику" AutoItа
Надоело вариться в собственном соку Как правильно организовать скрипт с использованием GUI ? Хотел обратиться раньше,но решил сначала немного самому пощупать(и не без пользы .оказывается) Просьба показать на примере,содержащем следующее : 1.Создается окно GUI 2.В нем создаются : - пара текстовых строк (наверное Label 1 - Label 2) - пара кнопок ( скажем button 1-Button 2) 3.При нажатии кнопки button 1: - предыдущая инфа стирается - создается : - пара новых текстовых строк - пара элементов Input ( с каким то текстом ) - пара новых кнопок ( скажем Read-Save) - при нажатии новой кнопки Read : - выводится инфа до редактирования текста в окнах Input(Слева в окне GUI) - при нажатии новой кнопки Save : - выводится инфа после редактирования текста в окнах Input (Справа в окне GUI) 4.При нажатии кнопки button 2: - Все окно очищается - Выводится любая обобщающая информация Из примера хотелось бы понять : 1.Как правильно вводить текст и очищать окно 2.Как правильно организовать опрос элементов GUI при наличии вновь появляющихся элементов (кнопок Read-Save,элементов Input и т.п. ) 3.Как правильно осуществлять поиск по данной теме форума Заранее благодарен |
gregaz
Цитата:
Код:
Global $Input1, $Input2, $ReadButton=-1, $SaveButton=-1 Цитата:
Цитата:
Цитата:
|
Creat0R
Рукописная функция _FileOpenDialog у меня возвращает цифры 0x433A5C446F63756D... и т.п. и очень много нулей. :idontnow: Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Скорее всего, программе удаётся это сделать за счёт подмены или переназначения блокирующего дескриптора, для своего собственного процесса. К сожалению, больше ничем помочь не смогу... :dont-know |
Creat0R !
Спасибо за помощь ! Многое стало понятнее . Естественно сразу возникли вопросы : 1. Почему даный пример работает даже без обьявления #include <GUIConstants.au3> ? 2. Правильно ли я понял ,что обявление Global переменных нужно только лишь для Обьявления начальных значений еще не созданных элементов ( можно наверное и так : $Input1 ="" и т.д.) ? 3. Цикл Switch-Case-EndSwitch полностью аналогичен циклу Select-Case-EndSelect или есть отличия ? Можно ли здесь поменять их ? 4. Что означает Case -3 (GUIGetMsg()= -3 ) ? Когда появится это значение ? 5. Правильно ли я понял ,что независимо от появляющихся впоследствии элементов GUI , опрос об их состояниях (значениях) производится ВСЕГДА в одном общем цикле While-Wend ? Я пытался после создания новых элементов создавать еще внутренний цикл While-Wend ,поскольку иначе они почему то получались статическими. 6. Можно ли вместо вывода информации в окне MsgBox осуществлять вывод в том же окне GUI ? 7.Можно ли для очиски окна использовать GUICtrlDelete($ControlID) или GuiCtrlSetData($ControlID, "") - что правильнее ? 8. Как праильно осуществлять поиск ранее обсуждавшихся вопросов на форуме ( не на странице) ? Извините что напрягаю. |
Diamond
Цитата:
Цитата:
gregaz Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Код:
$u = DllStructCreate ('byte[10]') |
Creat0R
Цитата:
http://www.thefreecountry.com/utilit...kedfiles.shtml http://www.microsoft.com/technet/sys...on/Handle.mspx З.Ы. Поясню свою позицию. Дело в том, что в Windows нет документированных API-функций по перечислению открытых хэндлов, все подобные утилиты используют недокументированные вызовы функций ядра что не есть хорошо для обычного приложения, в частности могут возникать утечки памяти... При вызове внешних приложений таких проблем не возникает, так как при закрытии процесса система подчищает за ним все "хвосты". Лопата здесь лежит: http://forum.sysinternals.com/forum_...ID=3577&a%20mp. ;) |
Creat0R
Помнится, мы мучали функцию _PathSplitByRegExp()... Так вот оказалось, что RegExp-аналог оригинальной функции _PathSplit() занимает всего одну строчку... :) Код:
#include <array.au3> |
Creat0R !
Спасибо за пример и разьяснения ! Все встает на свои места. Еще пару вопросов,если можно : 1.На вопрос: Можно ли вместо вывода информации в окне MsgBox осуществлять вывод в том же окне GUI ? был дан ответ : Можно, нужно строить также новый ГУИ . А разве нельзя в этом же GUI вот так(тот же пример) : ? Вроде работает. Код:
Global $Input1, $Input2, $ReadButton=-1, $SaveButton=-1 2. Просьба привести любой простой пример выполнения опросов состояний элементов GUI в разных циклах Может быть даже в том же примере провести опрос состояний кнопок "Read" и "Save"в отдельном цикле ? 3. Что означает Case -3 (GUIGetMsg()= -3 )? Какой-то идентификатор завершения процессов ??? |
Creat0R
Цитата:
Код:
$Dict=ObjCreate("Scripting.Dictionary") Похожая ошибка возникает при попытке добавить в словарь ключ (Кеу) который там уже существует. (Словарь - изначально не поддерживает дубликаты) |
amel27
Цитата:
Утилита из того топика, вызвращает хэндлы TCP/UDP (правда не совсем понимаю что это), для обычных файлов информации нет :(. Взял утилиту из второго линка, она возвращает то что нужно, но 400 с лишним кб, это тяжко, даже очень тяжко :sorry: . |
amel27
Цитата:
Но вообще то, я делал функцию _PathSplitByRegExp() не как аналог функции _PathSplit(), а как что то более юзабельное и функциональнее, можно сказать что это как бы “мод” той функции :). gregaz Цитата:
Код:
#include <GuiConstants.au3> Цитата:
Цитата:
Diamond Цитата:
Цитата:
P.S Но я всё же больше доверяю массивам :tongue: (возможно боязень чего то нового). |
Creat0R
Цитата:
Кстати, насчет твоего старого вопроса о массовой замене и функции _StringRexExpReplaceEx… зачем там RegExp? Имхо вариант с обычным StringReplace справится лучше, плюсы очевидны: - работает быстрее; - нет проблем с форматными символами (речь о "|"); - если элементу из массива $Pattern нет соответствия в $Replace автоматически предполагается пустая строка. Код:
$String = 'file://localhost/%22c:/my%20test/test.zip%22' |
Creat0R
функция _GuiMsgBox достаточно громоздкая видимо из-за своей универсальности(на все случаи жизни) Попробую разобраться в ней. А пока 1 вопрос : При закрытии дочернего окна GUI у меня обычно закрывается и родительсое окно. У тебя же в примере этого не происходит . Чем это достигнуто ? |
amel27
Цитата:
Вобщем спасибо, идея с созданием массива вне функции мне понравилась, это позволяет более удобно задавать Patern и соответственно замену. А также... Цитата:
Вот немного переделал, добавил проверку ошибочности и возврат общего числа сделанных замен (@Extended): Код:
$String = 'file://localhost/%22c:/my%20test/test.zip%22' Цитата:
Цитата:
Соответственно, если имеем 2 ГУИ: $Gui_1 = GuiCreate("Первый ГУИ") $Gui_2 = GuiCreate("Второй ГУИ") То для закрытия второго (предполагается что они оба уже видны), задаём как первый параметр команды GuiDelete() его идентификатор: GuiDelete($Gui_2) Также можно и спрятать окно: GuiSetState(@SW_HIDE, $Gui_2) Для показа обратно: GuiSetState(@SW_SHOW, $Gui_2) |
Цитата:
|
Creat0R
По поводу _FileOpenDialog() - замени по тексту в определении структур "byte" на "char"... Так вроде работает, но логику изменений в работе структурных функций AutoIT-а пока не просек... нелогично это, когда бинарные данные (не текст!) по умолчанию преобразуются в юникод... на выходе получается чёрти-чё... |
gregaz
Цитата:
If GuiGetMsg = -3 Then GuiDelete($Gui_2) EndIf то ничего происходить не будет. Поэтому я и написал, что это зависит от ситуации и метода закрытия. amel27 Цитата:
|
Часовой пояс GMT +4. Сейчас 02:58. |
Часовой пояс GMT -5. Сейчас 17:21.
© OSzone.net 2001-2004