![]() |
[архив - Часть 2] AutoIt скрипты
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата:
|
Возможно где-то подобный вопрос уже и был, к сожалению я ответа на него не нашел.
Как мне через AutoIT сэмитировать двойной клик на определенной иконке на рабочем столе? Сам ярлык может быть в произвольном месте, но он есть точно... Извиняюсь если это на самом деле глупый вопрос, сам сижу уже второй день, не могу найти... |
eNcub
Этот пример, произведёт двойной клик в левой верхней части экрана: MouseClick("left",0,0,2,50) Первый параметр определяет кнопку мыши Второй и третий - координаты экрана X,Y Четвёртый параметр - это количество кликов мышью Ну и наконец последний - это скорость перемещения указателя к заданным координатам экрана. Этот способ подходит, если значок ярлыка находиться всё время на одном месте. В остальных случаях логично использовать команду Run() - для запуска файла к которому ведёт ярлык. |
Diamond этот способ я знаю, весь хэлп перерыл...
Помоги тогда как обратиться к определнному VPN подключению. Та же ситуация, открыть панель управления могу, а два раза кликнуть на нужном соединении не могу... |
eNcub, пользуйся штатной утилитой rasdial:
Код:
rasdial Имя_VPN_подключения имя_пользователя пароль_пользователя при удачном подключении возвращает 0, в противном случае код конкретной ошибки есть вариант запускать как через ярлык: Код:
rasphone.exe -f "C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk" -d "Имя VPN подключения" |
Цитата:
Только... вот теперь вопрос дурацкий будет, а как эту строку прописать правильно в АвтоИТ? Пробую из командной строки - всё получается, а в скрипте не могу. В пути к ярлыку есть пробелы, как сделать чтобы воспринимался параметр командной строки как единое целое? Пробовал rasphone.exe -f 'C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk' - не работает. Есть ли в АвтоIT что-то типа экранирования символов (типа обратного слэша в линуксе).? |
eNcub, просто удвой знаки кавычек:
Код:
$ConnectionName="Имя подключения" |
Никак не могу довести до ума одну, казалось бы простую вещь...
Имеем переменную $InetSpeed которой присваивается определённое значение каждую секунду, как можно догадаться, эта переменная содержит данные о скорости закачки файла. Вот по завершению закачки, мне нужно узнать среднюю скорость за этот промежуток закачки. Я сделал, наверное (хотя точно) не правильно, но вот что у меня получилось... Я засёк самую большую видимую скорость, самую маленькую, и вычеслил золотую середину среди них: Код:
$LowsetSpeed = 0 В общем в результате, если самая большая скорость была 190, а самая маленькая 65, то просто 190 делим на 2, 65 тоже делим на 2, и прибавляем результаты (получаем 127,5)... Но я не уверен что это правильное решение, полагаю нужно в процессе (в цикле) засикать наиболее замеченные данные о скорости, и уже между ними подсчитывать среднее значение - но как это реализовать корректно, я не могу никак сообразить :idontnow: Кто может, имеет время, помогите плиз разобраться :shuffle: |
Creat0R
Большое спасибо за помощь Действительно твой совет об использовании новых окон GUI для вывода информации значительно облегчает жизнь. Есть пара вопросов : 1.Никак не могу найти функцию переименования файлов (ведь должен же быть какой-нибудь Rename) 2.Как задействовать поиск в Helpe (почему то не находятся разделы) ? |
Creat0R
не совсем понятно как работает _InetGetSpeed(), но тем не менее... среднюю скорость нельзя вычислить на основывании только мгновенных значений скорости. Для расчета нужно просто взять разницу в значениях @InetGetBytesRead (закачанный размер) и разделить на соответствующую разницу значений TimerDiff() (за какой период времени). Цитата:
|
gregaz
Цитата:
также и с папками... Но учти, в версии 3.2.2.0 и ранее, есть баг - если пытаться переименовать файл в то же имя но с разным регистром, файл удаляется, к примеру вот так: Код:
FileMove("C:\test.txt", "C:\teST.txt", 1) Я дал знать разработчикам об этом баге, и в версиях выше чем 3.2.2.0 они вроде это поправили. Цитата:
amel27 Цитата:
Код:
Func _InetGetSpeed($Sleep=1000) Цитата:
|
Creat0R
Цитата:
Код:
If Not(InetGet("http://downloadmirror.intel.com/6667/eng/ISM556_Build7.exe", "xpSP2_ru.exe", 1, 1)) Then MsgBox (16,'','') Цитата:
Код:
Global $InetSpeed = 0, $InetGetBytesRead = 0, $InetTimeStamp = 0 |
amel27
Цитата:
Хотя это можно совмещать... но почему бы не поместить функцию в цикл, и передавать ей как параметр чтение байтов, и возвращать с неё данные о скорости? это мне кажется лучший вариант... Код:
Global $InetSpeed = 0, $InetGetBytesRead = 0, $InetTimeStamp = 0, $begin = TimerInit() Спасибо за примеры, вроде всё работает как надо :). P.S А среднюю скорость мне нужно не в цикле отображать, а подсчитать её для конечного вывода (чтобы показать юзеру с какой скоростью (средней) закаивался файл за весь промежуток закачки). Diamond По теме словарей (Dictionary): http://www.autoitscript.com/forum/in...6&#entry352256 |
Creat0R
Цитата:
З.Ы. скрипт привел к работоспособному виду. |
amel27
Цитата:
P.S А по поводу средней скорости.... на выходе из цикла переменная $AverageSpeed будет содержать общую среднюю скорость закачки на промежуток времени всей закачки, или она будет содержать последнюю засеченную среднюю скорость (на выходе из цикла)? |
Creat0R
Цитата:
Цитата:
Цитата:
Код:
Global $AdLibMS=500, $InetBytesBack = 10 |
Написал скрипты установки MathCAD 2001 и AutoCAD 2006 Mechanical.
В MathCAD 2001 после установки при первом запуске программы производится какая-то настройка. При этом необходимо не вынимать установочный диск. Грубо говоря, тыкаешь ярлык к mathcad.exe и запускается прогресс бар msi-настройщика длящийся около минуты. У ярлыка не указаны никакие ключи командной строки (точнее поле объект в свойствах ярлыка вообще неактивно и недоступно для просмотра). Поэтому простой запуск Run (@Programfilesdir & 'Mathsoft\Mathcad 2001 professional\mathcad.exe') Processwait('процесс') ProcessWaitClose('процесс') ProcessClose ('mathcad.exe') не помогает! При этом первой строчкой запускается сам Маткад и никакой настройки не производится. Настройка происходит только при запуске через ярлык. Как узнать что именно при этом происходит? В AutoCAD 2006 Mechanical после установки при первом запуске запускается процесс регистрации. Только строчка Run (@Programfilesdir & '...\...\Acad.exe') тоже не помогает. При отработке этой строчки из скрипта, выскакивает диалоговое окно сообщающее о том, что система не может найти како-то .dll. Если же сразу после этого запустить AutoCAD вручную - то все нормально! Помогите! |
Внедрённый HTML объект
Анимированный gif, звук (в бесконечном цикле!), плюс эффект с текстом. З.Ы. Пытался с помощью дополнительных стилей убрать рамку у объекта , но нашёл лишь несколько новых рамок... и всё же есть одна небольшая хитрость: В коде есть четыре закомментированных параметра, если их задействовать - то рамка исчезнет. Код:
$sound=@ScriptDir & "\MUSIC9.MID" Цитата:
В любом случае, большое спасибо! :) |
amel27
Цитата:
Цитата:
Вот как я сделал: Код:
Global $InetBytesRead[10+1] Кстати, у тебя в примере чтобы получить кб, байты деляться на 1000: Код:
@InetGetBytesRead/1000 |
Creat0R
Цитата:
Цитата:
AdLib хорош тем, что он не зависит от скрипта (есть соединение или нет) и временной интервал всегда одинаков. В твоем варианте интервал между "временнЫми засечками" на самом деле >100 ровно на столько, сколько потребуется скрипту на выполнение команд после Sleep(100). Обычно это неcущественно, но в общем случае он может быть любым (особенно если где-нибудь есть еще один Sleep() ;) ), соответственно показания скорости будут неверными. Для сохранения точности придется в дополнение к @InetGetBytesRead сохранять показания TimerInit(), хотя интервал замера уже перестанет быть фиксированным... Кроме того инициализацию массива придется возложить на основной скрипт, так как функция не знает старая это закачка или новая. Код:
Global $InetBytesRead Цитата:
...кстати, множитель 0.9765625 как раз отвечает за перевод исходной величины Byte/ms в KByte/sec |
schel4ok
Цитата:
|
amel27
Цитата:
Цитата:
Цитата:
|
Creat0R
Переделал последний вариант скрипта - добавил обработку ошибок и упростил использование параметров. Теперь он может использоваться для измерения не только скорости закачки, но и скорости прогресса любой величины (>0), например обработанных файлов, произведенных кликов мышки и т.д. Цитата:
Цитата:
KByte/s -> MByte/min : 60/1024 = 0.05859375 |
amel27
Цитата:
Цитата:
И ещё такой вопрос: Функция для подсчёта скорости, в оригинале возвращает байты/мс, или байты/с ? если первое, то как поправить чтобы возвращались именно байты в секунду, это нужно для ещё одной функции подсчёта... функция подсчитывает приблизительно оставшиеся время до закачки (в секундах) : Код:
;Функция возвращает приблизительно оставшееся время в секундах (за счёт вычесления из общего размера файла и деления на скорость скачивания). |
Здравствуйте!
подскажите пожалуйста как получить файл с и-нета а затем его запустить(скачать и после того как он на компе запустить его) делаю вот так: InetGet("http://the-file.com/file.exe", "file.exe", 1, 1) Sleep(30000) Global $file = 'file.exe' RunWait($file) но мне почемуто кажется что функция Sleep(30000) только останавливает скрипт а сним и получение файла с и-нета, или я не прав? приведите пример пожалуйста как правельно это сделать.. |
GTeam
Цитата:
Цитата:
Вот пример закачки и по завершению запуска закаченной программы (если она закачалась успешно): Код:
;Обьявляем переменную для имени файла (желательно и весь путь) |
спасибо огромное, очень помог!
еще один вопрос , может ли AutoItSetOption("TrayIconHide", 1) повлиять как то на работу скрипта? |
GTeam
Цитата:
оно влияет только на то, что иконка в трее не будет отображаться, это удобно если нужно в работе скрипта скрывать/показывать иконку в области уведомления (трей), если нужно чтобы иконка вовсе не показывалась (никогда), то в начале скрипта достаточно поставить директиву #NoTrayIcon, это кстати, в отличие от Opt("TrayIconHide", 1), позволяет не показывать иконку при запуске скрипта, т.е икона не появится на мгновение как это происходит при использовании Opt("TrayIconHide", 1) :). |
Creat0R
Цитата:
Цитата:
Код:
#include <Constants.au3> Цитата:
Код:
#include <GUIConstants.au3> Цитата:
Цитата:
Код:
Func _InetGetRemained($Bytes, $TotalBytesSize, $SpeedByBytes) |
Creat0R. Спасибо за советы !
Есть еще один вопрос : Как правильно организовать архивирование файлов Winrar_ом ? Имеется Файл , полученный после работы функции FileOpenDialog, есть его массив-форма,обработанная определенным обазом. Задача :архивировать выбранные и обработанные файлы Попытка занести в окно Winrara требуемый путь к папке (имеющий и русские названия папок) выдают абракадабру Поочередное переключение раскладок клавы не дает стабильного результата. Возможно есть простой путь ? |
gregaz
Цитата:
Код:
;~ путь к консольной программе: |
[Diamond,
Спасибо Просто и здорово А как ввести другие параметры архивирования : скажем ПАРОЛЬ или ДОБАВИТЬ ИНФОРМАЦИЮ ДЛЯ ВОССТАНОВЛЕНИЯ ,? |
gregaz
Цитата:
Код:
$WinRar="C:\Program Files\WinRAR\Rar.exe" Там очень много всяких возможностей, проще будет изучить справку самостоятельно: Run(@ComSpec & ' /k "C:\Program Files\WinRAR\Rar.exe" /?',"",3) Да, насчёт информации для восстановления... я не уверен, нужен ли знак процента на конце. |
Подскажите кто-нибудь плз, когда создается vpn подключение, то в зависимости от того есть уже подключения в системе или нет, то выскакивает окно "Набирать номер для предварительного подключения. Как его отследить?
Такая конструкция обрабатывается неверно, в свойствах окна этот текст есть как скрытый... Как сделать чтобы WinWaitActive смотрел только на видимый текст? Цитата:
|
eNcub
Цитата:
Opt("WinDetectHiddenText",1) 0 = не сопоставлять со скрытым текстом окна (по умолчанию) 1 = сопоставлять в том числе и со скрытым текстом окна |
amel27
Цитата:
Спасибо за примеры, всё стало намного яснее :) |
Функция, которая позволяет замостить фон GUI текстурой или небольшими изображениями
Код:
;~ Использование: |
Спасибо Diamond за помощь по Winrarу
Действительно есть,оказывается <Руководство по консольной версии RAR > - там все прописано . Можно пару вопросов на другую тему ? 1.Как ввести данные в Интернет страницу ( типа Логин,пароль )или текст поиска (для Google) 2.Как найти на Интернет странице нужный текст (Ссылку и .т.п.) Вопрос поиска текстового фрагмента в файле рассматривался здесь на форуме ,а как это сделать на ВЕБ- странице ? |
gregaz
Цитата:
Цитата:
Код:
#include <INet.au3> |
привет всем =))
если честно сижу ещё в офисе, после напрженного рабочего дня, глаза "в кучку" - и даже не могу найти кнопку "создать новую тему" в общем если не влом "киньте" ею в меня )) а вот сам вопрос: дле элемента GUICtrlCreateList очень хорошо работае функция GUICtrlSetOnEvent т.е. если кликнуть по списку GUICtrlCreateList мышкой, то тут же будет вызвана функция, прописанная в GUICtrlSetOnEvent. а вот для элемента GUICtrlCreateListView функция GUICtrlSetOnEvent - не работает, как быть? добиться я хочу все того же: т.е. когда кликаю мышкой по таблице GUICtrlCreateListView, мне необходимо, что бы на это сыбите таблица "реагировала" и вызывала мою функцию. и как то же самое произвести для элимента GUICtrlCreateTab . пользуюсь autoIT v3.2.4.0 |
gregaz
Цитата:
|
proxy
Цитата:
Код:
#include <GuiConstants.au3> Код:
#include <GuiConstants.au3> |
объект: "Scripting.Dictionary" - Сортировка данных в словаре
Использование: SortDictionary($objDict, flag) $objDict - словарь (как объект) flag - 0 сортировка по ключам(key); 1 сортировка по элементам(item) Код:
$Dict = ObjCreate("Scripting.Dictionary") Для тех кто не знаком с принципами работы этого объекта, есть хорошая ссылка, котрую дал мне Creat0R :http://www.autoitscript.com/forum/in...56?entry352256 Также, описание свойств и методов можно найти на MSDN. |
На офф. форуме нашел функцию, которая казалось бы, воплотит в реальность мою давнюю “хотелку” :) ...
Вот функция: Код:
Func SetParent($hWndChild, $hWndNewParent) Окно однако становится дочерним/родительским, но не так как мне этого хотелось... В общем вопрос вот в чём: Возможно ли переделать эту функцию (или написать новую), которая позволит прикреплять одно окно к другому, также как это происходит при вызове подобной фкункции MsgBox... Код:
$Hwnd = WinGetHandle(WinGetTitle("")) |
Diamond
ИМХО у "Scripting.Dictionary" только одно преимущество перед массивами AutoIT - индекс может быть не только числовым, но и текстовым... другими словами это означает штатную поддержку _ArraySearch(), которая в AutoIT доступна только через UDF... Во всех остальных случаях не вижу причин для замены ими штатных массивов... Между прочим функция SortDictionary() по большому счету ничем не отличается от _ArraySort() (кроме отсутствия контроля ошибок), поэтому быстрей она работать не может по определению... Подробно: http://www.osp.ru/win2000/2006/07/3643019 Creator Цитата:
Цитата:
|
А кто-нибудь знает как запускать inf файлы при помощи AutoIt?
|
Цитата:
Почему такая проверка: Код:
if WinWaitActive('Мастер новых подключений', 'Выберите, надо ли автоматически подключаться к Интернету','5' )==1 Then Если это окно не появляется, то нажатие стрелки вверх и энтера всё равно производится. В чем ошибаюсь, может как-то проверять надо другим способом? |
amel27
Цитата:
Цитата:
|
хм....., если Creat0R это стиль жизни...то как же тебя именовать?
В любом случае, Человек живущий и создающий - Спаибо, уже витал ответ в голове но небыло времени проверить... а так и бестрее и вернее выйдет ))) Продолжу вкладывать свои силы в подобный тебе стиль жизни.. ) |
В обычном режиме скрипт работает нормально: мелькают окна, но установка проходит автоматом до конца.
При использовании ключа /VERYSILENT идёт скрытый режим и натыкается на место, когда на экране одновременно два окна. Послать команду надо в верхнее окно, но скрипт его упорно не видит. Как победить? Добавлено: Разобрался. Оказалось, что это баг самой подопытной программы. |
eNcub
Цитата:
Кто-нибудь знает в чём тут может быть проблема? |
amel27
Цитата:
schel4ok Цитата:
eNcub Цитата:
Код:
WinWaitActive('Мастер новых подключений', 'Выберите, надо ли автоматически подключаться к Интернету', 5) Цитата:
|
Creat0R,спасибо за "толчок" в сторону функций _IE...
Я и не подозревал об их существовании Их так много-целое направление в Autoite и богатые возможности (надо разбираться) Пример поиска на ВЕБ-стр вроде бы работает Надо будет ввести туда разбиение на строки. Спасибо |
Привет, ещё раз.
А как отслеить двойное нажатие правой и ливой кнопкой мыши? по элименту. |
хм.....и вопрос номер три, забыл спросить сразу.
имеется: файли txt со списком строк необходимо: из этого файла удалить определенную строчку я сейчас это реализовал так: т.е. считываю все строчки по одной из файла 1.txt и если считанная строчка не совпадает с образцом, то записываю её в файл 2.txt после оканчания файла 1.txt - удаляю его, а файл 2.txt переименовываю (т.е. копирую) в файл 1.txt. может есть вариант полегче? |
Я считаю, что в пользовательской функции _FileReadToArray() допущена ошибка.
Рассматриваю строку из этой функции: $aArray = StringSplit(StringStripCR(FileRead($hFile, FileGetSize($sFilePath))), @LF) Поясню свою позицию. Дело в том, что строка текстового файла может иметь 3 типа завершения: 1 - @CRLF 2 - @CR 3 - @LF Автор наверное посчитал что символ @LF - неотъемлемый элемент перевода на новую строку, и понадеявшись на него, одним махом удалил все @CR из полученного текста... На деле же получается, что если строка завершается только символом @CR, то после такой обработки эта строка соединится со следующей, а в результате мы получим неверный массив. Предлагаю свой вариант решения: $aArray = StringSplit(StringRegExpReplace(FileRead($hFile,FileGetSize($sFilePath)),"\r\n|\n",@CR),@CR) proxy Цитата:
|
Diamond, спасибо. Необходимое с тектом реализовал уже по другому, а пример приму на заметку, чувствую дальше понадобиться.
И вопрос все ещё открыт: Как отслеить двойное нажатие правой и ливой кнопкой мыши по элименту? можеть есть пример? |
Diamond
Цитата:
И кстати, при чтении всего файла, совсем не обязательно использовать FileGetSize() : Код:
$aArray = StringSplit(StringRegExpReplace(FileRead($hFile),"\r\n|\n",@CR),@CR) proxy Цитата:
Код:
#include <GuiConstants.au3> |
спасибо.
от таких добавлений мои функции разростаются как на .....сникерсах и чипсах =))) хм, а свою dll тут ни как не создать? что просто вызывать когда необходимо? |
proxy
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
На всякий случай поясню: Допустим в одном файле могут встретится 3 различных типа завершения строки, с помощью StringRegExpReplace() я последовательно меняю все @CRLF на @CR, затем @LF на @CR, в конечном счёте в тексте остаётся только @CR который я использую в качестве разделителя. Но можно использовать и @LF - не вижу разницы... Код:
$aArray = StringSplit(StringRegExpReplace(FileRead($hFile),"\r\n|\r",@LF),@LF) |
proxy
Цитата:
Хотя с другой стороны, кроме меня пока ещё никто не жаловался... Код:
#include <File.au3> |
Diamond
Цитата:
А на счёт изменения функции _FileReadToArray(), я так и не понял, зачем превращать все переводы строк и возврата каретки в символ возврата кареткми (или наоборот :wacko: , не очень уж важно), потом делить всё это в массив, когда при этом, ни символ возврата каретки, ни символ перевода строки, не попадает в массив :idontnow: - У тебя случалось что не все строки с файла попадали в массив? Так вроде правильнее: Код:
$aArray = StringSplit(StringRegExpReplace(FileRead($hFile),"\n|\r",@LF),@LF) Вот моя версия на подобную функцию: Код:
$Ret = ReplaceText("C:\test.txt", "Old Text", "New Text") |
Diamond
Дааа, оказывается ты прав.... возьмём этот пример: Код:
#include <Array.au3> Код:
[1] = "Line1" Код:
[1] = "Line1" Код:
Func _FileReadToArray($sFilePath, ByRef $aArray) |
Но всё же остаётся одна проблема - если в файле содержатся промежуточные символы перевода строки (@LF), то гинерируется пустой элемент массива...
Получается это ошибка функции StringSplit() ? |
Diamond
Цитата:
Diamond, Creat0R ...по поводу _FileReadToArray(): - у StringSplit() есть флаг, позволяющий использовать более одного символа для разбиения: Код:
$a = StringSplit ($text, @CRLF, 1) Код:
$a = StringRegExp ($text, '(?m)^(.*)$', 3) Цитата:
|
Цитата:
еще мысли есть у кого-нибудь? плз.. |
eNcub,
Код:
$Wtitle="Мастер новых подключений" |
XXXler
таак, а что с реестром? этот вариант тоже не прошел... |
schel4ok
Цитата:
Код:
Func _RunInfSection ($filepath, $section = 'DefaultInstall', $mode = 128) Цитата:
|
amel27
Цитата:
Цитата:
schel4ok Я сразу не понял что речь идёт об установке файла, а не его запуске (это ведь требуется?)... Для установки действительно будет полезна функция предложенная amel27 чуть выше, сам нечто подобным пользуюсь для установки Inf файлов (правда из батника ;) ). |
Помогите, пожалуйста, разобраться:
Код:
While 1 Код:
>>>> Window <<<< |
Diamond, спасибо за подсказки, это очень интересно.
Сейчас считываю весь файл в gui List и от него "играю", но как варинат с текстом в масиве.....может пригодится. Creat0R - спасибо за пример, Diamond пару постов выше уже показал твой пример. Я сейчас изменел первичный замысел и сейчас не требуется замена тсрок, но на вооружение взял. И ещё, скромный вопрос, auto IT это замечательно, но создовать уж созданное думаю нет серьезного смысла.....может знакомы с языком С++ , VB, ..... что лучше применить к изучению для написания подобных приложений? п.с.: я не сравниваю аутоИТ и другие языки, я хочу понять какой, в целом, язык оптимальние и приняться к его изучению. |
gvshil
Цитата:
Код:
If _WinIsVisible('ABBYY FineReader 8.0 Professional Edition Try&Buy', 'Проверьте правильность введенного серийного номера.') Then ContinueLoop Цитата:
AutoIt в основном предназначен для написания скриптов в помощь автоматизации запуска/установки приложении и ежедневных системных задач, но кроме этого на нём также возможно писать программы среднего (а может и высшего) уровня. Цитата:
|
Creat0R
Совсем я запутался. Если не трудно, укажите куда конкретно в моем примере нужно вставить проверку. |
gvshil
Цитата:
|
Вложений: 1
Написал скрипт для архивирования.
если кому надо, поюзайте, расскажете, как оно.... вот, из ридмишки. Цитата:
|
Creat0R
Цитата:
Код:
$file = FileOpen("test.txt",2) Необходимо учитывать все возможные типы завершения строк, как я уже сказал, всего их 3. (...правда, редактор "Notepad.exe" об этом не знает.) Если автор UDF-функции упустил из виду @CR - то ты, в данном случае проигнорировал @CRLF. Опишу всё подробно: Код:
$hFile = FileOpen("test.txt", 0) Код:
$hFile = FileOpen("test.txt", 0) Код:
Func _FileReadToArray($sFilePath, ByRef $aArray) |
Diamond
Цитата:
$aArray = StringSplit(StringReplace(FileRead($hFile), @CR, @LF), @LF) На выходе имеется тот же массив... Но у меня проблема не в этом, а как раз в содержимом массива... Цитата:
Код:
#include <Array.au3> |
Creat0R
Цитата:
Цитата:
Всё верно! ;) |
Альтернатива подобной функции:
Код:
Func _FileReadToArray($sFilePath) |
Creat0R
Они туда попадают, потому что ты их с самого начала записываешь в текстовой файл. :) Пожалуй возьму эту функцию на вооружение... Но всё таки, мне кажется что я сделал всё правильно... |
Diamond
Цитата:
|
Creat0R, Diamond
Цитата:
- считать ли пустой строкой промежуток между началом файла и разделителем (@LF/@CR); - считать ли пустой строкой промежуток между и спецсимволом и концом файла; - как разбивать на пустые строки произвольную последовательность разделителей. Обычно за разделитель считают именно @LF, а все вхождения @CR просто удаляют, соответственно последовательность @LF@LF будет означать "разделитель-пустая строка", при этом ответ на первые два вопроса чаще положительный... Можно договориться считать за разделители @CR и @LF, тогда последовательность @CRLF опять же вернет пустую строку (между ними). Мне представляется наиболее удобным следующий вариант: - ДА - НЕТ - разделители: пары @CRLF/@LFCR и в последнюю очередь одиночные @CR и @LF реализация через RegExp: Код:
$array = StringRegExp(FileRead ("Test.txt"),'(?s)(.*?)(?:\n\r|\r\n|[\n\r])', 3) |
amel27
Цитата:
Код:
#include <Array.au3> Кстати, я проверил скорость выполнения функции - С использованием RegExp, в 5-6 раз быстрее чем используя цикл, но зато при использовании цикла возвращаются только текстовые строки :tongue: |
Creat0R
Цитата:
Код:
$RetArr = StringRegExp(FileRead($hFile),'(?s)(.*?)[\n\r]+', 3) Код:
$RetArr = StringRegExp(FileRead($hFile),'([^\n\r]+)', 3) |
amel27
Цитата:
Цитата:
...Если общего правила не существует - то этот вариант, как мне кажется, наиболее подходит. -Да |
amel27
Цитата:
Цитата:
|
Diamond
Цитата:
Creat0R Цитата:
|
amel27
Цитата:
Цитата:
|
Creat0R
Цитата:
З.Ы. К слову, я уже давно отказался от _FileReadToArray() и некоторых других штатных UDF, так как RegExp-команды более мощные и гибкие... К примеру, при чтении файла кроме обычного деления на строки можно по ходу делать много других полезных вещей - убирать ведущие и оконечные пробелы, проверять строки на условия, etc. |
Creat0R
однако... лучший способ разубедить себя - попытаться убедить другого... =) Код:
Func _FileReadToArray($sFilePath, ByRef $RetArr) |
amel27
Цитата:
Цитата:
Спасибо, с этой функциецй (о котороый уже около 3-ёх страниц пишем), можно успокоиться :) |
Добрые ночи.
В моей программе много gui элиментов, которые в ходе работы с программой будут очень часто вызываться, обробатываться и т.д. Эти элементы состоят из целых групп, т.е. парочка текстовых полей и несколько кнопок, список и несколько кнопок и т.д. Как лучше организовать, со стороны наилучшей работоспособности программы, вариант: 1) насоздовать все gui элименты и не нужным дать статус $GUI_HIDE и показывать их только при необходимости? 2) все gui элименты создовать при необходимости и удалять по завершении работы с ними? |
proxy
Цитата:
Поясню... * Я не раз приходил к выводу, что создавая элементы "на лету", ими потом очень тяжело управлять (хотя не всегда), особенно если используется больше чем один Гуи. * Когда мы создаём сразу все необходимые элементы (под нужными GUI), мы потом можем легко присваивать им нужные атрибуты/свойства/статусы, удалять их, или менть их значения. Исходя из этого, я бы создавал всё сразу, но главное, обьявлять глобально все переменные элементов, и постараться “не забыть” из имена ;) Вывод: Если есть терпение, желание, стремление, то лучше сразу привыкнуть, хоть и не к лёгкому, но зато верному методу, чтобы потом можно было клипать ГУИ с увереностью в том, что будет наименьшее количество припятсвии и ошибок (а они всегда будут). Однако, в некоторых случая бывает как раз наоборот, когда более удобнее создавать “на лету”, но это уже на расмотрение автора, нужно учитывать такие факторы как количество окон Гуи которые планируется создавать, насколько часто будут обращения к создаваемым элементам, и другие подобные факторы... возможно иногда, лучшим методом окажется помещение в отдельную функцию всей процедуры создания элементов, чтобы без затруднении можно было пересоздать (с удалением внутри функции к примеру) необходимые элементы. |
amel27
Цитата:
По поводу _FileReadToArray, большое спасибо! Уже не один раз убеждался что 'RegExp' мощный инструмент, особенно в опытных руках. Жалко только что в справке AutoIt, об этом слишком сжато написано... |
Diamond
Цитата:
|
Кто ни будь знает, как использовать команду PluginOpen() и где взять сами плагины?
amel27 Цитата:
Creat0R А твоя версия функции _FileReadToArray() та которая с циклом, тоже пригодилась. Я её изменил немного, чтобы она считывала файл один к одному, включая пустые строки. Вот только переменную $i можно было бы совсем убрать, имхо лишняя... Как считаешь? Получается, что если была использована FileOpen() - то при каждом новом вызове команды: FileReadLine(), автоматически генерируется новый номер строки. Выходит что для FileReadLine() номер то, можно и не указывать...? |
Creat0R, спасибо.
в моей программе только одно окно GUI и в нем меняется куча элементов, так что я сразу создал все и не нужное скрыл. И вот после этого задумался не станет ли это "грузит" мою программу. но используя комментарии к глобальным переменнм, даюи им понятные имена, и ты мысли мои прочетал - создание, скрытие и отображение элементов, все организовал через функции, все очень удобно. |
Diamond
Цитата:
Цитата:
proxy Цитата:
Это кстати, ещё одна причина по которой стоит сразу создавать нужные элементы, т.к создавая и удаляя их в процессе выполнения разных задач программы, память будет пополняться, при удалении элементов она обычно не высвобождается самостоятельно, кстати для этого есть функция на оф. форуме (_ReduceMemory()). |
Diamond
Цитата:
Вот ссылка на топик в оф. форуме - Coming Soon: Plugins А вот как я понял сами плагины - http://www.autoitscript.com/autoit3/...plugin_sdk.zip И ссылка на помощь по коммандам (во встроенной справке описании почему то нет :( ) - http://www.autoitscript.com/autoit3/...PluginOpen.htm |
Такой вопрос касательно RegExp...
К примеру имеем такую переменную: Код:
$String = "This is the text" Код:
$String = "This is the text" Код:
While StringInStr($String, ' ') P.S Желательно организовать для этого функцию, т.к вызывать придётся не раз, и использовать разные удвоенные символы... Вот пример этой же функции используя цикл (до сих пор ею и пользуюсь) : Код:
Func ReplaceUnsupported($String, $Patern='[*?\\/|:<>"]', $Replace="_") |
Нашёл!!! Эврика!!! :yahoo:
Вот оно - StringRegExpReplace($String, '( +)', ' ') И вот функция соответственно (для других символов) : Код:
Func ReplaceUnsupported($String, $Patern='[*?\\/|:<>"]', $Replace="_") Код:
$String = 'This//\\is<|"|>my??"??:??\*\"::|/::"File.txt' |
amel27
Цитата:
|
Недавно пробовал запустить msi файл из под АвтоИТ (TweakUI.msi) и вот что вышло:
- если запускать ShellExecute("файл.msi /параметр") то ничего не получается - если запускать ShellExecute("файл.msi") все нормально запускается,но... при появлении первого же диалогового окна установщика, я скопировал его титул и текст через Ау3инфо и попытался запустить скрипт. оказалось что АвтоИТ почему то не понимает этих данных и соответственно скрипт останавливается на WinWaitActive why? |
schel4ok
Цитата:
Попробуй вместо WinWaitActive() использовать WinWait(). |
Creat0R
Цитата:
Но когда я испытывал скрипт - я вручную запускал инсталлер. Потом запускал строчки скрипта, отвечающие за обработку данного окна WinWaitActive. И после этого тыкал мышкой по окну - соответственно оно по любому было активным, но скрипт не работал. Вообще я часто встречал что когда наводишь на один и тот же элемент управления, то в окне Ау3инфо в строке classnameNN мигают разные значения. Я так один раз, например, устанавливал прогу и не мог понять почему она не ставиться. А дело было в том, что в четвертое по счету окно я вводил в текстовое поле путь к папке ярлыков в меню пуск inet\swissknife, а этот путь вместо этого попадал в текстовое поле во втором окне выбора пути к установочной папке C:\swissknife. Так что shit happens! И видимо дело в наложении одних и тех же элементов управления и в их видимости и невидимости в определенные моменты. |
Кстати, а существуют ли подобные АвтоИт программы для КПК?
|
тоже интересует версия для КПК.
ну и вопрос естественно! на сервере лежит файл txt формата который каждый день обновляется, меняются url к exe файлу который нужно скачать и запустить нашим скриптом, можно ли создать скрипт который будет выполнять работу парсера, а точней выдерать с файла http://www.site.com/update.txt строку(http://url_to_file_from_txt_file.com/filename.exe) одна единственая строка в файле! затем качать этот самый exe и запустить его в тихом режиме.. Global $file = 'file.exe' $Ret = InetGet("http://url_to_file_from_txt_file.com/filename.exe", $file, 1, 0) If $Ret = 1 Then RunWait ( $file & ' /S' ) |
Цитата:
Код:
#include <ListViewConstants.au3> |
GTeam
Цитата:
Код:
#include <Inet.au3> Код:
RunWait(@TempDir & "\" & $ExeFileName & ' /S', @TempDir, @SW_HIDE) |
Просьба помочь разобраться с IE... функциями
Задача : 1. Открыть ВЕБ страницу в нужном месте и в нужном формате 2.Ввести в нее данные Этим скриптом страница открывается и данные вводятся (но в полном размере окна браузера): Код:
#include <IE.au3> Код:
#include <GUIConstants.au3> Видимо это связано с использованием обьектной переменной,в которых я не очень разбираюсь И еще один похожий вопрос : Можно ли управлять (размер,позизионирование ) системного окна типа окна вызываемого функцией FileOpenDialog или это возможно только для окон GUI ? Если можно просьба показать (у меня не получается) |
gregaz
Цитата:
Задачка не так проста как кажется... Для чужих окон юзаем WinMove(), но если речь о системных окнах самого AutoIT, то ИМХО штатными средствами никак, так как на время активности системного окна выполнение скрипта прерывается и изменить параметры окна не представляется возможным... Тем не менее для некоторых системных окон можно написать API-аналог, частично решающий данную проблему... Например, удалось взять контроль над FileSelectFolder(), правда только в классическом исполнении - при запуске вызывается специальная функция, которая может изменить настройки этого окна. В примере меняется стартовый каталог, но аналогично на этапе инициализации можно управлять и другими параметрами. Думаю не составит труда по тому же принципу написать аналоги FileOpenDialog() и FileSaveDialog().... конечно, если в этом есть необходимость. ;) |
Переделанная функция (взята у Smoke_N на офф. форуме ;)) _MsgBox() - Если текста для показа слишком много, то текст можно прокрутить и просмотреть (используется Edit-элемент, а для прокрутки есть две самопальные стрелочки :)), окно MsgBox меняет размеры в соответствии с текстом и с разрешением экрана.
Код:
$Text = "" |
Цитата:
Мне это надо было в порядке изучения возможностей Autoit А так понятно,что в принципе любой вопрос можно решить использованием того или другого языка |
Цитата:
|
GTeam
Цитата:
Код:
#include <Inet.au3> |
как из скрипта узнать список всех работающих служб в их сокращенном английском названии?
т.е. обработка вывода net start не пойдет - там полные русские, и чтение раздела реестра SERVICES тоже - оттуда невозможно узнать, какие службы запущены. |
Dirk Diggler
Цитата:
Код:
$strComputer = "." Код:
MsgBox(0, "Свойства:", GetClassProperty("root\cimv2","Win32_Service") ) Код:
MsgBox(0,"Методы:", GetClassMethods("root\cimv2","Win32_Service") ) Код:
ClipPut(ListMOF("root\cimv2","Win32_Service")) Если кто-то знает, пожалуйста подскажите... |
Цитата:
Цитата:
msgbox, выдает верный урл |
всем привет.
у меня тут такая проблемка возникла. Не могу понять как заставить программу считывать нажатую клавишу... подскажите плз как начать обработку события. пишу небольшой скриптик для сидюка. кому интересно(вот исходник): Код:
CDTray("K:", "open") |
как заставить контрол "метка"(Label) расширяться по мере смены в ней текста?
|
Не знаю, может и был вопрос...
Возможно ли с помощью AutoIT послать клик мыши в неактивное окно (возможно и вовсе не видное на экране (не свёрнутое, но закрытое другим))??? Если можно, то как??? |
Sandro Half-Dead
Всё, куда можно послать, Вам покажет программа AutoIt Window Info. Другого не дано. |
GTeam
Цитата:
Код:
$ExeFileName = StringRegExpReplace($ExeFileToDownload, "^.*/", "") trigun Цитата:
У тебя в примере скрипт ожидает закрытия окна MsgBox... но пока на экране виден MsgBox, скрипт останавливается, поэтому все функции после него будут запущены только после его закрытия. См. справку по MsgBox(), эта команда возвращает значения, вот пример: Код:
$Ret = MsgBox(36, "Title", "Вы подтверждаете?") Dirk Diggler Цитата:
|
Diamond
Цитата:
Код:
#include <array.au3> |
Вот такую библиотеку накалякал. Кому пригодится - пользуйтесь. Брать здесь .
Код:
Func _FileGetFileName($path) ; выделяет из полного пути и возвращает имя файла |
Dirk Diggler
Цитата:
Цитата:
Вот пример использования: Код:
#include <GUIConstants.au3> |
amel27
Цитата:
Теперь я смогу написать gui для просмотра WMI - пространств имён и классов, которое (на мой взгляд) будет удобней всяких scriptomatic2 и подобных ему программ. Огромное спасибо! |
Dirk Diggler
Цитата:
Код:
StringRegExpReplace($path, "^.*\\", "") Цитата:
Код:
StringRegExpReplace($Path, '\\[^\\]*$', '') Цитата:
|
Цитата:
а регэкпы - это конечно, хорошо. |
amel27
Помню как то ты упоминал о CallBack функциях, не знаю насколько ты следишь за оф. форумом, но думал может пригодится - там обсуждают какие то новые открытия для AutoIt связанные с CallBack, топик так и назвали - CallBack :) (последний пост сегодня, picasso предложил раньше решение без использования сторонних Dll'ок, вот он и делится архивом полный примеров) - Там штурмуют по моему лучшие ума AutoIt'а ;) |
На оф. форуме нашёл способ проверки нажатии какой либо клавиши, давно искал...
Правда там используется файл, с которого берутся (не)всевозможные варианты для клавиш, вот я и решил переделать тот пример в функцию, и вот что получилось: Код:
While 1 Если было что-то нажато, возвращается нажатая клавиша (или даже кнопка мышки), если ничего не нажимается (при проверке в цикле), возвращается 0. P.S Просчитать ВСЕ возможные нажатия клавиш, мне увы, не удалось :(. |
Как из AutoIt открыть ссылку в дефолтном браузере?
|
Dirk Diggler
Цитата:
Код:
ShellExecute("http://forum.oszone.net") |
Доброе утро всем =))
есть файл1 и файл2 в фале2 описанна функция какая-нибуть а в фале1 вызов этой функции в autoit это вообще реально? т.е. запустить файл1 и из него считать функцию из файла2 и вернуть данные на обработку обратно файл1 .. - ? |
Creat0R
Цитата:
proxy собственно, макрос #include как раз и загружает функции, определенные в других AU3-файлах, примеры смотри в справке или тут на форуме... А что значит "вернуть данные на обработку обратно файл"?.. данные читаются и записываются в файл, а обрабатываются "процессом" (или точней - "потоком"). |
amel27
Цитата:
Загружать он (макрос) умеет не только AU3-файлы, но и любые(?) другие текстовые файлы ;) (к примеру: #Include "MyFunctions.fnc"). |
как прочитать/установить права NTFS на папку\файл?? Я даже это в микрософтовском vbs-репозитории не нашел.
|
Dirk Diggler
Цитата:
http://www.microsoft.com/technet/tec...tingGuy&loc=ru :) |
Скрипт для применения темы Присутствуют некоторые отличия от предыдущих. Код:
#NoTrayIcon от DmitryOlenin от amel27 |
Поставил последний AutoIT с поддержкой Unicode...
Теперь возникли серъёзные проблемы почти со всеми скриптами - В частности проблема заключается в том, что невозможно прочесть данные с файла который содержится в кодировке UTF-8. Я до этого использовал функцию _Utf8ToAnsi() от amel27, но теперь она возвращает половину текста, а точнее последние символы либо съедает, либо превращает в иероглифы. amel27: Реально ли поправить функцию _Utf8ToAnsi()? или может есть другие альтернативы в новой версии AutoIt'а? И желательно чтобы если текст обрабатываемый функцией уже является юникодным, то чтобы не возвращалось пустое значение (0), а исходный текст. |
Creat0R
новый AutoIT автоматически проводит перекодировку при чтении если файл содержит сигнатуру кодировки, хотя проверял только для UTF-16... сигнатура для UTF-8: EF BB BF, подробно: http://ru.wikipedia.org/wiki/%D0%AE%...BA%D0%BE%D0%B4. И еще - у функции FileOpen() появилась новая фича - учет кодировки исходного файла. |
amel27
Цитата:
Цитата:
|
amel27, я сделал как они AutoIt-овцы поступили с sqlite 8-))))
сделал библиотеку, размещающую setacl.exe в system32 8-) |
Хочу попытаться автоматизировать настройку Outlook Express.
Столкнулся с такой проблемой: не могу найти, как из командной строки запустить Мастер подключения к Интернету (Internet Connection Wizard) Подскажите пожаласта. Был бы очень признателен за готовые скрипты настройки OE. |
Palych64
Цитата:
Код:
Run (@ComSpec & " /c rundll32.exe netshell.dll,StartNCW","", @SW_HIDE) |
Maza Faka,
спасибо конечно, но это не то... Это запуск Мастера новых подключений (New Connection Wizard). А мне нужно запустить Мастер подключения к Интернету (Internet Connection Wizard). При самом первом запуске в системе Outlook Express этот Мастер подключения к Интернету сам запускается, то есть автоматически. И там нужно заполнять "От кого", имена серверов POP, SMTP и так далее. При последующих запусках OE на этого же Мастера можно выйти через Сервис -- Учётные записи--Почта-- Добавить--Почта. |
Palych64
Цитата:
Код:
Run(@ProgramFilesDir & '\Internet Explorer\Connection Wizard\icwconn1.exe') Код:
Run(@ProgramFilesDir & '\Internet Explorer\Connection Wizard\inetwiz.exe') Код:
;сбрасываем флаг завершения ICW в реестре Цитата:
|
Creat0R
Цитата:
З.Ы. по поводу CallBack я тут подумал - последний вариант может конфликтовать с DEP, так как там для размещения ассемблерных кодов используются функции размещения данных - хак в чистом виде. :) З.З.Ы. еще один баг - в функции _StringRepeat(), катастрофически уменьшающий скорость в циклах, вместо: Код:
$sResult = $sResult & $sString Код:
$sResult &= $sString |
amel27
Цитата:
Цитата:
Цитата:
Цитата:
Хм, видимо и вправду быстрее, этот тест свидетильствует этому: Код:
|
Кто нибудь может мне плиз обьяснить, почему в новой версии AutoIt (v3.2.4.9) попортили половино функции? в смысле теперь все старые скрипты нужно чтательно переписывать...
На данный момент сталкнулся с непознанным - BassMod функция которую привёл тут в пример Diamond (спасибо ещё раз за неё), почему то выводит ошибку: ![]() Что там нужно поменять? Diamond, не подскажешь плиз? :shuffle: |
Creat0R
Цитата:
Цитата:
Цитата:
|
To Sanja Alone
Да, Саня, inetwiz.exe это то, что нужно. Спасибо. Вот,что у меня получилось: Код:
WinMinimizeAll ( ) |
Creat0R
Да уж... я и раньше не разбирался во всём этом, а теперь они ещё больше всё усложнили... В общем в некоторых местах нужно вместо "int" прописывать "int:cdecl" - спрашивается зачем такие сложности, ведь до этого всё прекрасно работало без всяких cdecl и библиотека всё понимала... :idontnow: Я её переписал немного, убрал лишнее и использую как UDF. Пример вызова: Код:
#include <bassmod.au3> Код:
#include-once |
Creat0R
выполняю обещание: Код:
Func _Utf8ToAnsi($utf8string) |
Diamond
Цитата:
amel27 Цитата:
Баг репорт я запостил по поводу _StringRepeat() - и ещё для некоторых функции (_StringProper(), _StringEncrypt(), _HexToString(), _StringToHex())... так что будем надеятся что пофиксят (чтобы самим каждый раз не фиксить). А по поводу бага с DllStructGetData() - я могу им тоже маякнуть, вот только не уверен как запостить, т.е если бы кто-нить написал это на русском (запрос на поправку бага), я бы им это на англ. выложил... хотя у меня английский тоже не на высоте :shuffle: |
Palych64, используйте реестр. Аутлук хранит свои настройки там.
|
Creat0R
Цитата:
Код:
$sFile = @WindowsDir & '\setupact.log' |
Palych64
Цитата:
Код:
$Title='Мастер подключения к Интернету' |
amel27
Цитата:
Т.е всё что нужно так это делить на два и отнимать 2? :unsure: Я правда их достал уже баг репортами :tomato2: ... лично JdeB'а точно достал :biggrin: ... Цитата:
Он не считает это багом. |
Creat0R
Цитата:
когда скрипт от одной UDF уходит в даун я это воспринимаю как баг Цитата:
ADD: я там тебя поддержал vs JdeB ;) Как я понял про чтение бинарных данных - это не баг, а фича... вот уж завернули :ohmy: теперь напрямую без дополнительных преобразований в текст работать с такими данными не получится |
Приветствую.
Вопрос по FileReadLine в autoit 3, необходимо сделать так, чтобы считывались все строки в файле по одной, но с таким условием, чтобы это было возможно после закрытия файла FileClose и повторного открытия. Грубо говоря брутфорс атака по словарю, но с закрытием исполняемого файла программы и повторным запуском, где в поле для ввода пароля заносится следующая строка из текстового файла. Приму любую помощь и воздам по заслугам :) . Стучите асю 111296. P.S. - нет, аналог брутуса я не пишу. |
amel27
Цитата:
Цитата:
Это скажется и при обычной работе с файлами? или в основном при работе с функциями Dll? _atta_ Цитата:
Код:
$ReadFileArr = StringSplit(FileRead("C:\File.txt"), @LF) |
amel27
Ещё одна беда в новом аутоите :( - Измученная функция _FileSelectFolderOldStyle() отказывается работать при использовании фичи для которой она и была изначально задуманна - если указать что либо в параметре InitDir (всё кроме нуля (0) ), то функция “убивает” весь скрипт. Я уже и :cdecl пробовал подставлять под возвращаемое значение, и делил данные на два и отнимал 2... вобщем в итоге ничего не получилось... смог только узнать что функция вызывает сбой на этой строке: Код:
$pidl = DllCall ("shell32.dll", "ptr", "SHBrowseForFolder", "ptr", DllStructGetPtr ($ubi)) |
To Sanja Alone and all
Прикол хотите? Я откомпилировал скрипт набортным компилятором и погонял его на своих компах -- всё нормально. Мой KAV на .exe не ругался. Ладно. Отослал этот экзешник своему коллеге, чтобы он посмотрел и заценил. И тут он мне по аське пишет, что его Dr.WEB детектит этот экзешник, как BackDoor.IRC.FFbot Я сразу загнал этот файлик на virustotal.com. Там 29 антивирусных движков встроено в сайт. И присланный файл прогоняется через все 29. Потом юзеру показывается результат -- что каждый из антивирусов сказал про этот файл. Посмотрел я на результат и -- точно Dr.WEB задетектил там бэкдор. Кроме доктора облажались ещё: eSafe -- suspicious Trojan/Worm VBA32 -- Trojan.Win32.Autoit.ao Webwasher-Gateway -- Worm.Win32.ModifiedUPX.gen!90 (suspicious) VBA32 вообще убил наповал. Мало того, что они этот безобидный екзешник в трояны записали, так они ещё и категорию такую придумали -- AutoIt. А с кого перепуга они задетектили этот экзешник, как вредоносный -- вообще непонятно. Он же просто создаёт штатными виндовыми средствами учётную запись в ОЕ. Просто эмулирует нажатие кнопок и имеет при этом видимые окна. Чего тут криминального? Я написал письмо в Dr.WEB. Описал кратко ситуацию, приложил скрипт и экзешник. Ответили довольно быстро. Подтвердили, что, дескать, -- да, ложное срабатывание и что сигнатуры исправлены. При последующей проверке на VirusTotal Dr.WEB уже ничего не детектил. В VBA32 я тоже письмо написал. Ответа пока нет. Но насколько я знаю, они никогда быстро не реагировали. А ещё у кого-нибудь были случаи, что бы антивири ругались на скрипты AutoIt или откомпилированные экзешники? |
Creat0R
Цитата:
Цитата:
Код:
$ret = DllCall ("user32.dll", "ptr", "GetWindowLong", "hwnd", $hwnd, "int", -4) Palych64 Цитата:
|
Давно искал способ как определить наличие подключения к Интернет, наконец-то нашёл:
Код:
If IsConnected() Then Проверял на DialUp - работает! Второй вопрос, как определить скорость подключения к Интернет? |
Diamond
Цитата:
Правда уже довольно давно и я искал подобное, и amel27 привёл пример (там также можно получить описание причины по которой не доступно соеденение, и ещё разную инфу). Цитата:
Цитата:
Код:
#include <Inet.au3> |
Creat0R
Функции от amel27 и Jon'а пожалуй добавлю в свою коллекцию. Спасибо! Цитата:
|
Creat0R
как и следовало ожидать, piccaso предложил свой новый безDLL'ный метод... хотя он и позволяет использовать все возможности диалоговых окон (в т.ч. Explorer style) по причине нехватки времени пока тупо перегнал _FileSelectFolderOldStyle() Код:
#include <GUIConstants.au3> |
amel27
Цитата:
Правда теперь выбрать другой каталог практический невозможно :idontnow: |
Цитата:
|
amel27
Цитата:
Я так понял теперь можно и стильный диалог отображать? какой флаг для этого используется? :shuffle: (перепробовал все стандартные, не один не подошел). Diamond Цитата:
Сегодня у меня были траблы с инетом, интернет судя по настройкам (Папка “Сетевые подключения”) был подключен, однако не одно приложение не могло получить доступ в сеть - твоя функция вернула True, подключение есть, однако используя пример от amel27, я получил совсем другой результат (соеденение отсутствует), и при этом ещё получил описание ошибки в (не)доступе к сети ;). Так что через объект winhttp.winhttprequest.5.1 намного надёжнее и функциональнее.... хотя у меня такое подозрение, что если с Internet Explorer в системе есть проблемы, то и эта функция провалится :shuffle: |
Цитата:
Код:
Global Const $BIF_NEWDIALOGSTYLE = 0x40 ; Use the new user interface |
Creat0R
Я не знаю, может тебе уже попадалась функция от Gafrost, но там с ней тоже какие-то проблемы. Лично у меня, она вернула "пусто" когда я был в offline. |
amel27
:yahoo: Работает!!! Спасибо ещё раз. Правда теперь стиль $BIF_RETURNONLYFSDIRS не действует если использовать стиль нового диалога :shuffle: - т.е при выборе папки компьютера к примеру, кнопка ОК не становится не активной... но это не страшно.... а, и ещё - в функции небольшая т.н программная опечатка ;) - Переменная $pBrowseCallbackProc не обьявляется в начале скрипта, а только в условии, что естественно в свою очередь вызывает ошибку (она используеться позже в функции вне условия). Кстати, а это нормально что при выборе системной папки (к примеру Мой компьютер), возвращается пустое значение? в оригинальной функции возвращается имя выбранного элемента (“Мой компьютер”). Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
|
Чудовищно туплю!
Надо сделать так, чтоб по нажатию клавиши, в поле вписывалась бы первая строчка текстового файла, повторное нажатие - 2 строчка, и.т.п. Вроде сделал как в хелпе описано и как мне показали ранее: Код:
Case $Proxy Туплю по страшному, не знаю как исправить... |
Как отключить монитор используя WinApi?
|
DenchikK
Может так: Код:
Case $Proxy |
amel27
Цитата:
DenchikK Цитата:
Код:
#include <GuiConstants.au3> |
Maza Faka
Цитата:
|
Maza Faka
Цитата:
Код:
#NoTrayIcon |
Есть такая задача:
Нужно отключить полностью интернет, и подключить через несколько секунд заного.. Пробовал Rasdial, он только отключает, подключать не хочет... хотелось как нибудь добиться этого надёжным путём, т.е чтобы не зависило от типа/имени/настроек подключения. P.S Более полу часа провёл в поисках решения на оф. форуме и естествеено в этой ветке, но увы не нашёл :(. |
Creat0R
Спасибо, а где можно найти подробное описание этой функции? А то в справке очень кратко. В частности не понятны числа "274" и "61808", что они означают? |
Maza Faka
Цитата:
|
Maza Faka
Цитата:
WM_SysCommand - Уведомляет окно о том что выбран именно системный элемент меню, обычно эта команда высылается окну если пользователь щёлкает кнопку свёртывания, развёртывания или закрытия, на панели окна справа. Что такое SC_MonitorPower = 0xF170 я к сожалению не знаю... самому интересно... |
Цитата:
Creat0R Цитата:
|
Я немного изменил функцию от greenmachine.
Код:
MonitorState(2) ; выключить Например у меня не работает режим легкого засыпания($mode=0). |
Creat0R
Цитата:
|
ChVL
Цитата:
Мне нужно программно переподключиться ;) Спасибо за попытку помочь :) Я даже на оф. форум спрашивал, неужели это так сложно? мне казалось что это будет простое решение, но видимо в реале всё совсем иначе :( |
amel27
Цитата:
И как это поможет пересоеденить сеть? |
Теперь понятно, что Вам надо перезапуск соединения. Конечно, отключение/подключение интернет с помощью файерволла соединение не затрагивает.
Тем не менее перезапуск в каком месте? Чего? Сетевой карты? Модема? VPN? Просто виндусового апплета Сетевые подключения? IMHO, в одной программе все варианты подключений (добавить сюда ещё спутник, ускорители, всякие прокси) вряд ли удастся учесть. |
ChVL
Цитата:
Цитата:
Я понимаю что AutoIt немного для других целей назначался, но всё же в нём поддерживаются и COM-обьекты, и вызов Dll, и ещё многое другое, не думаю что это не реализуемо, на аутоите реализовывались(ются) вещи и покруче :) . |
Creat0R
Может посмотреть команды rundll32? Там что-то есть среди Network. |
Creat0R
правка прокси это скорей "запрет на использование", чем переинициализация физического подключения, которое действительно зависит от типа подключения - для диалапа и VPN у меня RasDial и отключает и подключает. |
ChVL
Цитата:
amel27 Цитата:
У меня подключение через модем (VPN - Минипорт WAN (PPTP)). |
Creat0R
Цитата:
Кстати еще вариант - поместить ярлык соединения на рабочий стол, а дальше через контекстное меню. :) |
amel27
Цитата:
Код:
@echo off Цитата:
Цитата:
Код:
#include <GuiConstants.au3> |
|
|
Creat0R
Вот еще вариант через API-функции InternetAutodial и InternetAutodialHangup, правда они работают только с "подключением по умолчанию". Можно поиграть разными комбинациями флагов и в параметрах подключения покрутить настройки. Код:
Global Const $INTERNET_AUTODIAL_FORCE_ONLINE = 0x01 |
amel27
Спасибо за функции, но почему то функция для подключения пишет что соеденение установлено, хотя на самом деле оно не подключается. Я пробовал (как и на оф форуме советуют) предварительно пооткрывать Dll'ки, но результат тот же. А функция _InetDisconnect() вообще выпадает с фатальной ошибкой: ![]() В принципе отсоедениться не проблема через Rasdial /Disconnect - главное подсоеденится обратно. С флагами игрался по всевозможному, а параметры вызова Dll я не осмелился менять, если честно понятия не имею что там должно быть (хотябы приблизительно). |
Creat0R
Цитата:
Цитата:
Цитата:
|
Creat0R
Хм... По идее, если rasdial отключает, то он должен и подключать но при этом необходимо указывать логин и пароль. rasdial 012 UserName Password Если логин и пароль у подключения отсутствуют или неизвестны то я думаю правильное решение дал XXXler - использовать rasphone.exe |
amel27
Цитата:
Diamond Цитата:
|
В AutoIT есть известный баг - когда в системе задан год на выше чем 2037, и используется макрос @Year, скрипт вылетает полностью.
Я предлагаю (временное?) решение: Код:
MsgBox(64, "Get Year", "And the year is: " & Year()) |
Creat0R
Цитата:
|
Diamond
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
|
А как можно проиграть плейлист? Никак не получается, проигрывается первый трэк и скрипт завершается, кому не лень, гляньте плз.
Код:
#include <GUIConstants.au3> \\ws10\d\Music\Scorpions\Scorpions - Destin.mp3 \\ws10\d\Music\Scorpions\SCORPIONS - EYE TO EYE.mp3 \\ws10\d\Music\Scorpions\Scorpions - Holiday.mp3 |
Creat0R
Цитата:
чуть позже выложу CallBack-функцию для "нового стиля" с ограничением типов выбираемых объектов. Код:
#include <GUIConstants.au3> |
Как можно с помощью AutoIt3 использовать обычный Twain сканнер?
|
Maza Faka
Цитата:
Код:
#include <GUIConstants.au3> Чтобы после проигрывания одного трека начал проигрываться другой, нужно использовать библиотеку Sound.au3, там есть функции для определения статуса текущей песни, перемотка песни, ну и в принцепе все основные функции требуемые для примитивного плеера ;) amel27 Цитата:
geka6pucT Цитата:
|
amel27
Есть ещё проблема с функцией _FileOpenDialog() :shuffle: - Если использовать флаг 4 (возможность выделения более одного файла), то функция возвращает очень много символов | и иногда между ними проскакивают разные цифры... Это лечится? |
Товарищи, подскажите кто знает формат командной строки утилиты Exe2aut.exe кот. идет в комплекте с дистрибутивом?
В старых версиях было Exe2aut.exe /in файлю.exe /out файл.au3 . Видимо формат сменился или от комстроки совсем отказались. |
EgOrus,
Цитата:
В 3.2.5.0 её вернули как я понял. |
Creat0R
Цитата:
Код:
If BitAND ($iOpt, 4) Then |
Creat0R
благодарю, бэтку даже и не заметил |
amel27,
Цитата:
|
Как можно послать уведомление в окно GUI, чтобы сработали все функции отзывающиеся на изменение размера окна ($GUI_EVENT_RESIZED и т.п)?
Т.е мне нужно чтобы после появления моего окна GUI, вызвалось что то вроде имитации изменения его размера (как будто бы юзер мышкой изменил размер гуи, и я говорю не про WinMove(), а про изменение с уведомлением (Notifycation)), мне это нужно для того, чтобы все контроли которым присвоено GUICtrlSetResizing(-1, $GUI_DOCKSIZE), поменяли своё положении в соответствии с текущим размером окна (данные о размере берутся с инишки). Относительные позиции контролов заданы (относительно размерам окна гуи), но это не помагает, когда последний размер окна был довольно большим (данные записываются в инишку), то при уменьшении контроли как бы смещаются внутрь, что не есть гуд... перепробовал всевозможные значения размеров (для GUICtrlSetResizing()), но ничего(?) не подходит :(. |
Creat0R
можно примерчик?... "на слух" сложно воспринять ADD: обещанная CallBack-функция для _FileSelectFolder: Код:
Func _MyFSFCallbackProc ($hWnd, $iMsg, $wParam, $lParam) |
amel27,
Цитата:
Код:
#include <GuiConstants.au3> Цитата:
Осталось несколько уточнении :shuffle: 1. Если начальный каталог не имеет слеша на конце (\), то этот каталог не задаётся функцией, а также если начальный каталог является буквой диска, то таких слешей должно быть аж два (C:\\). Я конечно могу это решить стандартными средствами, поставив это в начало главной функции... Код:
If StringLen($sIniDir) <= 3 Then $sIniDir &= "\" Но просто интересно, почему так происходит? 2. Может функцию диактивирования кнопки “ОК” сделать опционально? т.е чтобы это происходило только при использовании флага $BIF_RETURNONLYFSDIRS? (Сейчас оно в любом случае срабатывает). 3. При выборе обьекта рабочего стола, кнопка “ОК” тоже деактивируется, этот обьект вроде является папкой (т.е рабочий путь)? |
С файлами разобрался, добавил ещё одно условие в функцию _MyFSFCallbackProc():
Цитата:
|
Creat0R
1. $iniDir не причем - это у $BFFM_SETSELECTIONA такие требования... поправил через RegExp 2. Думал, но есть ряд трудностей... во-первых я не нашел аналога для $BIF_BROWSEFORPRINTER, во-вторых, это снизит гибкость CallBack-функции (сейчас можно задать любые условия на объект) 3. Добавил функцию _IDLIsDesktop() |
amel27,
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
З.Ы. cмотрю, ты свою проблему с ресайзом решил?.. ;) |
amel27,
Цитата:
Ну к примеру символ |. Цитата:
Цитата:
Код:
#include <GuiConstants.au3> |
Creat0R
Цитата:
Код:
Func _StripLead($str, $chars) Цитата:
З.Ы. к тексту _MyFSFCallbackProc() добавил функцию _IDLPathRegExp()... может быть полезна при выборе конкретных типов файлов, например "*.EXE", маска передается в формате RegExp() ADD: зачеркнул - постоянно забываю, что $BIF_SHAREABLE не влияет на "Ок", он меняет тип выводимых объектов в дереве |
amel27,
Цитата:
Я кстати нашёл ещё один способ как это можно сделать, только не уверен надёжен ли он: Код:
StringRegExpReplace($Str, '\A' & $Char & '+', '') Цитата:
Заметил один глюк при использовании $BIF_BROWSEINCLUDEFILES - Если сразу после появления окна нажать Отмена или ОК (на выбранном элементе), то функция не сразу возвращает (проходит около секунды). И ещё, значки для файлов (если есть таковы в начальном каталоге), все имеют иконку Internet Explorer :) - А остальные значки (для папок и системные элементы), вовсе не имеют значков, все как будто папки... это длится также около секунды, потом всё нормально становится. |
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
|
amel27,
Цитата:
Но и с ствоим методом есть небольшая проблема: Код:
$Char = '\t' Вот функция (для чего вообще мне и требовалось сия опция), позволяет стриппить (обножать) определённый(е) символ(ы): Код:
;======================================= Это конечно можно сделать проверкой длины и т.п... но хотелось именно средствами RegExp... Цитата:
Цитата:
|
Creat0R
Цитата:
Цитата:
Код:
; $Chars - удаляемые символы Цитата:
|
amel27,
Цитата:
Спасибо за (довольно укороченную) функцию _StringStripChars() :) - но в ней тоже есть проблема... К примеру: Код:
$Ret = _StringStripChars("_test_", '-_', 1, 0) А вот к примеру если имеем такую строку: -_-_test_, то используя $Count = 1 должно вернуться -_test_ Код:
$Ret = _StringStripChars("-_-_test_", '-_', 1, 1) У меня получилось это сделать обычными средствами (циклами и проверками String...), но это не так быстро как через RegExp :(. Цитата:
|
Creat0R
Цитата:
Код:
; $SubString - удаляемая подстрока Цитата:
З.Ы. в функции _StringStripChars() была ошибка - слово "Pattern" кое-где было с одной "t" (исправил) |
amel27,
Цитата:
Цитата:
Кстати, теперь почему то не нужно проверять окончание начального каталога, т.е работает без тех двух добавленных строк (с ними кстати НЕ работает :) ). Цитата:
|
Creat0R
Цитата:
Код:
DllCall ("user32.dll","int","SendMessage", "hwnd", $hWnd, "int", $BFFM_SETSELECTIONA, "int", 1, "ptr", DllStructGetPtr($uCB,1)) Код:
DllCall ("user32.dll","int","SendMessage", "hwnd", $hWnd, "int", $BFFM_SETEXPANDED, "int", 1, "wstr", DllStructGetData($uCB,1)) Цитата:
|
Премного извиняюсь, почитал документацию, немного разобрался, стал скрипты писать, все ок, но теперь понадобилось сделать так, чтобы если программа уже установлена, то скрипт завершался, сразу не нашел , а тут страниц очень много, подскажите пожалуйста :)
Типа такого: if exists ("c:\1c\1c.exe") Then Exit |
spooll,
Либо так и проверять, к примеру: Код:
If FileExists(@ProgramFilesDir & "\MyProgram\Program.exe") Then Код:
If RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ICQLite", 1) Then |
Цитата:
|
amel27,
Цитата:
Цитата:
P.S У меня такой вопрос - если я использую новый стиль, а скрипт будет запущен на старой машине (где он не поддерживается, т.е где ещё нету IE 5), что произойдёт с этой функцией? она перейдёт в старый стиль, или сразу вернёт ошибку? или вообще скрипт выпадет? :) |
Вот еще ребят!Почему-то не работает время winWaitActive , т.е когда я указываю время:
PHP код:
|
spooll
У меня работает: Код:
WinWaitActive("Безымянный - Блокнот", "", 100000) |
spooll
Зачем выставлять сто тысяч секунд? (Обычно 2-3 секунды бывает достаточно.) :) Код:
$ret = WinWaitActive ("Текстовый документ", "" , 3) Код:
$ret = WinWait ("Текстовый документ", "" , 3) |
Maza Faka,
да заголовок тот, то что показал Diamond, вроде подходит, только это придется все перебивать чтоли, чесно я еще не задавал никогда переменные типа Цитата:
Код:
If FileExists("C:\Program Files\1Cv77\BIN\1CV7s.exe") Then |
spooll
Цитата:
Код:
BlockInput(1) Код:
BlockInput(0) |
spooll,
Цитата:
Можно ещё поставить на выполнение чтобы все окна постоянно сворачивалось (хотя не идеальный вариант): Код:
AdlibEnable("MinimizeWindows", 100) Код:
WinMinimizeAllUndo() |
Как можно узнать заголовок окна сохранения?
На каждой системе, в зависимости от язка системы, этот заголовок будет разным, на английской к примеру Save As, на русской Сохранить как, а как быть с системами на других языках? может можно как то получить это имя с конфигов системы? где оно всё хранится? |
Creat0R
Цитата:
Цитата:
Цитата:
На заметку. Незадействованные возможности SHBrowseForFolder(): - сообщение $BFFM_SETEXPANDED. По ходу толку от него мало, так как работает глючно (у меня). - сообщение $BFFM_VALIDATEFAILED. Имеет смысл только при использовании поля редактирования (флаг $BIF_EDITBOX), можно к примеру выводить текст предупреждения или затенять "Ок" если набран несуществующий путь.... реализуется просто, вот только надо ли? - сообщение $BFFM_SETOKTEXT, поддержка минимальная (только для $BIF_RETURNONLYFSDIRS), для расширенной проверки атрибутов выбранного элемента придется ваять свой вариант CallBack-функции (как в _MyFSFCallbackProc)... либо нужно сочинять свой набор флагов и через него передавать какие типы нам нужны; - есть возможность по ходу возвращать код картинки (иконки) выбранного элемента; - есть возможность фильтрации отображаемых элементов, это более мощное средство чем затенение "Ок", но средствами одного скрипта нереализуемо, т.к. нужно создавать свой COM-объект.... как варианты: 1) использовать DLL, 2) использовать скрипты WSH. Первый сложней в реализации, но быстрей, второй - проще (через VBS-скрипт), но дюже медленный.... особенно если учесть, что объект будет вызываться для КАЖДОГО элемента списка. |
Цитата:
ADD: DLL тоже не гарантия - если на английский WIN накатить MUI (к примеру - русский), то текст заголовка будет взят из файла \WINDOWS\MUI\FallBack\0419\comdlg32.dll.mui |
Maza Faka,
:laugh: Я конечно подозревал, но всеравно запустил скрипт с Цитата:
Как сделать чтобы допустим при заминки или просто не выполнения скрипта, блок снимался? :) |
spooll
Цитата:
Другой вопрос, почему этого не происходит? - Причин может быть несколько, вот одна из них: Если в WinWaitActive() или WinWait() время ожидания не указано или указан 0, то в случае ошибки, ожидание будет бесконечным. |
То есть если имеем
Код:
BlockInput(1) |
spooll
Тогда WinWaitActive подождёт 10 секунд и затем перейдёт к следующей команде , а если WinWaitActive дождалась активного окна раньше 10 секунд, то переход произойдёт сражу же. Добавлено: Например можно заключит всё это в функцию, чтобы в случае ошибки выйти из неё. Код:
test() |
spooll,
Цитата:
|
Diamond, спасибо за пример, переделал весь скрипт, немогу протестить как он поведет в случае ошибки, но все прошло гладко. Надеюсь завтра с утра мне не посыпятся звонки :)
И еще, я так понял, т.к AutoIT работает с активными окнами, то тихую установку без известия пользователя не сделать!Так ведь? Типа как параметр /quiet у msi пакетов?! :dont-know |
Код:
Case $msg = $playlist |
Блин, чегойто я натворил непонятно, только все работало...
PHP код:
PS.Попробовал навсякий на нескольких компах, прежде чем установить скрипт в автозапуск, оказалось что на разных машинах, скриптзастревает в разных местах, хотя у кого-то проходит сразу!, также не отключается блокировка и т.д.Везде поставил время WinWaitActive 20, но всеравно виснет.Подскажите, очень нужно ! |
Некоторое время назад здесь приводился скрипт, для отключения монитора. Я его запустил, да только при любом шевелении мышкой или клавиатурой монитор включается! Как сделать так, чтобы монитор включался ТОЛЬКО по горячей клавише. Хочется управлять винампом горячими клавишами клавиатуры не включая монитор.
|
spooll
У тебя ошибка в синтаксисе функции "$ret=WinWaitActive("Создание нового каталога", 20)" Цитата:
Код:
WinWaitActive("Создание нового каталога", "", 20) Код:
If WinWaitActive("Создание нового каталога", "", 20) Then |
Maza Faka,
лично у меня не пашет вот эта строка PHP код:
Цитата:
|
spooll
Цитата:
Лично я бы использовал только WinWait() и ControlClick(). Во-первых, при этом отпадает необходимость в BlockInput(), во-вторых, ControlClick() обращается непосредственно к элементу(кнопке), поэтому вероятность ошибки здесь минимальна. |
amel27
Цитата:
Код:
Round(FileGetVersion(@SystemDir & "\system32\comctl32.dll"), 1) Цитата:
Цитата:
Цитата:
Цитата:
Я пока остановился на таком решении: Код:
Opt("WinTitleMatchMode", 4) spooll, Во-первых для ручного отключения BlockInput() не нужно жать ресет, нужно вызвать сочетания клавиш Ctrl Alt Del ;) Во-вторых, зачем тебе постоянно ждать активность окна? можно просто ждать появление окна (WinWait()). Цитата:
Вот пример как ты можешь это сделать: Код:
Везде где в функции ControlClick встречается "Button", замени на настоящее имя контроля (используя утилиту Au3Info.exe). |
Maza Faka,
Цитата:
Дело в том, что многие плейлисты содержат пути относительно корню диска, т.е типа такого: \My Music\Vechnoya Moladast.mp3 Если скрипт лежит к примеру в папке C:\test, и файл находится по этому пути: C:\My Music\Vechnoya Moladast.mp3, то считав тот относительный путь файл будет проирываться. Я у себя в плеере для этого сделал поддержку глобальных путей, при каждой попытке проиграть файл, проверяются все пути (записанные в массив при открытии плейлиста и проигрывании файла), в первую очередь естественно проверяется корень диска, затем по очереди все остальные пути, в которых кстати включён рабочий каталог (потому как он задаётся авоматом функцией FileOpenDialog) и каталог в котором находится сам скрипт. |
VelDmi,
Цитата:
Код:
#NoTrayIcon При этом любые сочетания клавиш действуют как обычно. Это конечно не то что требуется, наверняка(?) можно полностью выключить монитор, но это тоже решение ;) |
Накалякал тут функцию для конвертирования даты и времени в настойщий фрмат, но может это возможно сделать более укророченным путём?, а главное, чтобвы срабатывало быстрее:
Код:
$FullDateTime = _DateTimeConvertFormat("DD/MM/YYYY, HH:MM:SS") |
VelDmi
Цитата:
Creat0R Цитата:
Цитата:
Цитата:
Цитата:
|
Написан скрипт автоматической установки ПО. При обычном запуске все работает отлично. При включении этого скрипта во входной скрипт подключения к домену он начинает работать, скачивает необходимые файлы, распаковывает, запускает, но затем появляется окно мастера установки, и инструкции ControlClick не отрабатываются, хотя на обычное нажатие кнопок реагирует адекватно.
Предполагаю, что это может быть связано с тем, что входной скрипт отрабатывается в фоновом режиме, но решения придумать не могу. |
amel27,
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Opt("WinTitleMatchMode", 4) Код:
Opt("WinTitleMatchMode", 4) Цитата:
Цитата:
А по поводу двух функции, не обязательно: Код:
$RetDateTime = StringReplace($RetDateTime, "mm", $Mounth_Raw, 1) |
Creat0R,
Цитата:
Жаль только у меня код не работает. Монитор выключается и тут же включается. Я сделал следующим образом и это работает: Код:
Opt("WinTitleMatchMode", 4) |
Creat0R
Плз глянь скрипт, что не так? Скрипт запускается из корня диска "C:\". Если открываю mp3-файл на диске "C:\", то файл проигрывается нормально, если открываю mp3-файл на диске "D:\", скажем "D:\Music\Taxi\TAXY-4.mp3", то тоже всё нормально, но если в пути или имени файла есть пробелы, то файл не проигрывается, причём такой глюк, только если файл на "D:\" диске, с "C:\" диском, всё нормально. Код:
#include <GUIConstants.au3> |
VelDmi,
Цитата:
Цитата:
Цитата:
Ради проверки, попробуй поставь Beep() после функции _IdleWaitCommit(0) (в цикле где она вызывается), по идее звук должен прозвучать только после первого выключения, и каждый раз при вводе с клавиатуры или мышки. Maza Faka, Цитата:
Maza Faka, Для начала я бы проверил тот же путь который "не работает" напрямую - т.е возьми укажи сразу этот путь (в отдельном скрипте), и просто сделай так: Код:
$OpSound = _SoundOpen("D:\полный путь к файлу") |
Creat0R
Не понимаю, вот с таким путём проигрывается: Код:
#include <Sound.au3> Код:
#include <Sound.au3> |
Maza Faka,
Цитата:
Во-вторых, чтобы окончательно "отсеять вину" самого пути/файла, попробуй проиграть этот же файл используя встроенную функцию SoundPlay(). Я создал у себя точно такой путь, поместил туда файл с точно таким именем, всё нормально играет.. Проблема видимо в самом файле. Если хочешь залей файл, я проверю у себя. |
Creat0R
Мистика какая-то. Запускаю скрипт: Код:
#include <Sound.au3> Похоже глюк Винды, из каталога "D:\Music\Steve Vai" скопировал все файлы в другой каталог, удалил каталог "D:\Music\Steve Vai", создал его же заново, скопировал туда все mp3-файлы, которые там раньше находились, и о чудо! музыка заиграла! Что за хрень такая? |
Maza Faka,
Цитата:
Вообще можно проверять ошибки используя пример из справки: Код:
#include <Sound.au3> Цитата:
Как получал путь к файлу? ручной ввод? или копирование с адресной строки? (или ещё другими методами). |
Creat0R
Цитата:
Цитата:
Цитата:
Ладно, прекратим этот оффтоп, думаю это частный случай, связанный с моим компом. |
Creat0R
Цитата:
|
Maza Faka,
Цитата:
Diamond, Цитата:
Немного(?) переделал под свои нужды: Код:
While 1 |
Creat0R
Цитата:
А зачем Sleep() добавлена дважды? И ещё, постоянно происходит открытие/закрытие dll'ки, имхо лучше использовать один раз DllOpen(), а затем обращатся только к хэндлу (я поправил, и у меня CPU уменьшилось в полтора раза) - Хотя, на самом деле, всё это мелочи, ;) спасибо ещё раз! :) |
Реестровый способ установки обоев рабочего стола.
Код:
;~ Этот метод только для BMP-файлов, (!проверено только на Windows XP!) К сожалению этот способ работает только с BMP-файлами, поэтому для конвертации из *.jpg во временный *.bmp я пользуюсь консольной утилитой P.P.S. Хотелось бы конечно решить проблему конвертации средствами AutoIt. Думаю это возможно, поскольку при ручной установке обоев через апплет(desk.cpl) система сама конвертирует их в bmp, но как она это делает - для меня пока загадка. |
1. Как создать MDI-окно($WS_EX_MDICHILD) внутри родительского и как переключаться между ними? Наподобие того, как это делает программа установки... (типа страничного перелистывания: NextPage - PreviewPage).
2. Зачем нужен стиль $WS_GROUP? Я читал справку но так ничего и не понял... |
Diamond,
Цитата:
Цитата:
Хотя в принципе для MDI-окон (почти) можно попробовать типа такого: Код:
#include <GuiConstants.au3> Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
|
Diamond,
Цитата:
Код:
#include <GuiConstants.au3> И стиль $WS_EX_MDICHILD не совсем делает нужный “эффект”: Цитата:
Код:
#include <GuiConstants.au3> Цитата:
|
Diamond,
По поводу смены обоев - вот тут нашёл кое что: Код:
DllCall('shell32', 'long', 'SetWallpaper', 'string', $sFile, 'int', 0) |
Пытаюсь сделать функцию для массовой замены по тексту используя флаг “Whole word only” (только слово целиком) - Но всё что у меня получилось, так это замена нужного текста + тех символов которые считаются как разделителями между словами (Таб, пробел, перевод строки, возврат каретки, начало строки, и конец строки):
Код:
$Ret = _StringReplace_WholeWord(@TAB & "test" & @CRLF & "_test_" & @CRLF, "test", "000", 0) |
Creat0R
Цитата:
Цитата:
Код:
$s = @TAB & "test" & @CRLF & "_test_" & @CRLF |
Creat0R
Спасибо за примеры. Получил полное моральное удовлетворение. :) Цитата:
Цитата:
Цитата:
Нашёл!!! :yahoo: http://www.autoitscript.com/forum/in...howtopic=50753 - конвертирует в BMP и устанавливает обои, но для самой функции нужна библиотека AutoItLib.au3 (Библиотеку можно найти там же) Вот эта функция: Код:
#include <.\AutoItLib.au3> |
amel27,
Цитата:
Цитата:
Цитата:
Спасибо! |
По поводу функции конвертирования формата даты - всё таки пришлось делать две функции, проверьте плиз кто нибудь, как оно работает:
Код:
$FullDateTime = _TimeConvertFormat("HH:MM:SS") & ", " & _DateConvertFormat("DD/MM/YY") |
Цитата:
Код:
Func _TimeConvertFormat($sFormat) |
amel27,
Цитата:
Но мне всё же нужно доделать чтобы оно работало с одной строкой (где может встречаться и дата, и время)... вот что пока получилось: Код:
$Str = 'DD/MM/YYYY, [HH;MM;SS]' |
Цитата:
Код:
$Str = 'DD/MM/YYYY, [HH;MM;SS]' |
Упрощённая схема кода:
Код:
#include <GuiConstants.au3> Код:
AdlibEnable("Play", $time) |
Добрый день!
не подскажет ли кто по сочетаниям клавиш в AutoIt...SendKey. программа выполняет сохранение файла в Exel. Меню "Файл"- >Enter->-5 раз Down - будет "сохранить как" Но! другие пользователи поменяли меню "Файл", удалив из него открыть и закрыть...в результате 5 раз Down получилось - печать! скрипт не работает:( по идее надо бы сделать сочетание клавиш Ctrl+S, но ControlSend("^{S}") просто печатает в ячейке S. не могу понять в чем дело( в кодировках? как быть? Буду благодарна за любой ответ. |
SvetlanaK
Попробуй так: Код:
Opt("WinTitleMatchMode", 1) |
SvetlanaK
Можно и с помощью COM: Код:
$sFilePath = 'D:\MyDoc\Sample.xls' ;путь файла для выполнения действий над ним |
amel27,
Цитата:
Я правда добавил небольшую подстраховку на $Stamp :) Код:
Func _DateTimeConvertFormat($sFormat) Maza Faka, Цитата:
Код:
#include <GuiConstants.au3> Цитата:
Попробуй активировать окно Excel (тем самым убрав фокус с ячеек), затем вызвать клавиши. Но тут возможна всплывёт другая проблема - если раскладка языка клавиатуры по умолчанию будет русской к примеру, тогда это сочетание не сработает, нужно будет делать так: Код:
If @KBLayout = 0419 Then |
Maza Faka, Sanja Alone,
к сожалению эксель появляется открыто, "мелькает" так сказать...потому что файл появляется в результате принудительной выгрузки из другой программы (та программа так делает, по-другому никак). вот и висит этот листик на экране, и сохранить его в нужное место с нужным именем и закрыть- задача номер один.... спасибо за подсказку, Objekt - это интересная идея, но результат выполнения такого скрипта - "лежащее " окно "сохранение документа":( , и вытящить его на поверхность чтобы ввести наконец нужное имя файла никак не удается((( и еще в связи с этим, в вашем примере $sFilePath = 'D:\MyDoc\Sample.xls' ;путь файла для выполнения действий над ним непонятно , а каком месте оно применимо( ведь команда Save не предполагает опций - куда и с каким именем... в англоязычном хелпе ничего не нашлось по этому поводу((( Спасибо за ответ. Creat0R, не работает этот вариант( все равно пишет s((( кстати пробовала WinMenuSelectItem - не могу добиться чтобы работало хоть где-нибудь! хотя бы в том же самом вордпаде((( |
Блин, протестил на нескольких компах, все ок. Добавил в автозагрузку 100 юзерям и у всех на разных окнах позависало просто, подскажите вариант более надежный :(
PHP код:
|
SvetlanaK
Цитата:
Код:
$dFilePath = "D:\MyDoc\Результирующий_файл.xls" ; путь целевого файла Цитата:
|
Sanja Alone, что-то не получилось...но вообще пример ваш интересен, пригодится в написании логов...
откуда только Вы это берете - не знаю, я весь хэлп перерыла, ничего подобного не нашла...видимо вы гений, или автор автоита:) нашла я очень простое решение, публикую его. может кому-то пригодится. Send("{Alt}{Ф}") Send("{с}") сочетание букв с альтом почему-то работает в отличие от контрола... альт - ф активизация меню файл, а потом нажатие клавиши с и открывается окно сохранения. а почему с контролом ни одна буква не работает - для меня большая загадка.... В общем - большое Вам спасибо за тепрение и внимание к моей проблеме. |
SvetlanaK
Цитата:
Код:
If Not FileExists(StringLeft($dFilePath, StringInStr($dFilePath, '\', 0, -1))) Then DirCreate(StringLeft($dFilePath, StringInStr($dFilePath, '\', 0, -1))) Цитата:
Цитата:
Узнать хоткей для любого контрола легко - это будет Alt+буква с подчеркиванием в тексте. Если "посмотреть" на этот контрол с пом. AutoIt Window Info, то перед этой буквой будет амперсанд: Код:
;фрагмент информационного окна AutoIt Window Info: Цитата:
|
PHP код:
|
Maza Faka
Цитата:
Код:
The following hotkeys cannot be set: |
Я извеняюсь........может этот подымался.......просто интересно.......при установке винды устанавливается руская раскладка клавиатуры по умолчанию(есть люди которые так ставят).....в автоскрипт вписана смена раскладки на ангиский, работает........но вместо ввода с клавиатуры допустим...C:\Alcohol Soft......вводится......\A Ї.....че за бред может быть??.....англиский язык тоже установлен....но не основным!......когда чтоит Англиский по умолчанию...то все отлично....
|
Накарябал скрипт для поиска и удаления строк дубликатов, в принципе работает, но только если заменять строку дубликат любым символом, а вот просто удалить строку не заменяя её каким либо символом никак не получается, посоветуйте, как исправить?
PHP код:
PHP код:
|
Всё, разобрался. :)
Код:
#include <File.au3> |
Angelus
Цитата:
Как вариант менять раскладку перед посыланием символов, либо (намного надёжнее) писать текст используя ControlSetText(), ведь как я поняол нужно вписать текст в определёное поле другого приложения? Цитата:
Я лично такой метод использую: Код:
$File = "C:\test.txt" |
Creat0R
Красиво, но для меня пока сложновато :( Непонятно вот это Код:
SetError(1, 0, -1) |
Maza Faka,
Цитата:
|
Maza Faka, Creat0R
еще два варианта удаления дублей: в 1-м случае файл подается в виде строки, во 2-м как массив строк Код:
#include <array.au3> |
amel27,
Цитата:
Правда этот метод расчитан только если попадаются как разделители строк @CRLF, а как быть с теми случаями когда строки поделены только лишь @LF/@CR? пробовал похимичить с Pattern, ничего не вышло :( . |
amel27
Немного исправил твой код: Код:
#include <Array.au3> |
Цитата:
Цитата:
З.Ы. На самом деле AutoIT поддерживает не все возможности регулярных выражений, поэтому приходится выкручиваться. |
amel27
В итоге сделал так: Код:
#include <Array.au3> |
Maza Faka
я тут подумал насчет твоего варианта - почему он работает хотя вроде не должен... ведь действительно, если использовать встроенную защиту _ArraySearch() код можно еще сократить :) Код:
#include <array.au3> |
amel27
Цитата:
|
Creat0R
еще немного поразмыслил - про "+" я пожалуй не прав (были и другие варианты) - если поставить "*" функция должна корректно отрабатывать @LF/@CRLF, ну а про @CR я уже сказал... Кстати, из каждой пары одинаковых строк остается первая а вторая удаляется, если нужно наоборот достаточно поменять подстановку "\1\2" на "\2\1". |
amel27
Откуда такие познания в синтаксисе регулярных выражений? Может FAQ есть какой подробный? |
amel27,
Вобщем видимо это оптимальный вариант, без никаких массивов, и сторонних библиотек: Код:
$File = "C:\Test.txt" Maza Faka Цитата:
И вот ещё ресурс посвящённый RegExp. |
Creat0R
Цитата:
Maza Faka Цитата:
|
amel27, Creat0R,
Цитата:
amel27 Сохранил весь топик в версии для печати и изучаю. Наткнулся на твой скрипт(я его немного изменил, вернее упростил для себя): Вот так работает: Код:
$Dir2 = LinesDelete("c:\dir2\xxx.sif", "text_1") Код:
Func LinesDelete($path, $string) |
Всем здравствовать!!!
Вопрос такой,как с помощью АвтоИт сравнить дату создания двух файлов.С ехе файлами проше,их я сравниваю при помощи FileGetVersion (),но мне надо сравнивать не только ехе ,но и другие типы файлов.Подскажите что-нибудь или ссылку дайте где можно почитать.Спасибо |
13ghost
В скриптовом языке AutoIt есть функция FileGetTime, с помощью которой можно получить информацию о дате и времени последней модификации указанного файла. Поробнее можно посмотреть в справке. Узнать именно дату создания файла вряд ли возможно. Так как она храниться не в файлах, а служебных таблицах ОС. |
amel27,
Цитата:
Код:
'(?s)(?m)(^[^\n]+\n)(.*?)^\1' Или вовсе убрать (^\1)? хотя так не работает :) - цикл не прерывается. Цитата:
А тут вообще этого добра полно ;) Maza Faka, Цитата:
Для этого и потребовалось перербирать массив с конца к началу (For $i = $StrArray[0] To 1 Step -1), где будут проверяться меньшие элементы, в данном случае ошибки быть не может. Алексей Н., Цитата:
Цитата:
Код:
$FileTimeArr = FileGetTime(@SystemDir & "\Notepad.exe", 1) |
Доброго времени уважаемые...нет ли какой нибуть возможности сделать автоустановку приложения пользователем без прав, если ему надо устанавливает, нет удаляет... возможно ли как нибуть зашить в код строчку типа RunAs
|
Creat0R
Цитата:
Цитата:
|
mikola1983
Цитата:
|
Maza Faka,
Цитата:
Цитата:
Но тут конечно нужны знания (основные) Английского, хотя куда без них учиться программировать ;) |
Цитата:
Цитата:
Код:
Func _LinesDelete ($text, $string) |
Maza Faka,
If Not IsAdmin() Then RunAsSet('a.pupkin', 'trew', '123qwe') Run('\\Distr\XnView-win.exe') Exit EndIf MsgBox(0, 'Message', 'Now running with admin rights.') не хочет работать .в чем проблемма? |
Вложений: 2
Creat0R,
Лично на моем компе, хоть тресни, но виснет в этом моменте PHP код:
Тот что ты предложил с . PHP код:
WinWait("Добро пожаловать", "&Далее >") ControlClick("Добро пожаловать", "&Далее >", "Button1") приложу скрин этих окон с AutoIT info. если все верно и не ясно почему не работает, я пойду повешусь и не буду больше доставать, но может я че не так делаю?! |
mikola1983
Цитата:
|
Почему функция возвращает переменную $count равную нулю, хотя файлы были найдены и удалены? Сначала я подумал, что это происходит если существуют подкаталоги, так, как при нахождении каталога функция вызывает саму себя и соответсвенно снова происходит декларирование переменной: Local $count = 0, но удалив подкаталоги, я обнаружил, что проблема не исчезла, функция всё так же возвращает переменную $count равной нулю. Я понимаю, что это даже не проблема, так как переменную можно обьявить вне функции и тогда счётчик будет приращиваться, но всё же интересно, почему так происходит?
Код:
Dim $delFile[3] = [2, "soccer5.bmp", "soccer9.bmp"], $path[3] = [2, "c:\test", "c:\1"] |
spooll,
Цитата:
Код:
Opt("RunErrorsFatal", 0) Если программа 1c небольшая, залей куда нибудь (или дай линк на неё), попробую потестить у себя. Maza Faka, Цитата:
На мой взгляд тут есть два варианта решения - 1) Проверять не обьявлена ли уже переменная (If Not IsDeclared($count) Then Local $count = 0), 2) (более правильный) - добавлять к $count возвращённое значение от повторного вызова функции DeleteFile()... Код:
Dim $delFile[3] = [2, "soccer5.bmp", "soccer9.bmp"], $path[3] = [2, "c:\test", "c:\1"] |
Creat0R
весит 27 мб, желательно опробовать на паре компов(или несколько раз), т.к слабые у нас грузят окна бывает порядком больше времени, но что характерно, даже если убрать время, то при появлении окна всеравно ничего не происходит =\ http://www.rapidshare.ru/376488 заранее большое спасибо ;) |
Creat0R
Цитата:
|
spooll,
Цитата:
Попробую скачаю, завтра отпишусь о результатах.. Maza Faka, Цитата:
Код:
Dim $PathFile[2][2] = [["c:\test", "c:\1"], ["soccer5.bmp", "soccer9.bmp"]] |
Как правильно изменять размерность массива? Вот так не работает:
Код:
#include <Array.au3> |
Цитата:
|
spooll
Кажется нашёл твою проблему(ы)... У тебя видимо в настройках автоматом подставляется Организация:, если там пусто (у тех у кого этого не происходит), то кнопка Далее не активна, отсюда могут быть многие зависания. Поэтому нужно проверять это дело... Далее, окно с подтверждением этой информации, и многие другие окна почему то требует активирования чтобы нормально нажать кнопку.. У тебя ожидается окно "Создание нового каталога", как ты уверен что оно появится? а вдруг каталог уже существует? С такими скриптами нужно стараться учитывать все варианты ;) Вот что у меня получилось: Код:
Opt("RunErrorsFatal", 0) Если я правильно понял, то в этом случае можно вообще не трогать массив: Код:
$var = DriveGetDrive("All") |
Creat0R
Цитата:
amel27, Цитата:
Код:
#include <Array.au3> |
Maza Faka,
Цитата:
Цитата:
Код:
#include <Array.au3> |
Creat0R
Спасибо за пример. Так вроде тоже работает: Код:
#include <Array.au3> |
Как сделать, что бы работал $Gui_Event_Close в цикле "For"?
Код:
#include <GUIConstants.au3> |
Maza Faka,
Цитата:
Кстати, amel27 как то у меня спрашивал, откуда у меня такое недоверие к $Array[0], вот именно функция _ArrayDelete() и доказывает, что надёжнее использовать Ubound($Array)-1 ;) Вот ещё пример с ReDim... Код:
#include <Array.au3> Цитата:
Хотя я бы в данном случае использовал Events (события) метод... Код:
#include <GUIConstants.au3> |
А многие ли знают о том, что скомпилированный скрипт работает почти как полноценный интерпритатор кода AutoIt?
Т.е если мы скомпилируем скрипт, перенесём екзешник на компьютер где нет аутоита, и совершенно в любом файле (текстового характера), впишем код с синтаксисом AutoIt, то примерно следующая строка сможет выполнить этот файл как любой au3 файл где установлен AutoIt: Код:
Run(@AutoItExe & ' /ErrorStdOut /AutoIt3ExecuteScript "test.app"') Таким образом к примеру, можно даже создавать собственный (примитивный однако) язык программирования :clever-ma . А ещё можно выполнять код программы без вывода критических сообщении (если скрипт выпадает). |
Цитата:
Цитата:
Код:
Run(@AutoItExe & " /ErrorStdOut /AutoIt3ExecuteLine " & chr(34) &"MsgBox(0, 'Привет', 'Привет от:'& @CR & @computername)"& chr(34)) |
amel27,
Цитата:
Цитата:
|
Creat0R
Спасибо за примеры с Redim и Progress! Цитата:
Цитата:
Цитата:
|
Maza Faka,
Цитата:
А вот как заставить первичный скрипт не выпадать с фатальной ошибкой (т.е выпадть, но без сообщении), я если честно и сам не могу сообразить... разве что писать весь код программы во временный файл, и запускать с нужными параметрами из закомпилированного скрипта... но это кажется не очень практично. |
как сделать предложение пользователю. хочешь установить? если да то происходит установка если нет то генерится сообщение и высылается на емайлесли у кого есть готовый скрипт поделитесь пожалуйста.
|
mikola1983,
Цитата:
Код:
$Ask = MsgBox(36, "Вопрос", "хочешь установить?") |
Creat0R
Как сделать это-же, только в режиме OnEvent? Код:
#include <GUIConstants.au3> Код:
#include <GUIConstants.au3> |
Creat0R
Цитата:
|
Пасипа ... а есть какой нибуть вообще вариант отчета ....возможно 1 файл в который дабавятся имена ПК или логоны юзеров ...что нибуть такое по чему можно былобы определить кто отказался от установки.?
|
Creat0R,
Огромный труд, поклон тебе, мне до такого не дорасти наверное;) У меня на компе также виснет 1ый экран, но тут явно, что я его затаскал уже вконец:) Буду ставить юзерям, думаю все ок будет.Спасибо еще раз 8) |
mikola1983,
Цитата:
Код:
$Ask = MsgBox(36, "Вопрос", "хочешь установить?") |
Maza Faka,
Цитата:
Код:
#include <GUIConstants.au3> amel27, Цитата:
Связь у этих ключей тут одна, запуск скрипта в "тихом режиме" :) |
Creat0R,
Цитата:
Код:
#include <GUIConstants.au3> |
Maza Faka,
Цитата:
Код:
#include <GUIConstants.au3> |
Creat0R,
Цитата:
Цитата:
|
Creat0R
Цитата:
Код:
; Проверка ключей и перезапуск в "тихом" режиме |
Здравствуйте всем.
Не подскажете, как с помощью AutoIT'а отловить окно с неизвестным заголовком. Проблема в том, что заголовок частично на другом языке, частично на английском. WinWait() по описанию должен отлавливать по подстроке заголовка (англ части), но в данном случае этого не происходит. Можно ли как-то отловить окно, не зная заголовка, зная, к пример, что оно запустится через Run("..") ? Спасибо. |
nns
При помощи утилиты "AutoIt Window Info" определи класс окна и сопостовляй поиск окна с пользовательским режимом. Пример на блокноте: Код:
Opt("WinTitleMatchMode", 4) |
Maza Faka,
Цитата:
nns, Цитата:
amel27, Цитата:
Цитата:
Maza Faka, Цитата:
Код:
Opt("WinTitleMatchMode", 2) Я на оф. форуме запостил предложение о том чтобы добавили поддержку совмещения classname и regexp при расширенном поиске окон, но они вроде не собираются ничего предпринимать :( Если они это сделают, тогда можно будет искать окно примерно так: Код:
Opt("WinTitleMatchMode", 4) |
Цитата:
|
Maza Faka,
Цитата:
Цитата:
|
Обновил скрипт который предназначен для вставки AutoIt-кода в разукрашенном виде на форум - Au3ToPost 1.4:
![]() ![]() История версии: Цитата:
Закачать можно отсюда... |
а есть ли возможность в автоит работать с чек боксами или радио кнопками? иногда не удобно писать {SPACE}{DOWN}{SPACE}{DOWN}{SPACE}...особенно если их много....есть ли более простой способ указывать чек бокс.
|
mikola1983,
Цитата:
К примеру используя ControlCommand() или ControlClick()... Код:
#include <GuiConstants.au3> |
Цитата:
Код:
ControlCommand ( "title", "text", controlID, "Check", "") P.S. Ты в справку заглядываешь? ;) |
Пасипа ) заглядываю но совет гуру луччи любой справки ....тем более я только начал осваивать данную программу и пока тяжеловато мне со справкой.
|
Почему функция StdOutRead() так странно работает? Вот к примеру скрипт:
Код:
$foo = Run(@ComSpec & " /c @dir /b e:\", @SystemDir, @SW_HIDE, 4+2) |
Почему функция возвращает ноль?
Код:
Dim $path |
Никто не в курсе почему часть скрипта
Код:
$ex = 0 |
Angelus
Попробуй так: Код:
AdlibEnable("Wow") |
Maza Faka,
Цитата:
Видимо отдаются не все данные сразу, можно их склеивать ;) Код:
$foo = Run(@ComSpec & " /c @dir /b e:\", @SystemDir, @SW_HIDE, 4+2) Цитата:
Кстати, у тебя проверяется на папку, но проверять нужно содержится ли буква D в возвращённом значении от FileGetAttrib(), потому как папка может ещё иметь атрибут скрытый и т.п ;) Angelus, Цитата:
Кстати, вместо Run('tskill...') можно использовать ProcessClose() ;) |
Накалякал тут функцию для отображения MsgBox со счётчиком отсчёта + возможностью указывания hWnd (идентификатор окна к которому будет относится сообщение):
Код:
_MsgBoxCount(36, "Hello World!", "Hi!", 5, WinGetHandle("")) Пробовал через StdOutRead, но не выходит :( - Пример попытки через обычный MsgBox(): Код:
$Ret = _MsgBoxCount(36, "Hello World!", "Hi!", 5) |
Creat0R,
Цитата:
Код:
Dim $path |
Maza Faka,
Цитата:
Какого назначение этой функции? сюдя по названию что-то пишет в реестер, но судя по содержанию, рекурсивно ищет определённый файл... :) Во-первых у тебя при выходе не закрывается поиск, это уже ошибка. Во-вторых, если ничего не найдено, нужно решить что возвращать, иначе будет 0... и тогда ты сможешь определить ошибку... А в третьих, зачем обьявлять переменную $path в начале скрипта? она ведь используется как параметр в функции, обьявлять в этом случае незачем, имхо. Код:
Func WritePathToReg($icq, $path) |
Maza Faka
Цитата:
Теперь к вопросу о возвращаемом значении… Во-первых, функция не является рекурсивной, так как нарушено одно из правил рекурсии: возвращаемое функцией значение должно передаваться по всей цепочке рекурсивных вызовов, у тебя же значение, возвращаемое WritePathToReg() вообще игнорируется… из этого имеем два следствия: - дальше первого уровня подкаталогов функция и не пытается заглянуть, если бы файл лежал глубже чем на один уровень функция бы его не нашла; - функция, осуществившая рекурсивный вызов не знает о результате этого вызова… поэтому даже если файл найден (как в твоем случае) на возвращаемое значение это никак не повлияет и результат будет зависеть только от содержимого текущего каталога ($path). один из возможных вариантов, ключевой переменной, передаваемой между рекурсивными вызовами является $sRetPath: Код:
MsgBox(64, "Done", _FindFile("icqlite.exe", @ProgramFilesDir)) |
amel27
Спасибо! Отличный код! Работает в 3 раза быстрее чем мой корявый код. :) |
Maza Faka
Всегда пожалуйста :) ИМХО единственный случай, когда оправдано применение глобальных данных в рекурсии это массивы, во всех остальных случаях можно обойтись правильным выбором передаваемого значения.... И еще важное замечание - если в функции используются глобальные переменные их нужно обязательно объявлять в параметрах через ByRef, иначе потом легко забыть и запутаться. |
Цитата:
Но ведь переменная $sRetPath заново обьявляется в начале функции: Local $sRetPath='', $sFullPath, какой смысл присваивать ей значение? Ммм...голова уже пухнет, кажется, что начинаю, что-то понимать, но оказывается, что понимаю не так. :) |
Цитата:
для файлов: просто проверяем условие - если подходит, то присваиваем значение $sRetPath = $sPath; для каталогов: функция _FindFile() сама устанавливает требуемое значение $sRetPath. Может тебе так будет понятней (пожалуй, это будет и правильней): Код:
MsgBox(64, "Done", _FindFile("icqlite.exe", @ProgramFilesDir)) Цитата:
|
Есть такая нестандартная задачка:
Имеется массив содержащий 6 значимых элементов: Код:
Global $PlayersArray[7] = [6, "Вася", "Петя", "Паша", "Толик", "Лёня", "Кеша"] Результат желательно вывести в качесте подобной таблицы: Цитата:
Код:
Global $TotalPlayers = 6 Если кто то сможет решить задачку, буду очень благодарен, я если честно после трёхчасового просижывания потерял надежду на то что это вообще реально... оч нужно :blush2: .. |
amel27,
Цитата:
|
Maza Faka
Цитата:
Creat0R Цитата:
ADD: Цитата:
|
amel27,
Цитата:
Всегда получается что кто-то ждёт дольше или меньше.. даже если речь идёт о 5-ти, и даже 4-тёх игроках... В результате сделал типа такого (набросок с реальной бумаги :)) : Код:
#include <Array.au3> Сделать всё это без бумаги (т.е программно сгененрировать оптимальные варианты) у меня не удалось, а оно очень помогло бы, т.к могут быть и не 6 игроков, а, скажем 7 или 5 и т.д... для каждого количества игроков я конечно могу также выкрутиться с бумагой (что я и сделал для 5-ти и 4-ёх игроков, для этого в принципе и оставлен Switch в функции ;)), но каждый раз так подбирать вручную весьма утомительно :( . Цитата:
А на счёт GUI, ну, у меня есть пару вариации с отсчётом и обычные, но дело в том, что довольно сложно подобрать оптимальный вариант когда речь идёт о размерах диалога MsgBox в соответствии с передаваемым текстом, т.е мне до сих пор не удалось просчитать точно какой размер должен иметь гуи, чтобы поместить в себе указанный текст, и при этом не "покрыть" кнопки текстом (ведь передаваться могут также и символы перевода строки, это само по себе припятствие), а также ещё не знаю на какой системный файл можно понадеятся чтобы украсть с него иконки для отображения :) |
Цитата:
Вот вариант скрипта, пытающегося перебрать все варианты, в качестве условий я задал постоянство периода для одного игрока и разный период для разных игроков (найдены при анализе задачи). Удачной комбинацией считается использование всех возможных партий хотя бы по разу. Код:
Global Const $iCNT = 6 ; Количество игроков |
amel27,
Цитата:
Цитата:
Я понимаю что задачка немного(?) может показаться смутной, возможно если я приведу пример того что я уже сделал в виде ГУИ интерфейса (где я уже использую выше-приведённый мной метод), это поможет иметь более чёткое представление о задаче? Цитата:
Мне кажется это можно подсчитать таким образом - (Количество игроков * (количество игроков - 1)) / 2... т.е типа такого: Код:
$iMAX = ( $iCNT * ($iCNT-1) ) / 2 |
Цитата:
Цитата:
|
amel27,
Цитата:
Цитата:
Чуть позже выложу скрипт с тем что я уже сделал, там всё вручную и никаких проверок, но зато я горжусь там одной функцией CalculateWinner() :yu: - функция для подсчёта победителей и очков у каждого в отдельности или у нескольких игроков сразу (если к примеру они делят первое-второе место, ну или другие места) на основе ввода результатов игр (1:0, 0:1 и т.д. для каждой сыгранной игры). |
Creat0R
Цитата:
Цитата:
|
amel27,
Цитата:
Код:
#Include <GuiConstants.au3> Возвращаемое значение: 6 = Кнопка ОК / Yes была нажата. 7 = Кнопка Cancel / No была нажата. 6+8 = Кнопка ОК / Yes была нажата и была поставлена птичка. 7+8 = Кнопка Cancel / No была нажата и была поставлена птичка. |
Цитата:
по поводу системного окна можно предположить два варианта: 1. Запускать тот же скрипт в другом процессе с передачей ключевого параметра, но тогда возникает проблема с возвратом результата, ее можно решить (к примеру) передачей сообщения основному окну через SendMessage(). 2. Запускать функцию в отдельном потоке того же процесса с использованием CallBack. |
amel27,
Цитата:
Цитата:
Вышла себе в тихую новая версия AutoIt 3.2.6.0 :blush2:: Цитата:
|
Существует ли где нибудь Dll'ка которая позволит выполнять код AutoIt (или хотябы скомпилированный скрипт) передавая ему те параметры, с которыми была запущена Dll'ка? (сам путь к запускаемому скрипту будет естественно передаваться также как параметр).
Дело в том, что я хотел в контекстное меню проводника внедрить свой пункт, но это возможно только(?) если запускаемый модуль этим пунктом является Dll, вот если есть подобная Dll'ка, то я смог бы пункт повесить на неё, а она уже запускала мой скрипт. |
Цитата:
|
amel27,
Цитата:
И как выяснилось, запуск обычного Exe нельзя прописать :( |
Цитата:
|
Подскажите пожалуйста как вытащить текст который находиться между двух тегов на html странице, например так:
HTML код:
<h1>text</h1> |
amel27,
Цитата:
fak1r Цитата:
Код:
$Html = '<h1>text</h1>' Цитата:
|
А возможно ли такое осуществить с помощью AutoIT.
У меня всё время компьютер подключен к интернету, стоит Radmin, с помощью которого я могу управлять своим компом с работы и от друзей. Так как IP динамический, стоит программа, отсылающая на мой почтовый ящик IP, при его изменении. Но вот проблемма - иногда рвётся связь, и реконнект невозможен, нужно перезагружать комп. Вот задача такая - определить, что связь разорвалась, и перезапустить комп. Возможно ли такое осуществить с помощью AutoIT? |
DenchikK,
Цитата:
Код:
If Not IsConnected() Then Shutdown(2 + 4) |
Creat0R
Спасибо огромное! Буду пробовать! Добавлено: Видимо что то не так я делаю - не работает... |
Подскажите пожалуйста.
Как с помощью AutoIt получить информацию из графического приложения в котором AutoIt Window Info ничего не опознает кроме самого окна приложения. Все внутри окна нарисовано, написано и работает автономно. Хочу написать бот для некоторых манипуляций в онлайн игре. |
yukko,
Цитата:
|
Как-то я задавал вопрос по поводу перетаскивания окна за форму ...недавно эксперементировал с GUIRegisterMsg() и совешенно случайно обнаружил способ, думаю это хорошая замена для стиля $GUI_WS_EX_PARENTDRAG:
Код:
#include <GuiConstants.au3> |
Diamond,
Можно ещё так.. Код:
#include <GuiConstants.au3> |
Хочу написать скрипт со "сфетофором", что бы при копировании файла отображался прогресс-бар, но почему-то функция AdlibEnable() начинает работать после того как скопируется файл, что я делаю не так:
Код:
Dim $source = "d:\Video\Films\Адреналин.avi", $dest = "c:\Адреналин.avi", $i = 0 |
Maza Faka,
Цитата:
Если требуется просто "голый" светофор, тогда будет достаточно вышеупомянутых действии ;) .... Код:
Dim $source = "d:\Video\Films\Адреналин.avi", $dest = "c:\Адреналин.avi" |
Искомая информация - строка, состоящая из английских букв и пробелов (название объекта). Строка известна, может быть такой и никакой другой. Нужно идентифицировать обьект. Так же есть строка поиска, в которую можно поместить название объекта, нажать на кнопку и произойдет поиск обьектов, которые после этого все равно нужно идентифицировать. Обьект - статический прямоугольник. Название в верхней части прямоугольника, по высоте текст приблизительно 1/15 от высоты прямоугольника.
|
yukko,
Нужно видеть приложение (сомневаюсь что видно только заголовок окна, возможно текст элементов скрытый?), а по сути, функции ControlGetText, ControlSetText, ControlCommand и т.п помогут в этой задаче. |
Сами обьекты отсканированные/нарисованы, но если есть поиск, то наверное текст где то в клиентской части есть. Утилита не видит ничего кроме заголовка окна. Подскажите пожалуйста где можно поискать текст ?
|
yukko
Цитата:
Приведи хотябы снимок приложения :) |
Creat0R
В итоге сделал так: Код:
Dim $dest = "c:\Адреналин.avi", $i = 0 |
Maza Faka,
Цитата:
Я кстати в своём примере немного переборщил :) - Нужно было наоборот, запускать в главном цикле сам прогресс, а в отдельном процессе копирование, и тогда скррипт намного аккуратнее и короче: Код:
|
Creat0R
Цитата:
P.S. ...имхо, не предмет для спора, оба варианта хороши. :) |
Diamond,
Цитата:
Цитата:
Цитата:
|
Creat0R,
Цитата:
Цитата:
Код:
#include <GuiConstants.au3> |
Помогите разобраться:
при установке из командной строки - все ОК! Код:
start /wait msiexec.exe /i "PROMT Expert 7 Giant.msi"KBRIYPGWNEULCSJAQHXOFVM=хххххххх pidkey=хххххххххх-хххх /qb Код:
Global $file=@ScriptDir & '\PROMT Expert 7 Giant.msi' Код:
Global $file=@ScriptDir & '\setup.msi' В чем моя проблема? |
gvshil,
Цитата:
Код:
Global $file=@ScriptDir & '\PROMT Expert 7 Giant.msi' ;установка PROMT Expert 7 Giant |
Creat0R,
Цитата:
|
gvshil,
Цитата:
|
Creat0R,
Спасибо огромное, все работает. Не посмотрел, думал, что повтор моего куска! |
Спросил я на оф. форуме про такую фичу как пристыковка окна GUI к краям экрана, дали мне почти полноценное решение...
Осталось решить две значительные проблемы перед тем как можно будет использовать данную фичу: 1) В момент смещения окна к краям (в процессе пристыковки) курсор мышки как бы остаётся позади и смещается, что в конце (если достаточно поиграться :)) приводит к тому, что курсор мышки "гуляет" по приделам GUI-окна ;). 2) Панель задачь не всегда находится внизу, и не всегда имеет один размер, нужно как то получать размеры рабочей области, т.е только те границы между панелью задач и краями экрана - и соответственно пристыковывать окно. Вот что на данный момент имеется: Код:
#include <GUIConstants.au3> |
Как сделать, что бы элемент "Нет", менял позицию при наведении на него курсора мыши?
Код:
#include <GUIConstants.au3> |
Maza Faka,
Цитата:
Код:
#include <GUIConstants.au3> |
Creat0R
Спасибо, сделал так: Код:
#include <GUIConstants.au3> |
Maza Faka,
Я так понял нужно чтобы при навидении на кнопку “Нет” кнопка постоянно "пряталась"? :) Тогда желательно найти уникальные координаты, т.е убедиться что текущие найденные по Random не являются координатами кнопки "Да" (что не исключено ;) ) ... Код:
#include <GUIConstants.au3> Я подобными приколами тоже по началу баловался, правда тема была другая - "Вы желаете форматировать диск C:\ ?" :biggrin: |
Вышла новая версия AutoIt v3.2.8.1 (10th September, 2007)
Список изменении по сравнению с 3.2.6.0: Цитата:
3 бага из этого списка я зарепортил: 1. GUISetState(@SW_DISABLE) not disabling keyboard input. 2. ListviewItem not created after other child Window creation/deletion. 3. Detection of invalid CONTINUELOOP statement. ;) |
а как скопировать файл с помошью автоит... желательно зашить его в файл.ехе подскажите плис)
|
mikola1983,
Цитата:
Например: Код:
FileInstall("C:\image.jpg", @TempDir & "\image.jpg", 1) Второй параметр - путь для извлечения И наконец третий параметр определяет, будет ли перезаписываться файл при извлечении если файл с таким же именем в этом пути уже существует. Добавлено: Совсем не факт что файл будет извлечён сразу при запуске скомпилированного скрипта. Эту фунцию можно закрыть условием или событием, тогда файл будет извлечён только если событие произошло (В моём примере при нажатии кнопки "Да") Код:
If MsgBox(4+32,"Извлечение файла","Хотите извлечь файл?") = 6 Then |
Функция Get_KeyDown() прекрасно реагирует на нажатие кнопок на клавиатуре, но стоит только прописать кнопку или другой элемент, и событие перестаёт обрабатываться. :dont-know
Кто нибудь может объяснить подобное поведение? Код:
#include <GUIConstants.au3> |
Ищу репетитора по AutoIt на пару - тройку уроков в Москве.
предложения в ПМ |
Diamond,
Цитата:
Я попробовал убрать фокус с элемента, но это не помагает (точнее фокус не убирается, баг?)... Код:
$BUTTON = GUICtrlCreateButton("Button",10,10,50,20) Очень странно, но если создать элемент после GuiSetState(), то всё работает: Код:
#include <GUIConstants.au3> |
Creat0R,
Действительно, должны обрабатываться только те нажатия, которые посылаються в окно гуи. А насчёт бага, если это даже и не баг, то использование $WM_KEYDOWN полностью теряет смысл... кому оно нужно если GUI будет пустым... Кстати, я сначала тоже предположил что дело в фокусе или табуляции. Цитата:
|
Diamond,
Цитата:
P.S Может пойти попробовать репортануть о баге(?) с фокусом? :shuffle: |
Creat0R,
А может быть дело совсем не в фокусе...? Добавлено: ...имхо, дело не в фокусе, иначе это не работало бы ни до ни после GUISetState(). Репортануть то можно бы... правда у меня знания английского почти нулевые. :blush: |
Diamond,
Цитата:
Diamond, Видимо не суждено это побороть: Цитата:
|
Creat0R,
Цитата:
Вот ещё пример с колёсиком мыши и слайдером - наверное здесь тоже происходит "поглощение": При изменении позиции слайдера колесом мыши, GUIGetMsg() не срабатывает, а загружать основной цикл постоянными запросами тоже не хочется. Вот как раз здесь-то и пригодилась бы $WM_MOUSEWHEEL - для того чтобы получать значение слайдера при повороте колеса мыши (если он в фокусе). Но увы... именно когда он в фокусе, событие $WM_MOUSEWHEEL перестаёт обрабатываться. Код:
#include <GUIConstants.au3> |
Diamond,
Цитата:
Код:
#include <GuiConstants.au3> Аж самому не верится, я до сих пор сам то циклом пользовался :) |
Creat0R,
Да ты просто фокусник! :) Вот так вот запросто взял и нашёл отличное решение. Спасибо! Я поправил твою функцию, это позволит обрабатывать сколько угодно слайдеров. ;) Код:
Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam, $LParam) |
Diamond,
Цитата:
|
Написал тут утилитку для сохранения и восстановления позиции иконок рабочего стола...
![]() Прлучилось вроде неплохо :) Скачать архив можно тут. |
Creat0R,
Цитата:
|
Надо создать 3D array который открывает 5 окон internet explorer и делает на каждом окне timestamp после того как иссекает контрольное время, например 1 мин, надо закрыть конкретное окно и заменить его новым окном. Размер каждого окна должен быть 800х560.
я не совсем понимаю как это сделать... вот что у меня есть пока: Код:
HotKeySet("{ESC}", "Terminate") |
Diamond,
Цитата:
Обновил программку... Список изменении в добавленном Readme.txt, или в топике на оф. форуме ;) |
Привет всем, написал скриптик для закачки файла с отображением прогресса закачки, но мне не нравится, как реализована функция ProgressSet, может есть более красивое решение подсчёта и отображения процента закачки файла.
Код:
$url = "http://game.chirkom.uz/download/hard/cpu-z-123.zip" |
Maza Faka,
Цитата:
|
Creat0R
Как сделать, что бы левой кнопкой мыши можно было перетаскивать (drag) элемент Label в пределах GUI-окна? Никак не могу достучаться тебе в аську, мой ник DeVil :) |
Maza Faka,
Цитата:
Код:
#include <GuiConstants.au3> |
Утилита для подбора цвета:
Код:
#NoTrayIcon |
Diamond,
Класная утилитка (это скорее в помощь более большой утилитке, как дочерний диалог для управлением цветами :))... Немного(?) изменил - Теперь диалог для выбора цвета открывается как дочернее окно, также переделал немного методы обновления данных (чтобы всё обновлялось в реальном времени, правда "дёргание" элементов не удалось предотвратить), при выборе пипетки добавил функцию для установки курсора на момент выбора цвета (глобально, правда я пока не знаю как получить предварительно текущий курсор, поэтому будет сбиваться всегда на 3dwarro.cur - а курсор пипетки можно видимо подобрать и подходящий в системе, но я не нашёл), ну и поправил ввод полей - если ставить пустое значение, то сразу сбрасывается на 0 (у тебя сбрасывалось только после ввода в другое поле), если ставить выше 255, то также сразу ставиться на 255 ;) Кстати, а почему используется API-шная функция SetOnTop? Я так понял для скрытия окна и затем показа в режиме Поверх всех окон? но ведь можно было просто прятать по WinSetState($Hwnd, "", @SW_HIDE), и потом показать, OnTop не сбивается при этом ;) Вобщем вот скрипт: Код:
#NoTrayIcon |
Creat0R
Спасибо за отклик! :) Цитата:
Кстати из-за давности проекта осталось несколько, неуклюже написанных функций, (ведь тогда у меня было поменьше опыта...) они так и остались :lazy: фактически без изменений... Цитата:
Цитата:
По поводу курсора - идея хорошая, но с точки зрения пользователя было бы некорректно заменять текущий курсор на новый... Вижу толька два выхода: либо искать способ для определения текущего курсора, либо искать другую API-функцию (хотелось бы верить что она существует) Цитата:
Куда-то пропала моя любимая фича: :search: При нажатии на тоновую шкалу (точнее при отпускании мышки с $GrCover) происходило определение цвета тоновой шкалы, и это не зависило от Пипетки... :( Вместо этого добавился глюк: При клике по $GrCover запускается последнее действие, т.е. если я до этого нажимал кнопку "Цвет", то при клике по $GrCover вызывается диалог выбора цвета и т.д. :swoon: Добавлено: Цитата:
|
Diamond,
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Local $FocusedHandel = $LParam;ControlGetHandle($hWndGUI, "", ControlGetFocus($hWndGUI)) Цитата:
P.S Я если честно, считаю что переделав весь подход к подобному скрипту (методы решения и использование функции/вызовы), можно добиться идеальных результатов (где ничего не будет мелькать, и при этом обновляться в реальном времени)... но у меня пока (и полагаю что у тебя тоже), времени на это совсем нету :( |
|
SAOPP
Попробуй: Код:
Opt("WinTitleMatchMode", 4) |
Maza Faka, спасибо, сразу бросается тот факт, что если исполнять клик курсором ближе к трею, то
Цитата:
Ха-ха, Maza Faka, огромное спасибо, только пришлось по каким то причинам мне убрать на один пункт движение вниз :) получилось следующее: Код:
Opt("WinTitleMatchMode", 4) |
Цитата:
|
SAOPP,
Вместо LEFT/RIGHT можно использовать Enter ;) , а также Opt(...) не нужен, сегодня в Аутоите уже есть метод более практичнее... Код:
$TrayTitle = "[CLASS:Shell_TrayWnd]" |
Народ! помогите на скрипте написать прогу которая ждёт 10 минут и если пользователь не нажимал ни одной клавиши (короче отсутствовал) тогда комп просто выключается.
|
TERMINAL,
Цитата:
Код:
HotKeySet("^q", "Quit") |
Creat0R, Это всё хорошо, но а как сделать если он есть, то прога просто использует EXIT.
Суть такая - комп после 2х часовой задачи идёт на перезагрузку (например ставлю на ночь). После загрузки винды прога эта автоматом загружается и смотрит-если я нажал кнопку на клаве или открыл любое окно (эфект присутствия) то она просто делает выход, а если никто ничего не делал в течении 10 минут-прога выключает комп.... |
Цитата:
|
TERMINAL,
Цитата:
Код:
#NoTrayIcon SAOPP, Цитата:
|
Creat0R, Спасибо огромное (правда ещё не проверял, но верю). Пока ты мне помогал, то я написал одну прогу-может кому-то и пригодится... Суть вот в чём... Я Админ и у меня все работают в 1С, но есть удалённая точка которую нужно тоже контролировать (когда на работу пришёл, когда ушёл...), инет не всегда есть-поэтому можно отмазаться тому человеку. Каждый день я с ним обмениваюсь папкой для 1С ну и решил запустить такую прогу, которая будет сама стартовать и делать мне отчёт...
|
Creat0R,
У меня встречный вопрос (и просьба если это осуществимо), можно ли сделать как предлагаете вы, только вот меня интересует следующее, можно ли заставить курсор "щёлкать" (входить в меню панели задач) на часах Windows а не на всей панели конкретно? Если это осуществимо, решается вопрос о "загрязнённой" панели задач открытыми окнами - это когда места нету на панели задач свободного, а открыты приложения/окна занимающее всё пустое место, таким образом AutoIt щёлкает на любом окне и не выполняет поставленную задачу :( |
SAOPP,
Цитата:
Код:
ControlClick("[Class:Shell_TrayWnd]", "", "TrayClockWClass1", "Right") |
Опаньки, к сожалению я не приложу ума к этому, а продолжения в виде опуститься один раз вниз или как вы писал ранее для того, что бы не бегать 10 раз вверх, плюс там выбрать 4ю позицию:
![]() |
SAOPP,
Если я правильно понял, то вот: Код:
$TrayTitle = "[CLASS:Shell_TrayWnd]" |
Благодарю. Огромное спасибо - теперь "проблема" как таковая решена вообще :)
|
Нет ли у кого примера скрипта как убрать иконку из tray в винде при загрузке и не показывать ее до следующей перезагрузки
|
adima
Какую иконку, какого приложения? |
например radmin
|
adima
В настройках радмина есть опция скрытия иконки. |
Creat0R, вот меня мысль посетила, к выше опубликованному скрипту можно привинтить (если такое возможно путём AutoIt'а) таймер, который запустит сам скрипт на выполнение через заданный промежуток времени?
Например: запускаю я скрипт, а он через минуту только выполнит своё назначение, т.е. задержка перед выполнением... |
adima,
Цитата:
Вот пример: Код:
#include "SysTray_UDF.au3" Если у кого-то получится сделать функцию для скрытия иконки по PID, буду безмерно благодарен. В той библиотеке есть вроде подобные приминения, но они не работают у меня :(. SAOPP, Цитата:
Почитай справку, там много интересного. |
Creat0R, последний вопрос, тот же самый скрипт (как это не странно ;)), но(!) - возможно ли кликнуть на индикаторе языковой панели Windows? И выбрать соответствующий пункт:
![]() Но после выбора, появляется окно подтверждения данного действия - если возможно всё ДО этого окна, возможность и в этом окне ответить есть? :) ![]() |
SAOPP,
Тебе в помощь инструмент Au3Info.exe (он входит в состав AutoIt пакета), когда его запускаешь, и наводишь мышку над элементами, то отображаются их классы/заголовки/текст и т.п... вот чтобы кликнуть по этой панели, узнаёшь её класс, и кликаешь ;): Код:
$TrayTitle = "[CLASS:Shell_TrayWnd]" |
Diamond
А вот и решение для установки курсора, и потом возвращение оригинального (используемого юзером)... (По мативам примера от eltorro тут) Код:
Global Const $OCR_APPSTARTING = 32650 |
Creat0R, странно, но по каким то причинам не хочет нажимать на кнопочки окна 'Языковая панель', пока не смог разобраться :(
|
|
ДSAOPP, Держи-если просто хочешь отключить отображение языковой панели,
а по другому ,помоему, способов больше нет если только мышь заставить двигать как тебе надо, но при условии что данный компонент будет находиться в одном и том же месте. Это я привожу тут ниже |
Creat0R, всё тоже самое что и в скрипте, но не хочет нажимать ничего :(
|
TERMINAL,
Цитата:
P.S Юзай теги [Cоde][/Cоde] ;) |
Creat0R, должен сработать, там хоть сама працедура не всегда срабатывает - поэтому мне скрипт побольше сделать чтобы обходил он ошибки. Вроде проверял раз 20 то пока он работает...
|
SAOPP,
Цитата:
TERMINAL, Цитата:
|
Diamond
Как это я раньше не подумал, ведь текущий курсор можно брать с реестра :idea: ... Код:
Local $Old_EES = Opt("ExpandEnvStrings", 1) |
Creat0R, что бы во время выполнения скрипта был другой курсор? :)
|
SAOPP,
Это для пипетки, вот тут мы обсуждали эту тему ;) |
Creat0R,
Цитата:
Код:
Func _SysTrayIconIndex($name, $mode=0) |
amel27,
Цитата:
|
Creat0R
Цитата:
Код:
#include <SysTray_UDF.au3> |
Creat0R
Цитата:
Код:
Func _SysTrayIconPids() |
Maza Faka,
PID я получаю по пути к запускному файлу (_PathIsProcess()), но не тут проблема, всё(?) дело в функции _SysTrayIconPids(). amel27, Цитата:
Спасибо!!! |
Как правильно создавать многомерные массивы? Например функция ProcessList возвращает двумерный массив:
Код:
$list = ProcessList() Код:
Global $TestArray[4][4] = [[3, "First", "Second", "Third"], [3, "John", "Steve", "Arnold"]] Код:
MsgBox(0, $TestArray[0][$i], $TestArray[1][$i]) |
amel27
Ты ГУРУ! :pray: Сделал так: Код:
#include "SysTray_UDF.au3" P.S. Может сообщишь автору, о том, что изменил его библиотеку и теперь её можно считать не бетой, а релизом. ;) |
А как заставить GUI интерфейс использовать рисунки которые вшиты в EXE файл???
|
Т.е. закрыть языковую панель таким способом, что я предложил не получится? :(
|
Maza Faka,
Цитата:
Код:
#include <Array.au3> Angelus, Цитата:
Где 0 это имя ресурса изображения в Exe'шнике. SAOPP, Цитата:
Цитата:
|
Maza Faka
Цитата:
Цитата:
|
Цитата:
Сейчас протестировал, на виртуалке всё работает, хм странно, надеюсь это трабла этой ОС, поэтому думаю при установке на реальную машину скрипт сработает ;) |
Многие (и наверное я сам) тут спрашивали, как копировать большой файл, и при этом получать данные прогресса...
Так вот, используя быстро набирающую популярность на оф. форуме библиотеку DllCallBack.au3, можно этого добиться очень просто!!!: Код:
#include <DllCallBack.au3> |
Creat0R, а как можно сделать если мне, например, нужно скопировать целую папку ( I386 c диска)и чтобы прогрес был и показывал сколько осталось минут и процентов? Можешь помочь?
|
Maza Faka,
Цитата:
amel27, Цитата:
TERMINAL, Цитата:
Код:
|
Creat0R
Цитата:
|
Creat0R, Спасибо ! А можно с перезаписью файлов (чтобы по умолчанию перезаписывало)?!
|
Creat0R
И сразу вопрос, где можно найти описание синтаксиса COM - обьектов? :) Цитата:
|
Creat0R, всё же как то скрипт странно работает, на виртуальной машине после применения скрипта, индикатор закрывается, но сразу же появляется "плавающая" языковая панель - здесь я просто бессильный, может быть скрипту дать задержку между выполнением его действий (внутри самого скрипта)?
|
TERMINAL, Maza Faka,
Цитата:
Вот функции прямо из оф. форума (ссылка на источник) включая константы и обработчик ошибок (я лишь немного подправил функции): Код:
#Region consts Код:
;Копирование содержимого папки с подтверждением на перезапись (подавляется диалог о создании папки - константа $FOF_NOCONFIRMMKDIR) Цитата:
Если ты про мой пример конкретно, я его с оф. форума стащил, но вообще то это нужно смотреть документацию к тому или инному приложению (в этом случае к Windows ;) ). SAOPP, Цитата:
|
Обновил Скрипт расскраски кода AutoIt для помещения в форумы (Au3ToPst):
Список изменении: Цитата:
|
amel27
Если при обработке раскраски присутствуют #Region Something, то обработка не может распознать стили - их можно как то добавить? |
При установке приложени устанавливаются файлы setup.msi -> EN.msi -> VBA.msi -> FontNav.msi. То есть setup.msi отрабатывает свое и передает "эстафетную палочку" дальше. Надо чтобы скрипт отслеживал выполнение каждоготиз четырех компонентов и во время выполнения каждого из них приостанавливал выполнение скрипта.
Я думал так WinWaitActive ( "EN" ) WinWaitClose ( "EN") WinWaitActive ( "VBA" ) WinWaitClose ( "VBA" ) WinWaitActive ( "FontNav" ) WinWaitClose ( "FontNav" ) Но слишком быстро нав. выполняется последний компонент и скрипт не успевает что ли увидеть окно "FontNav" (компонент FontNav.msi), в результате висит вечно в паузе. |
mariolast
функция WinWaitClose() обязательна?.. попробуйте без них Creat0R Цитата:
- убрал промежуточные замены на "#", теперь этот символ можно использовать в коде; - добавил черезстрочное объединение стилей, если стиль не изменяется от строки к строке; - убрал из стилей жирный шрифт, опять же для уменьшения количества форматных символов. скрипт лежит там же: http://forum.oszone.net/post-511410-474.html З.Ы. Если требуется совпадения стилей с SciTE нужно будет кое-где добавить теги [b] |
amel27,
Цитата:
WinWaitActive ( "FontNav" ) |
mariolast
из вашего объяснения не видно каким образом происходит последовательный запуск - пакетным файлом, из MSI-пакетов, AU3-скрипта или еще каким образом... не исключено что предыдущий этап может завершаться после начала следующего. В качестве эксперимента запустите отдельный скрипт ожидающий только WinWaitActive ("FontNav") (чтобы исключить взаимное влияние) - если будет "застревать", значит нужно играть с параметрами идентификации окна - "AutoIt Window Info" в помощь :) |
Если запустить
setup.msi /qn, то он и так все установит, сначала сам отработает, а затем поочередно запустятся файлы EN.msi -> VBA.msi -> FontNav.msi Что я делаю. Пакую все в саморасп. архив Winrar и в самом Винраре задаю запуск setup = setup.exe /qn Так вот винрар после отработки установщика setup.msi считает работу завершенной, и остальные 3 файла ему по барабану, он закрывается и удаляет врем. файлы, так что успевает запустится только EN.msi и то не всегда, остальных два нет. Вот поэтому нужен скрипт, чтоб заставить ВинРАР работать, пока не поставится все что надо. Запускать вручную EN.msi -> VBA.msi -> FontNav.msi не подходит, ибо если вручную запущу, то винрар то будет работать, следовательно цепочка EN.msi -> VBA.msi -> FontNav.msi будет продолжать работать и при этом будет ошибка при вызове двух msi. Может как то через процессы отследить msiexec? amel27, Именно им и игрался "AutoIt Window Info" |
mariolast
тогда тем более убери из скрипта обработку всех несущественных промежуточных окон - сконцентрируйся только на последнем, собственно только его и нужно дождаться |
Цитата:
|
Ограничился пока
WinWait ( "FontNav" ) WinWaitClose ( "FontNav" ) |
amel27,
Цитата:
Цитата:
Уже занимаюсь импортом этой функции в Au3ToPost с GUI... |
amel27 и Все,
Обновил и GUI версию - Au3ToPst 1.6 Список изменении... amel27, Кстати, #Region так и не распознавался, я добавил стиль t_12 с заменой на цвет #A00FF0 (текстового значения этого цвета я не знаю :( ). |
Цитата:
Цитата:
|
amel27,
Цитата:
|
Скрипт для конвертирования выделенного текста (a.k.a SwitchIt ;) ): Запускаем скрипт, выделяем текст в почти любом Edit поле, и жмё Ctrl ` (ё на рус. раскладке) - текст конвертится в набор символов противоположного языка (Eng - Rus) -> Если функции ConvertText как второй параметр передать 0, то всегда будет конвертировать в Русский, если 1 то в Английский (-1 в противоположный). Код:
#NoTrayIcon |
По поводу этого скрипта есть вопрос:
Возможно ли получить текст в реальном времени, даже если он не выделен? т.е каким то образом распознать (возможно через API-методы) расположение курсора, и получить текст со сфокусированного элемента? amel27, По поводу раскраски... как видно с моего последнего примера, все первые строки кода после одной пустой строки (если она имеет символ Tab'а в начале), сдвигаются как бы в право, я не могу понять в чём дело, это глюк форума или скрипта? и как это можно поправить? |
Как сделать, что бы при выборе любого элемента "WS", pattern- элемент "Выбрать всё" окрашивался в серый цвет?
Код:
#include <GUIConstants.au3> |
Maza Faka,
Если я правильно понял, то вот: Код:
#include <GUIConstants.au3> |
Цитата:
Цитата:
Цитата:
|
2Гуру
Задал вопрос в теме по Прагме, но там пока молчок. Не пинайте ногами, здесь вроде точно по AutoIt'у. Проблема в активации переводчика Прагма5. Вот выдержки: 1. Перед установкой копируем словари в папку с инсталлятором 2. Во время установки программы вводим артикул 107F-B473 3. По окончании установки щелкаем правой кнопкой мышки по значку в системной панели и выбираем пункт "О программе" 4. Удерживая нажатой клавишу F2, щелкаем по кнопке "Активация... Интернет при этом ДОЛЖЕН быть отключен." 5. Переносим из формы активации в генератор ключей Holder Name и Identification Code, и щелкаем по кнопке "Сгенерировать" 6. Переносим из генератора ключей в форму активации Program Licence и Activation Key, и щелкаем по кнопке "Activate" Первые 2 пункта по установке никаких сложностей не вызвали - стандартные окна и соответственно скрипт AutoIt в режиме "кликанья". НО вот пункт 3 как AutoIt должен понять? Ведь после установки Прагмы иконка может появиться в любом месте систрея? AU3Info показывает ClassNameNN = ToolbarWindow321 и там находятся все иконки ( в том числе иконка Прагмы и сегодня она в одном месте, завтра уже в другом). Как мне найти ее истинные координаты и щелкнуть правой кнопкой мыши? |
amel27,
Цитата:
Цитата:
Цитата:
Цитата:
Понял, всё сработало, написал функцию для очистки лишних пробелов и табов, и теперь нормально вставляется (см. мой пост со скриптом конвертирования ;) ). amel27, Цитата:
Код:
Func ConvertProc() P.S Обновил свой пост. |
amel27,
Цитата:
Оказывается, нажатие клавиш «Ctrl Shift + Стрелка влево», выделяет предыдущее слово, вот я и подумал, ведь можно подсчитать количество исходных слов в тексте, и соответственно нажимать столько раз «Ctrl Shift Left N» (где N это количество слов).. Вот примерно так: Код:
$aArray = StringRegExp($NewClip, "[\s\.:;,]*([a-zA-Z0-9-_]+)[\s\.:;,]*", 3) Цитата:
|
Creat0R,
Цитата:
Вот ещё, как вариант... Скрипт для Транслитерации текста (работает только в одну сторону): Код:
#NoTrayIcon |
Diamond,
Цитата:
К примеру я пишу: Ndjq crhbgn nj;t bynthtcty? rcnfnb z lkz 'njuj bcgjkmp Ой, забыл переключить раскладку на русский... Твой скрипт тоже интересен, кстати я для этого использ |
Цитата:
Цитата:
Код:
Send("{HOME}+{END}") Код:
$sText = ControlGetText ("", "", ControlGetFocus ("")) Цитата:
|
amel27,
Цитата:
Цитата:
Цитата:
|
Creat0R,
Цитата:
|
samsobi
Цитата:
Creat0R, Цитата:
Код:
HotKeySet("^`", "TEST") Цитата:
Цитата:
Код:
Global $objASC = ObjCreate("Scripting.Dictionary") |
amel27,
Цитата:
Цитата:
Цитата:
Цитата:
Я кстати ещё хотел бы сделать небольшой GUI-интерфейс для этого скрипта, чтобы “на лету” можно было править соотношения символов (т.е сопостовлять к одной клавише другую, у меня иногда не очень удобно получается, нужно руками править некоторые символы). Это поможет использовать не только Rus <-> Eng ;) |
Creat0R
Цитата:
Код:
Func _ControlGetFocus() Цитата:
|
amel27,
Цитата:
Цитата:
Но вообще то, вот как я имел в виду: Откроем Notepad, и впишем туда это: Цитата:
Вот я и подумал, если мы заранее знаем наш текст (который изначально был выделен и конвертирован - но нам нужен уже “новый”, конвертированный текст), то всё что нам нужно сделать, так это распознать сколько раз в этом тексте, встречаются символы по которым Ctrl Shift Left будет переходить - т.е как я это вижу, нужно по RegExp подобрать условия замены (на основе нашего текста), чтобы получить в результате нужное количество сдвигов влево (в нашем случае должно получится 10) по @Extended, ну или через размерность массива если использовать только StringRegExp(). |
При копировании с использованием
Код:
ObjCreate("shell.application") Код:
$copy = CopyFile("d:\Video\Films", "C:\", "video.avi") |
Вопрос по GUIRegisterMsg($WM_NCPAINT), как я понял если $wParam возвращает 1, значит произошла перерисовка всего окна.
Во всех остальных случаях можно ли как-то узнать координаты перерисовки? |
amel27
Цитата:
Код:
Func GetLeftJumps($Text) Есть конечно пару(?) недостатков - к примеру, если выделить текст посредине общего текста, то выделяться будут и все предыдущие символы, идущие подряд до первого символа в выделенном тексте. Вот полное применение + использование твоего примера: Код:
#NoTrayIcon |
Цитата:
|
Очень часто спрашивают, как кликнуть по иконке программы в трее. С помощью библиотеки SysTray_UDF.au3, которую доработал amel27 сделать это очень просто: ;)
Код:
#include <SysTray_UDF.au3> |
Maza Faka,
Хотел сделать ещё и возможность кликания без задействования мышки, но что то не выходит... Полагаю я неправильно использую функцию ScreenToClient в User32.dll. Может кто-то знает как правильнее? (это кстати моя одна из первых попыток работать с Dll ;)). Код:
#NoTrayIcon |
Creat0R
Задумка неплохая, но тут я тебе не советчик, для меня все эти функции с DLL пока тёмный лес :-) |
Как можно проверить системные элементы (типа «Мой компьютер», «Мои документы» и т.п) находящиеся на рабочем столе?
Т.е имеется список подобных элементов (имена), нужно каждый из них по этому списку проверить существует ли он на рабочем столе.. как это можно сделать? В реестре конкретной инфы я так и не нашёл, к примеру у меня «Корзина» называется так: «Mycop» (это латинские буквы) :) - поиск по реестру почти ничего не дал, т.е нет зацепки чтобы проверить именно это имя, и что именно этот элемент находится на рабочем столе. |
Обновил Au3ToPost 1.7
Список изменении: Цитата:
|
Цитата:
Например CLSID корзины выглядит так: {645FF040-5081-101B-9F08-00AA002F954E} |
Как отследить нажал ли пользователь определённую кнопку в приложении и в соотвествии с этим выполнить некое действие, что-то вроде этого:
Код:
Dim $command |
Maza Faka,
Цитата:
Цитата:
Ну можно ещё проверять нажатия кнопки мышки (используя _IsPressed()) по определённым коортдинатам. |
Creat0R
Цитата:
Код:
Func ConvertProc() Цитата:
ADD:через реестр: http://wiki.oszone.net/index.php/%D0...D0%B0/HKCU.REG З.Ы. А зачем Send('{CTRLDOWN}') Send('{CTRLUP}'), от залипаний Ctrl? |
Creat0R
Цитата:
|
amel27,
Цитата:
Цитата:
Но в сравнении моя функция всё же быстрее :tongue: - но полагаю твой пример будет надёжнее (если поправить недочёты с е/ё и т.п). Цитата:
Т.е по сути нужно проверить типа.. Код:
If FileExists(@DesktopDir & "\Мой компьютер") Then... Цитата:
|
Почему функция AdlibEnable начинает работать только после того, как файл скопировался?
Код:
#include <Misc.au3> |
Цитата:
Цитата:
Цитата:
|
amel27,
Цитата:
Мне удалось в моей функции преодалеть проблемы когда выделялся весь текст если исходное выделение было посредине слова.. плюс я вспомнил, ведь есть ещё Opt("SendKeyDelay", 0) и Opt("SendKeyDownDelay", 0) - увеличивает скорость в несколько раз ;) (на коротком выделении почти мгновенно)... Вот финальная версия (с использованием обычного массива, без Dictionary, мне если честно немного не привычно ориентироваться в нём): Код:
#NoTrayIcon Цитата:
|
Maza Faka,
Цитата:
Просто ставим MsgBox под AdlibDisable и мы в этом убеждаемся ;) Я так понял нужно определить было ли отменено копирование? попробуй использовать Callback функции из примера что я приводил ранее, там скрипт не останавливается на момент копирования. Вот кстати полезная ссылка по обьекту shell.application - http://msdn2.microsoft.com/en-us/library/aa969392.aspx (в вот конкретно по CopyHere). |
Цитата:
Цитата:
Цитата:
у меня получилось только открывать/читать URL непосредственно с вкладок: Код:
Global Const $DMLERR_NO_ERROR = 0x0 |
Creat0R
Цитата:
Основной скрипт: Код:
$sCopy = CopyFile("d:\Video\Films\video.avi", "c:\") Код:
#include <Misc.au3> |
amel27,
Цитата:
Цитата:
Цитата:
Maza Faka, Такое лучше сделать через Callback... щас попробую нарисовать пример... Цитата:
Код:
#include <GUIConstants.au3> |
Creat0R
Цитата:
|
amel27,
Цитата:
А по второму адресу - к примеру тут HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{645FF040-5081-101B-9F08-00AA002F954E} должно быть имя корзины, там так и написано Корзина (в “по умолчанию”), но у меня корзина именуется как Mycop ;) - Вот тут то и проблема, список содержит именно Mycop (это латинские буквы кстати), в реестре я не нашёл это значение :( |
Creat0R
ну не знаю :dont-know ... у меня после переименования новое имя сразу появилось в HKCU, правда чтобы я смог переименовать корзину с рабочего стола мне пришлось применить соответствующий твик |
amel27,
А «Мои документы» тоже нормально отображаются в реестре? У меня их вообще нигде нету, даже не в оригинальном названии :dont-know . |
Creat0R
Большое спасибо за пример, а если бы ты ещё нашёл время, что бы разжевать мне эту функцию: Код:
Func InitializeCallBack($CallEvery, $FuncName="MyCallBackFunc") |
Maza Faka,
Цитата:
вызывается функция _DllCallBack, которая как бы регистрирует для процесса (скрипта) указанную функцию (через параметр $FuncName), и возвращает на неё указатель.. Далее просто по этому указателю вызывается таймер (строка с вызовом Dll) с заданым временем промежутка между повторами вызова (a.k.a AdibEnable ;)) - Всё, наша функция вызывается каждый заданный промежуток времени, пока не высвободить таймер (см. в функции Quit()). Пример-Скрипт для предотвращения ввода не цифр в Input-поле: Код:
#include <GuiConstants.au3> |
Подскажите пожалуйста, что то я так и не нашёл - как можно настроить скрипт на выход из цикла по нажатию на определённую клавишу?
Вот как то так пытался, не выходит: Код:
WinActivate ("µTorrent","") |
Creat0R,
Цитата:
|
Привет всем.
По работе понадобилось конвертировать большое количество файлов из одного формата в другой. Пакетного конвертера который бы выполнил мою задачу я ненашёл, поэтому пришлось изголяться непосредственно с приложением в котором есть такая возможность используя обычные команды меню и горячие клавиши (открывая последовательно сначала один файл: выполняя ряд действий, "импорт",..."экспорт" ;затем открывая второй файл и т. д....) Проблему решил написав следующий скрипт Код:
; выбор одного или нескольких файлов с прогресс баром, возможностью выбора входящих и исходящих папок до и после обработки + возможность использовать включающий и исключающий фильтр в названиях обрабатываемых файлов. Посему вопрос: не делал ли кто нибудь нечто похожее? Неохота изобретать велосипед :) |
DenchikK
Попробуй так: Код:
Dim $i = 0 |
Вложений: 1
Lodoss
Вот пример как это можно сделать, если нужен законченный скрипт, тогда выкладывай подробности ;) |
DenchikK,
Цитата:
Код:
HotKeySet("{F2}", "StopLoop") amel27 Цитата:
Lodoss, Цитата:
Возможно есть более удобное решение чем использование сторонних программ (тем более Notepad), я на оф. форуме видел пару решении по конвертированию файлов, вопрос в том, с какого и в какой формат. Кстати, я как то давно написал функцию для парсирования возвращённой строки от FileOpenDialog()/FileSaveDialog()... Код:
#include <Array.au3> |
Можно ли с помощью скрипта открыть каретку CD-ROMa или DVD-ROMa?
|
TERMINAL,
Цитата:
Вот пример (by amel27): Код:
; Читаем параметр командной строки и если обнаружен вызываем функцию, |
Creat0R
Цитата:
|
Интересно, возможно ли получить процент закачиваемых байтов (общий процент скаченного), не имея заранее полного размера закачиваемого файла?
Просто InetGetSize() иногда возвращает 0, хотя с той же ссылкой InetGet() справляется (скачивает её). А также хотелось узнать, как правильно получать примерно-оставшиеся время до окончания закачки? Я ранее поднимал вопрос о закачке файлов, но всё как то не определено, не надёжно :( - иногда у меня счётчик скачит то на 5 минут, то на 10, а иногда вовсе 00:00:00 показывает (когда закачка только началась). |
Цитата:
Конвертировать нужно файлы "*.prt" в "*.dwg". И первый и второй - особенные графические форматы. Файлы с расширением "prt" - это объёмные модели (программа Unigraphix NX), что то наподобие "3Dmaх" но ориентирована на конструкторские решения. Вот из этой программы и нужно формировать файлы "dwg" (экспортировать) для дальнейшего помещения на сервер... Пакетного конвертера из prt в dwg я ненашёл. Поэтому выходом счёл автоматизировать работу с самой программой Unigraphix NX через её меню и горячие клавиши выполняя сначала загрузку файла prt, его обработку и дальнейший экспорт в dwg .... Цитата:
вот сырой GUI который хотелось бы видеть в конечном варианте. Код:
#include <GUIConstants.au3> Цитата:
|
Lodoss,
Цитата:
Цитата:
Т.е возвращается к примеру такая строка: C:\My_Files|File1.txt|File2.txt|File3.txt Вот через ту функцию, подобная строка парсируется в массив, где каждый элемент содержит полный путь к каждому файлу (даже если выбран один файл) - таким образом очень просто обрабатывать массив и делать то что нам нужно с путями к файлам). |
есть ли возможность с помощью автоита сделать небольшую прогу для переименования удаленных ПК. конкретно интересует кусок кода либо команда переименования. подскажите пожалуйста.
|
Цитата:
|
mikola1983
Цитата:
ALL Думаю не все знают, что у ключей реестра (не путать с параметрами) как и у файлов есть своя метка времени последней модификации, стандартные утилиты ее не показывают но иногда возникает необходимость узнать когда создали/изменили тот или иной ключ... для этого случая сваял UDF, дата возвращается в формате: YYYY/MM/DD HH:MM:SS: Код:
Global Const $HKCR = 0x80000000 |
VelDmi, нет прога будет работать и на компах которые нужно переименовать
|
mikola1983,
Код:
$ComputerName = IniRead(@ScriptDir & "\Config.ini", "Setup", "ComputerName", 0) |
Creat0R, Это я уже встречал, но оно у меня не работает даже с 1 сидюком. При условии если 2 сидюка (нужно что бы выезжал нужный, а не все) то можно сделать поиск по файлу-например в корне диска лежит файл SysDisc7.exe. Сможешь помочь? Очень нужно....
|
VelDmi,
Это можно кстати средствами одного лишь AutoIt сделать: Код:
$ComputerName = IniRead(@ScriptDir & "\Config.ini", "Setup", "ComputerName", 0) TERMINAL, Цитата:
Код:
$File_Indicator = "SysDisc7.exe" |
Creat0R, спасибо, супер !
|
Как можно сделать чтобы во время растягивания/перетаскивания окна, его содержимое не отображалось? (в настройках системы установлено “Отображать содержимое окна при перетаскивании”).
Я видел многие программы такое умеют, мне нужно такое же сделать для моего GUI... Я имею в виду что то типа этого, но чтобы отображалась граница растягиваемого окна (только граница, без содержимого окна): Код:
#include <GUIConstants.au3> Я тут нашёл вроде решение, но не знаю как его приминить :( - Пробовал посылать сообщение WM_SETREDRAW с параметром False, но окно “зависает” при попытке изменить размер/перетащить окно. |
amel27
Ты недавно приводил функцию _ControlGetFocus(), а можно точно такую, но чтобы не сфокусированный элемент возвращала, а тот над которым проводим мышкой? :shuffle: (типа _ControlGetHovered()). |
работа с Auto3Lib _ListView_
Код:
$hListVie = ControlGetHandle("WindowTitle", "", "SysListView323") $ItemText = _ListView_GetItemText($Item, "") ? или если надо проверить текст линии $sText = mytext If _ListView_FindInText($Item, $sText) = 0 Then Blah blah blah... это правильный syntax? _ListView_FindInText() возвращает что то? |
Oldschool
Цитата:
Код:
#include <GUIConstants.au3> |
при чем ту GUI я не понял , ты вообще о чем?
я пытаюсь считать текст с ListView32 в чужой проге...здесь я беру окно: Код:
$hListVie = ControlGetHandle("WindowTitle", "", "SysListView323") Код:
$Item = 11 _ListView_GetItemText() например вот так: Код:
$Title = _ListView_GetItemText($hListVie, $Item, $Item) Код:
If StringInStr($Title, $sText) Then мой вопрос конкретно про _ListView_GetItemText т.к в данном виде неполучается чего то |
Creat0R
Цитата:
Цитата:
Код:
Func _ControlGetHovered() |
Oldschool
Цитата:
Код:
$text = ControlListView("Drop_Gui", "", "SysListView321", "GetText", 10) ;число 10 означает индекс элемента, счёт идёт с нуля |
amel27,
Цитата:
Цитата:
И вот на основе этого примера (полагаю), мне подкинули идею (а точнее готовый пример с решением), ведь на момент растягивания/смещения окна, можно отключать режим “Отображать содержимое окна при перетаскивании”, а потом восстанавливать старое состояние (как я только сам до этого не додумался)... Код:
#include <GUIConstants.au3> Цитата:
Я так понял тут возвращается идентификатор контроля? мне просто нужно сравнивать с элементами моего ГУИ, а там как известно обычная нумерация элементов, я конечно использовал GuiCtrlGetHandle, а на возвращённое значение от функции _ControlGetHovered() использовал Hwnd, но вот хотелось бы узнать, возможно ли конвертировать этот самый идентификатор в то же число, как и возвращает элемент GUI? (чтобы можно было просто использовать стандартные функци для чтения данных от GUI, типа GuiCtrlRead()). |
Всем привет. У меня такая задача. Нужно в одной папке просмотреть все вложенные подпапки (количество подкаталогов, количество уровней вложенности и иена подкаталогов заранее неизвестны). Как с помощью AutoIT получить список подкаталогов данного каталога?
|
-AAA-,
Цитата:
|
Creat0R
Цитата:
Код:
Func _ControlIDGetHovered() |
Интересная штука WinAPI :)
Поначалу абсолютно не понимал, что к чему, но благодаря amel27, вроде начал понимать. Примеры того, что смог сделать сам: Создание файла (текстового): Код:
Global Const $lCreate_RW = 0x00000000 Код:
#include <GUIConstants.au3> |
-AAA-
Цитата:
Код:
#include <File.au3> |
Цитата:
- у тебя очепятка ($path vs $sPath); - имя каталога заносится в массив без пути; - проверка локального массива через IsArray() необязательна (особенность For); - проверка глобального массива IsArray() желательна (особенность _ArrayAdd()) - зачем $sRet ? - наконец, повторюсь: чтобы избежать путаницы при повторном использовании функций с глобальными переменными их нужно объявлять в параметрах через ByRef. Код:
#include <File.au3> |
amel27
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Код:
MsgBox(64, "Done", _FindFile("icqlite.exe", @ProgramFilesDir)) Цитата:
Цитата:
|
amel27,
Спасибо. По поводу рекурсии... Всё это хорошо, но на склько известно, есть ограничение на количество вызовов подфункции? можно как то его обойти? |
Попутный вопрос: Как можно получить число не больше указанного, если как второе число передаёся большее число, но при этом, если всё же передаётся меньшее число, нужно вернуть именно его...
Я это делаю так (надеялся может есть какой-то быстрый метод, используя всякие BitShift/And/Or и т.п.): Код:
Func BitNumber($Nmber, $Value) |
Maza Faka,
Цитата:
Если массив глобальный то ByRef по большому счёту не нужен. Ну а если например нужно передать локальный массив из другой функции...? Т.е тебе каждый раз придётся корректировать эту функцию в зависимости от потребности... ;) |
Maza Faka
Цитата:
Цитата:
Creat0R Цитата:
Цитата:
Цитата:
|
Может кому пригодится (или может кто мне покажет более правильное/простое решение), вот функция для получения числа разделённого запятыми (когда то на батнике пробовал решить, получилось - но кривовато, а тут совсем другое дело :) )...
Код:
$MyNumber = 212347525 ;> 212,347,525 Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Код:
#include <File.au3> Цитата:
Код:
$res = ($Value<$Nmber)*$Value + Not($Value<$Nmber)*$Nmber Цитата:
|
Корифеи! Кто нибуть реализовал просмотр сети?
|
amel27,
Цитата:
И кстати, а почему While $i < UBound($aGDir) а не простое использоване For? :shuffle: вроде как разницы нет? Цитата:
NikLok, Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
|
amel27,
Цитата:
Цитата:
Цитата:
|
Creat0R, amel27, мНЕ собственно нужен как основа скрипт взятия имен машин типа списка аналогичного "Сетевеое окружение". При этом акцент было бы интересно установить на взятие его на машинах с несколькими сетевыми интерфейсами!
|
NikLok
Перед тем как писать скрипт нужно определиться как разрешать имена: широковещанием (NetBIOS), сервер WINS или DNS?.. Это определяется настройками локальной сети. |
У меня идёт опрос окон:
For $i = 0 To 25 MsgBox(64,"System disc","Идёт установка программы ! Подождите пожалуйста "& 26-$i &" секунд...", 2) if WinWait("Окно 1","", 1) Then ControlClick("Окно 1","","Button2") EndIf If WinWait("Окно 2","",1) Then ControlClick("Окно 2","","Button2") EndIf If WinWait("Окно 3","", 1) Then ControlClick("Окно 3","","Button2") EndIf If WinWait("Окно 4","", 1) Then ControlClick("Окно 4","","Button2") EndIf Next Дальше идёт продолжение выполнения скрипта.... Возможно ли сделать в цикле так, что если какое-то из окон определяется то заканчивает работать цикл и переходит к дальнейшему выполнению скрипта? |
TERMINAL
Цитата:
|
amel27, Конечно лучше универсальный вариант. Но на худой конец и простой NetBios сгодится!
|
Цитата:
2. То же через API (функция возвращает массив): Код:
Global Const $SV_TYPE_WORKSTATION = 0x1 |
amel27, Спасибо! Буду изучать, но пока не понял как указать конкретную сеть для просмотра?! У меня 4 карточки стоит!
Во блин ты даешь! И ведь работает! Я так понимаю параметр ей давть бессмысленно, или там при объявлении он задан на случай отсутствия? |
Как создать 24 размерный массив со случайным числом от 1 до 13, причём числа должны быть парными, то есть у каждого числа должна быть пара и расположение их в массиве всегда должно быть случайным.
|
Maza Faka,
Цитата:
Вобщем если я правильно понял, то вот: Код:
#include <Array.au3> |
NikLok
Цитата:
Цитата:
Код:
Func _GetDomainComputers($sDomain) |
amel27,
Цитата:
Имею разные сетевые адреса на всех 4-х картах. Ну для примера пусть две карты имеют адреса 192.168.0.10 и 162.16.10.24. WINS адресов в настройке карточек нет. Домены не используются пока! Как мне узнать какой комп по какой сети я вижу. Вообще нужно узнать какие станции имеют подключение к нескольким сегментам сразу. Что можешь порекомендовать почитать по данной тематике. |
Как можно перечитать содержимое папки в меню, но при этом поместив каталоги (подменю) в самый верх, а не как попало (по дате вроде бы сортируются)... а также требуется вернуть двумерный массив с контролями от создания пунктов меню (только пунктов, подменю не нужны), и с путями по порядку (пути только файлов, чтобы позже при нажатии на пункт файл можно было запустить)?
Вот рабочий пример для считывания установочной папки аутоита, но подменю не в начале (они присутствуют в той позиции, где были найдены в процессе поиска), а мне нужно именно в начале: Код:
#include <GuiConstants.au3> |
Вложений: 1
|
Creat0R
интересно, а ограничения на размер меню какие?.. а то я натравил твой скрипт в корень диска C:\ и он мне выдал: ModernMenu.au3 (450) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: :jester: NikLok Цитата:
Цитата:
Цитата:
- по имени (удаленно) через WMI "снять" конфигурацию сетевых интерфейсов; - поднять WINS-сервер и брать с него занимаемые именем IP-адреса. Цитата:
|
Вложений: 1
amel27,
Цитата:
P.S Библиотека переименована в Menu_With_Icons_Incl.au3 (её содержание также намного изменилось). |
Подскажите можно ли при заблокированной системе (win XP) симулировать клавиатурные нажатия?
При не заблокированной все нормально отрабатывается, а при заблокированной никак не хочет. Вы уж прости если ламерский вопрос, но я только вчера сел знакомиться с AutoIt. Вот сам код. Код:
WinWait("Генератор отчетов ") А эти строчки по идее проверяют активно ли окно и если нет делают его активным :) Ну это по моим соображениям из того что я подчерпнул в справке. WinActive("Генератор отчетов") If @error=1 Then WinActivate("Генератор отчетов") Сделано потому что при заблокированной системе WinWaitActive("Генератор отчетов") можно ждать до бесконечности. По другому отчет выбрать не получается т.к. выбор идет из дерева (class TTreeView), а как я понял AutoIt не может сним работать. Подскажите как можно это сделать? |
Davlet,
Цитата:
Код:
If @OSVersion <> "WIN_98" And @OSVersion <> "WIN_ME" Then Цитата:
Вот пример (должна быть установлена библиотека отсюда, если есть проблемы с установкой, решение есть тут) - Открывает “Диспетчер устройств”, переходит к 16-тому пункту, раскрывает его, и возвращает текст раскрытого подпункта: Код:
#include <A3LTreeView.au3> |
Creat0R
Получилось используя ControlSend("Генератор отчетов", "", "[CLASS:TTreeView; INSTANCE:5]", "{DOWN}") и т.д. Но сейчас посмотрю (обмозгую :) ) что ты предложил. Код:
If @OSVersion <> "WIN_98" And @OSVersion <> "WIN_ME" Then буду делать через ControlSend. |
Доброго времени суток уважаемые ..очень нужна ваша помошь. нужно установить лицензионное ПО на более сотни машин соответствено на каждое свой ключ. есть предположение что с помошью автоита можно работать с файлом где построчно будут ключи ...напишите пожалуйста как взять из текстового или экселевского файла строку и передать ее в программу....?
|
mikola1983
Скажем у каждого компьютер имеется имя, например WS1; WS2 и т.д., также имеется текстовый файл с ключами, где номер каждой строки, соответствует номеру машины, соответственно можно написать такой скрипт: Код:
$number = StringRegExpReplace(@ComputerName, "[a-zA-z]", "") ; Получаем номер машины |
Davlet,
Цитата:
Код:
Opt("WinTitleMatchMode", 2) |
amel27,
Ты приводил функцию для получения контроля по идентификатору, я вот пытаюсь сделать нечто похожее, но для Handle от контроля GUI (аутоита)... типа такого: Код:
Func _HwndToID($hwnd) |
Цитата:
Цитата:
|
amel27,
Цитата:
Я это сделал через CallBack, т.е просто тупо вызывается определённая функция каждые 100 мс., она и проверяет текст выбранного элемента (через _GuiCtrlTreeViewGetTree()), но хотелось обойтись без CallBack или другой постоянной проверкой (пусть то в цикле или в зарегистрированном сообщении через GuiRegisterMsg()) - просто есть и другие задачи для главного цикла, и не хочется нагружать его слишком много и/или вызывать несколько подобных циклов. P.S Я про событие как через GuiCtrlSetOnEvent(), не событие самой вставки :) |
Creat0R
Видно не получится при помощи API вернуть ID TreeViewItem. Наверное потому, что даже утилита AutoIt Window Info не показывает класс и instance TreeViewItem, а вот например с контроль Button идентификатор возвращается: Код:
#include <GUIConstants.au3> |
Вот что я имел в виду:
Код:
#include <GUIConstants.au3> |
Цитата:
|
amel27,
Цитата:
|
Creat0R
распознается клик на TreeView, а сам пункт "вычисляем" в функции-обработчике... ведь клик на TreeView это всегда клик на каком-то элементе? |
Цитата:
Но не в этом дело, ведь если поставить событие для TreeView, то оно не срабатывает как таковое: Код:
#include <GUIConstants.au3> |
Creat0R
Цитата:
провел вот такой эксперимент: Код:
#include <GUIConstants.au3> Цитата:
Цитата:
может ограничение как раз и связано с присвоением пунктам ControlID? так глядишь и сам начну понимать кой-чего в ГУИ :) |
amel27,
Цитата:
Цитата:
Цитата:
Цитата:
Код:
#include <GUIConstants.au3> |
какая команда делает печать?
|
Creat0R
может через GUIRegisterMsg() типа такого? Код:
#include <GUIConstants.au3> |
как передать строку?
вобщем есть вот это: $file = FileOpen("c:\1.txt", 0) $line = FileReadLine($file) If @error = -1 Then ExitLoop Run ("notepad.exe") WinWait("Untitled - Notepad","") If Not WinActive("Untitled - Notepad","") Then WinActivate("Untitled - Notepad","") WinWaitActive("Untitled - Notepad","") Send(GUICtrlRead($line)) но в нотпаде пишет НОЛЬ вместо определенного ключа . есть ли возможность вставить этот ключ в окно программы желательно посимвольно через SEND т.к. 4 окна. и еше хотелось бы удалять использованный ключ |
mikola1983
Цитата:
Как я понял ты хочешь выслать строку в блокнот? Сделай так: Код:
ControlSend("Untitled - Notepad", "", "Edit1", $line) |
TERMINAL,
Цитата:
Код:
ShellExecute("MyFile.txt", "", @ScriptDir, "Print") Цитата:
Спасибо! P.S Функция IDToHwnd() не обязательна в этом случае, можно просто использовать GUICtrlGetHandle($nTreeView) :) |
Creat0R
Цитата:
первая по сути тот же ShellExecute(), а вторая специально для печати документов MS Word, пример: Код:
#include <Word.au3> $b_Background - ожидать или нет завершения печати; $i_Copies - количество экземпляров; $i_Orientation - ориентация страницы (книга/альбом); $b_Collate - разобрать по копиям; $s_Printer - выбор принтера (имя); $i_Range - выбор страниц для печати; $i_From - с какой страницы (для $i_Range=3); $i_To - по какую страницу печатать (для $i_Range=3); $s_Pages - список страниц через запятую (для $i_Range=4); $i_PageType - все/четные/нечетные; $i_Item - печать дополнительных элементов. Цитата:
|
amel27,
Цитата:
|
Добрый вечер.
Вот есть 2 вопроса: 1 Как сделать чтобы можно было скомпилированому файлу автоита передавать даные через ключи, например так: Код:
script.exe /f "list.txt" Код:
script.exe /h /d /s 2 Как сделать так чтобы результат выполнения например функции ProcessList(выводит массив со списком процесов) выдавался в командную строку windows? |
fak1r,
Цитата:
Код:
If $CmdLine[0] = 0 Then Цитата:
|
Цитата:
появляется окно в котором написано только "путь к файлу" и все. |
fak1r,
Цитата:
|
пасиба, а вот еще вопрос как тогда сделать что б можно было использовать несколько ключей?
И просто интересно Откуда переменые $CmdLineRaw и $CmdLine они вроде ни где не объявлены, но автоит не ругается на это. |
fak1r,
Цитата:
Код:
If $CmdLine[0] = 0 Then Цитата:
В справке об этом всё изложено ;) |
Почему я немогу открыть экселевский файл с помощью скрипта?
Run ( @ScriptDir & "\2007.xls") - скрипт в этой же папке... |
TERMINAL
Попробуй так: Код:
ShellExecute(@ScriptDir & "\2007.xls") |
Maza Faka,
D:\TEST\1.au3(2,38) : ERROR: ShellExecute(): undefined function. ShellExecute(@ScriptDir & "\Test.txt") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ D:\TEST\1.au3 - 1 error(s), 0 warning(s) Вот такая хрень вылазит-ничего не могу сделать.... Creat0R, ShellExecute("MyFile.txt", "", @ScriptDir, "Print") - тоже не катит... |
TERMINAL,
Цитата:
ShellExecute и ShellExecuteWait были добавлены в версии 3.2.2.0. А если нет желания обновляться, то придётся выкручиваться так: Код:
Run(@ComSpec & ' /c start "" "' & @ScriptDir & '\2007.xls"', @ScriptDir, @SW_HIDE) |
Creat0R, Спасибо - получилось !
Возможно ли при переводе в *.exe возможно ли ставить пароль как в предыдущих версиях? Есть ли уже обновлённый руский хелп к последней версии? |
TERMINAL,
Цитата:
Цитата:
|
Цитата:
|
А если использовать компилятор от старой версии , а AutoIt обновлённый - глюков не будет?
|
Цитата:
|
Creat0R, У меня есть на удалённой точке комп, с которым связываюсь по инету с помощью почты (меняемся пакетами (в рар архиве папка)). Я заслал туда якобы троянчик, который контролирует во сколько комп включается и выключается-для контроля и после все эти значения записуются в*.ini файл, он делается скрытым, человек этого не видит и незнает, архивирует папку и отсылает мне почтой. Вопрос:
1. Возможно ли делать запись данных с помощью IniWrite ( @HomeDrive & "\Пакет\Time.ini", "Запуск компа ", "Включение " & $Den & "." & $Mesyac & "." & $God , " " & $4as & "." & $Minute) не только в *.ini файл но и в другие (напрмер *.txt или даже в такой-неизвестный никому, просто потом присваивать расширение и смотреть или вообще без разширения. 2. Возможно ли данный файл не хранить именно в @HomeDrive & "\Пакет\, а спрятать его в любое место и как только подключается интернет, чтобы он мне лично отсылался на почту? 3. Возможно ли передать текстовое окно (MsgBox) cети по адресу (например 192.168.0.1)? |
TERMINAL
1. Код:
$ini = "c:\myIni" 2. Код:
FileSetAttrib($ini, "+S") Код:
FileMove("source", "dest" [, flag]) Код:
Run(@ComSpec & " /c " & 'netsend 192.168.0.1 "Hello frend"', "", @SW_HIDE) Код:
MsgBox(16, "Error", "Access denied") |
Привет, написал скрипт... но ненравится его некоректная работа.
Требуется: ;*** Стоп работает ;*** Пауза вкл/выкл работает ;*** Кликать с интервалом 10 (сотых) секунды правой и левой кнопкой мыши. включается и выключается отлично. ;*** Во время этих кликов, клавиша 1 всевремя просто включена и после двух минут включается на одну секунду клавиша 2. некоректно работает Вот вырезка этого кода PHP код:
Тоесть скрипт нажал клавишу 1 (не удерживая),всевремя кликает правой или левой кнопкой, как истекло например две минуты, нажимается клавиша 2 на две секунды и потом обратно всевремя включена клавиша 1 (не удерживая) - Вроде разобрался, просто еще раз мануал пересмотрел почитал. PHP код:
|
В последних бетках аутоита разработчики делают настоящий переворот!
Добавили долгожданный ControlTreeView, добавили около 200 UDF'ов из библиотеки A3LLibrary (а также много новых Include'ов), добавили не менее долгожданную функцию VarGetType(), добавили неплохую функцию SendKeepActive (для посылании клавиш с возможностью поддержки активности окна в которое нужно посылать клавиши), в области Dll функции тоже несколько обновок: Цитата:
|
Привет всем, подскажите как сделать вычисление графической области 0х0, 50х50 при появлении в которой контрольной суммы которая равна 1111111111 должно выполниться нажатие клавиши Z, при любой другой сумме клавишу X , как должна выглядеть функция?
|
Подскажите пожалуйста как залить файл через форму на сайте.
Вообщем есть файло обменик на странице есть кнопка обзор,. нажимаешь на нее выбираешь файл и нажимаешь кнопку отправить, после загрузки файла обменик выдает ссылку на этот файл. Так вот как нить можно на Автоите написать прогу чтобы из окно проги выбрать файл, нажать кнопку для его загрузки и по окончании загрузки получить ссылку от обменика????? |
MaxxQ
Код:
$checksum = PixelChecksum(0,0, 50,50) |
После компилировании в *.exe файл и старте его, возможно ли сделать этот файл невидимым процессом в диспетчере задач?
|
TERMINAL,
Цитата:
Код:
#include <A3LListView.au3> О, вот метод попроще (кажется amel27 его написал): Код:
HotKeySet("{Esc}", "Quit") |
Maza Faka спасибо большое, а как сделать что бы после выполнения Send("{z}"), продолжить выполнение сценария, т.е сейчас пока не найдено заначение 1111111111 выполняется Send("{x}"), а при верном значении выполняется Send("{z}") и все скрипт закрывается, а мне нужно что бы Send("{z}") выполнялось до тех пор, пока значение опять станет неверным и начнется ваполнение Send("{x}"), подскажите пожалуйста.
|
Извините за глупые вопросы ( я дуб дубом в написании скриптов :)), но вот при выполнении сценария который постил выше Maza Faka, при появлении в области (0,0, 50,50) значения 1111111111, еще раз выполняется команда Send("{x}"), а уже потом Send("{z}") ( это хорошо видно если установить значение Sleep(10000)), а как сделать что бы при появлении в области значения 1111111111 следующая команда была нужно т.е Send("{z}") (а не ждать выполнения Send("{x}"), когда уже область изменена на выполнение Send("{z}"))???????
p.s надеюсь не слишком запутанно написал :) |
MaxxQ
Попробуй так: Код:
HotKeySet("{Esc}", "ExitFunc") |
Спасибо Maza Faka
А как сделать что бы нажатие клавиш было по одному разу (изменилась область на 1111111111 один раз нажатие Send("{x}") , изменилось на другое один раз Send("{z}") и т.д ,а не постоянное нажатие.????? ну подскажите пожалуйста кто нибудь |
Как реализовать скрипт чтоб курсор двигался по кругу диаметром 100пиксел и во время движения курсора неприрывно кликалась правая кнопка мыши
У меня получается либо только движение либо только кликание правой кнопкой. Тоесть ненадо пооочереди, а сразу синхроннно движение по кркгу и кликание правой кнопкой. |
kagorec,
Цитата:
Код:
$MsPaintPid = Run("mspaint") |
MaxxQ
Вот если бы не ленился заглядывать в справку, то уже давно нашёл бы решение такой простой задачки ;) Код:
HotKeySet("{Esc}", "ExitFunc") |
Спасибо Maza Faka , но у меня опять грабли, и в связи с этим несколько вопросов, при выполнении твоего сценария когда $checksum <> 1111111111 происходит нажатие клавиши Z, но вот после когда область изменяется опять на $checksum <> 1111111111 не происходит нажатие клавиши Z, я имею ввиду что мне нужно что бы при каждом изменении области которая будет $checksum <> 1111111111 происходило нажатие Z(один раз) , а если значение становилось $checksum = 1111111111 тогда уже X(один раз), если опять $checksum = 1111111111 опять X и т.д
И еще вопрос можно ли добавить не одно значение - 1111111111, а еще 2222222222, 3333333333 и т.д, при появление которых будет выполнятся X. Подскажите как такая функция будет выглядеть ??? Спасибо P.s пытаюсь читать справку нехрена пока не понимаю :( |
Рисуем смайлик
![]() Код:
$MsPaintPid = Run("mspaint") P.S Функция немного подправлена и в предыдущем моём примере, там переменная для отметки не сбрасывалась. |
MaxxQ
Может во время работы скрипта ты нажимаешь клавишу Esc и скрипт завершает работу? Попробуй заменить клавишу Esc на какое нибудь сочетание клавиш, например: Код:
HotKeySet("^!a", "ExitFunc") ;Ctrl + Alt + a Код:
HotKeySet("^!a", "ExitFunc") Скрипт работает, значит должен работать и с вычислением контрольной суммы пикселов. Цитата:
Код:
Func SendX() |
Код:
#include <GUIConstants.au3> Код:
#include <GUIConstants.au3> |
Спасибо Maza Faka что помогаешь разобраться (единственный кто помог)
ESC я не нажимал, сценарий не завершал работу а, а ждал пока область будет изменена с $checksum<> 1111111111 на $checksum = 1111111111, а если область опять изменялась с $checksum<> 1111111111 на $checksum<> 1111111111 нечего не происходит. Вот по этому скрипту c блокнотом, получается что функция не может быть дважды подряд Z (как я понял) т.е дважды подряд блокнот не может быть закрыт :) (или чета я напутал?) А у меня не известно когда придет нужная сумма пикселей при которой $checksum= 1111111111 (2222222222, 3333333333 и т.д.) и выполнится Send("{x}")(один раз) , если же сумма будет любой другой Send("{z}")(один раз) каждый раз при обновлении области. Вообще скрипт нужен для игры в покер на префлопе(не знаю может я велосипед изобретаю?), но функции должны быть такие: при приходе на руки нужных карт AA, KK, QQ и т.д. сумму пикселей которых я знаю (и сам задаю в скрипте, 1111111111, 222222222, 3333333333 и т.д., вообще их будет около 132) происходит нажатие X , а при появлении 29, 48,73 и т.д. где естественно $checksum <> 1111111111, нажатие Z. Все бы хорошо, но в данном скрипте не реализована функция где при каждом обновлении области на $checksum <> 1111111111 происходило бы Send("{z}") (один раз) дважды подряд, трижды и так до бесконечности , ведь неизвестно когда придут карты где $checksum= 1111111111. Возможно ли это вообще реализовать? и как?? ПОМОГИТЕ :) :) :) |
|
MaxxQ
Пробуй: Код:
#include <Array.au3> |
http://creator-lab.ucoz.ru/AutoIt/Au...oGenerator.zip (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt код.
http://creator-lab.ucoz.ru/AutoIt/ScriptWriter.zip (78 Kb) - Аналог AutoItMacroGenerator. http://creator-lab.ucoz.ru/AutoIt/API_Help_Rus.zip Русский справочник по API-функциям http://creator-lab.ucoz.ru/AutoIt/Koda.zip (724 Kb) - Визуализация работы с GUI - аналог Visual Basic. |
ЗАРАБОТАЛА, СПАСИБО Maza Faka
|
Цитата:
|
MaxxQ,
Цитата:
|
Никто не в курсе как можно даную функцию (_IsPressed) заставить вести лог??, тоесть сохранять все нажатия клавиш в текстовом файле....
|
Angelus
Примерно так: Код:
#include <Misc.au3> Но написать полноценный кейлогер при помощи AutoIT-а не получится, всё таки это скриптовый язык. |
Maza Faka, Angelus,
Цитата:
|
Maza Faka, у меня еще один вопрос возник в процессе использования скрипта :) , как добавить в него суммы исключения, к примеру что бы по появлении суммы равной 6666666666, 777777777, 8888888888 нечего не происходило бы??????
Спасибо |
MaxxQ,
Цитата:
Код:
If $checksum = 6666666666 Or $checksum = 777777777 Or $checksum = 8888888888 Then P.S При необходимости можно все исключения поместить в массив (также как и с массивом пикселей), и проверять поиском по массиву (текущего $checksum). |
все, вроде закончил скрипт, спасибо всем за помощь
|
Доброго времени суток.
Подскажите пожалуйста. Необходимо программно отркрыть окно свойства одного из сетевого подключения (через AutoIt). К примеру, чтобы открыть "Сетевые подключения" необходимо выполнить ::{7007acc7-3202-11d1-aad2-00805fc1270e}, а что надо выполнить чтобы открыть свойства или состояние конкретного подключения? Есть способ через rasphone.exe -f "C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk" -e "Inet", но так открывает только VPN-соединение "Inet", а подключение по локальной сети не хочет. |
Здравствуйте.
Только вчера открыл для себя AutoIT. Написал следующее: Код:
;Открывает окно из которого копируем через ctrl-c и закрывает окно ctrl-a |
Kenwood3D
Цитата:
Код:
HotKeySet("{Esc}", "OnExit") |
Сочетания клавиш заработали при любой раскладке если писать так:
Код:
If @KBLayout = 0419 Then en-ru, вместо допустим "tim" пишет "ешь"... Как это побороть? |
Dementei,
Цитата:
Код:
$string = "tim" |
Напишу еще раз:
(code) Send("901") ;Вызывает окно, из которого с помощью ctrl-c копируется название файла, а ctrl-a закрывает это окно. ;Для программы, которой этот скрип управляет 901 - вызывает окно и делает выделенной строчку, в которой ;название файла. Сочетание клавиш ctrl-a закрывает это окно. If @KBLayout = 0419 Then Send("^с") Else Send("^c") EndIf If @KBLayout = 0419 Then Send("^ф") Else Send("^a") EndIf $old_name = ClipGet() ;$old_name получает значение имени файла $new_name = InputBox("Переименовать", "Введите новое название файла", $old_name) ;$new_name создает окно, в котором отображается страрое название файла и надо ввести новое Send("901") ;Открываем снова окно для ввода имени файла и передаем ему новое имя, кот. ввели в диалоговое окно Send($new_name) ;Посылаем новое имя в окно, кот. открылось по сочетанию клавиш 901 (/code) Так вот при таком способе Send($new_name) пошлет Tim при английской раскладке и Ешь при русской. Как добиться аналогичной функциональности, но чтоб это работало при любой раскладке? |
Dementei,
Посмотри здесь http://oszone.net/display.php?id=3663 про переключение раскладки. |
Maza Faka,
Смотрел, это не помогает в данном случаи. Но я нашел выход: ClipPut($new_name) Вот уже с этим ничего не происходит, оно уже вводится как надо при любой раскладке... но это ограничивает возможности... |
|
Creat0R,
Цитата:
Код:
Func _OpenFileProperties($sDir, $sFile) |
amel27,
Цитата:
Вот версия с разделением путей, но у меня по прежнему не работает: Код:
_OpenFileProperties("C:\Test.txt", "Сво&йства") |
amel27,
Оно работает! :) но только пока скрипт активен :( - Т.е как только скрипт завершает работу, окно свойств исчезает, не очень удобно... |
Цитата:
Система WindowsXP |
Creat0R
Цитата:
Kenwood3D Цитата:
2. Ошибка никак не связана со скриптом, ищи в сетевых настройках Windows, начать можно отсюда: Появление сообщения об ошибке «RUNDLL Ошибка загрузки irprops.cpl» при загрузке Windows XP |
amel27,
Цитата:
Цитата:
Но пока, мне бы узнать о другом поведении, как это окно вызвать “на долго/навсегда” :) - может есть какой то API-метод? или возможно через CallBack функции как то? Есть идея запускать отдельный скрипт, чтобы тот завершал работу только после закрытия диалога свойств, но это особо крайний вариант :( P.S А есть ещё вариант с созданием своего окна Свойства для файла, вроде встроенными функциями можно получить необходимую инфу, но всё же, оригинал, он есть оригинал ;) |
Creat0R
Цитата:
Цитата:
в принципе, можно сваять UDF на базе ShellExecuteEx (как тебе советовали на офсайте ;) ), но в плане запуска это ничего не даст - функция все равно требует наличия какого-либо целевого приложения, в данном случае это процесс самого скрипта... разве только добавится возможность делать новое окно дочерним к GUI |
Цитата:
|
amel27,
Цитата:
Цитата:
Код:
$GUI = GUICreate("My GUI") Цитата:
|
Цитата:
amel27, Creat0R, огромное СПАСИБО! |
Creat0R
Цитата:
Код:
HotKeySet("{Esc}", "OnExit") |
amel27,
Цитата:
Цитата:
P.S Спасибо за функцию, работает, правда параметр $hWnd пользы не приносиит, по крайней мере не визуально :( - т.е задаю hWnd родительского окна, а диалог свойств появляется как отдельное окно, без связи с родительским. |
Creat0R
Цитата:
|
amel27,
Цитата:
Самому как то давно (и кажется тут в ветке уже спрашивали про это), нужна была функция для получения текста с таба (SysTabControl321), поискал немного, не нашёл и разочаровался :( . Но недавно кое кому тоже это понадобилось, и я сразу вспомнил про библиотеку A3LLibrary - Но ради одной функции включать такую тяжёлую артиллерию, мне показалось излишним :unsure: .. Собрав все нужные ресурсы с этой библиотеки, плюс немного с MSDN, плюс немного с головы (моей :) ), я написал рабочую функцию _ControlTab()!!! аж самому не верится, но всё прекрасно работает! Вот функция с описаниями (на Английском, т.к на оф. форуме хочу предложить разработчикам для включения в стандартные библиотеки): Код:
;=============================================================================== Код:
$GUI = GUICreate("ControlTab Demo") |
Как получить пути к системным папкам, не используя COM-обьекты? (Shell.Application к примеру, не на всех системах будет корректно работать).
Реестр тоже отпадает, там нет того что нужно (например “Мои видеозаписи” там и близко нет). На данный момент нужно именно для “Мои видеозаписи”, но в частности хотелось бы и к другим папкам. |
Цитата:
|
amel27,
Цитата:
Насколько “надёжна” эта ветка? она там присутствует на всех Win-системах? |
Цитата:
|
amel27,
Ок, Спасибо. |
в хелпе к AUTOIT есть:
Цитата:
вызывал из батнега: %path_cmdutils%\Autoit3.exe %~dp0\FlashPlayerUpdate.au3 /p %AppPath% как надо правильно если в значении %AppPath% есть пробелы? от нефиг делать написал скрипт который проходит головоломку за меня методом тыка. Может кто подаст идею какое условие в таком скрипте должно отследить успешное срабатывание чтобы сделать exitloop? Код:
;Поочерёдный кликер в разные области экрана |
V0van3,
Цитата:
Код:
%path_cmdutils%\Autoit3.exe "%~dp0\FlashPlayerUpdate.au3" /p "%AppPath%" Цитата:
А вообще, для таких задач (автоматизации Internet Explorer), есть встроенная библиотека IE.au3, там можно запустить адрес в IE, и функция будет ждать окончания загрузки страницы, также можно нажать на ссылку/кнопку зная заранее только её текст, и т.д и т.п. Цитата:
|
Ещё один сюрприз от разработчиков! :yahoo:
В последней бетте добавили поддержку DllCallBack!!! Цитата:
|
Имитация телефонного звонка:
Код:
HotKeySet("{Esc}", "Quit") |
GuiCtrlSetOnHover() UDF!
Эта функция предназначена для управления элементами при наведении курсора мышки над ними (Hovering Process), используется точно также как и подобные функции GuiCtrlSetOnEvent(). Вот пример, создаёт алфавит из кнопок, когда проводим мышкой по кнопкам, они красятся в красный цвет, также обратите внимание - это будет работать даже если GUI окно не активно, и даже если запущен обычный MsgBox !!! (нажмите на кнопку буквы). Код:
#include <GuiCtrlSetOnHover_UDF.au3> История зарождения функции на оф. форуме ;) . |
Давняя проблема с кодировками...
Есть два критичных вопроса (один критичнее другого :) ) : 1) Возможно ли написать функцию, которая будет возвращать тип кодировки указанной строки? К примеру, функция будет именоваться так: _StringGetEncoding(), и возвращать будет в соответствии с кодировкой: ANSI, Unicode, UTF-8, UTF-8 with signature.2) Как перекодировать строку в UTF-8 with signature кодировку? это нужно для обработки текста разных кодировок, я так понял это единственная кодировка которая справляется с текстом на многих языках. Дело в том, что мне нужно писать в лог файл, этот лог будет содержать данные, взяты с сети (названия ссылок, заголовок страниц и т.п), но при этом эти данные должны отображаться в моём GUI, для этого я использую функцию _UTF8ToUnicode (см. в примере далее), но когдя я пишу в файл в режиме UTF-8 with signature (FileOpen("log.txt", 129)), то данные пишутся некорректно, т.е если строка на русском, то либо пишет всё что до русских символов + русские символы (и дальше не пишет :( ), либо вообще не пишет русские символы, точно как показано в примере ниже: Код:
;Запишем сначала в файл, чтобы получить строку в кодировке Unicode (строка может быть и в этой кодировке, но проверить я не могу(?)) P.S Я верю что если найдётся решение для двух этих вопросов, то все мои (и не только) проблемы связанные с кодировками будут решены. |
Creat0R
Цитата:
Цитата:
И еще - я так и не понял зачем тебе понадобился юникод если ты работаешь только в UTF-8? :dont-know |
amel27,
Цитата:
А строка будет отображаться в ГУИ, и далее записываться в файл. Кстати, юникодная строка в Status Bar'е отображается некоректно, когда таже строка нормально отображается в других элементах гуи... но это не так уж важно. Цитата:
|
Creat0R
Цитата:
ADD: да, еще надо учитывать особенности API которым производится чтение строк т.е. по ходу передачи строка может неожиданно сменить свою кодировку Цитата:
З.Ы. строго говоря, UTF-8 и UTF-16 имеют одну кодировку (юникодовую) но разное двоичное представление |
Как создать одномерный, 24-ёх элементный массив со случайными числами от 1 до 12, которые должны каждый раз располагаться в случайном порядке, причём у каждого числа должна быть пара.
Сделал так: Код:
#include <Array.au3> |
Вложений: 1
amel27,
Ок, Прикрепляю реальный пример, вывод в гуи, нормально, запись в файл - не нормально :(. Обойти можно если использовать функцию кодировки только для показа в ГУИ, но бывают и другие строки (всё зависит от запроса поиска), которые нормально отображатся в ГУИ и без перекодировки, но в файл попадут неверно... вот и не могу найти идеальное решение... как говорится - Catch 22 ;) P.S Этот код, это часть моего проэкта YouTube Download Center! (исходники и необходимые ресурсы там прилагаются). Maza Faka Цитата:
И я даже пример вроде привёл (сорри, найти не удалось). |
Цитата:
Код:
#include <A3LConstants.au3> Цитата:
Код:
Func WriteToLog($Line) |
amel27,
Спасибо большое! С этим примером всё отлично работает, но на самом деле всё намного сложнее, в лог при некоторых обстоятельствах пишется и путь к файлу вместе с именем с сети (скачивается видео с сети), если путь содержит кириллицу, или теже ивритские символы (или вообще и те и другие), то в файле получается полная каша :( А также мне будет немного сложно адаптировать подобный метод, GuiCtrlSendMsg() работает с обычными контролями, а что делать со StatusBar к примеру? (не Label) - возможно SendMessage, но опять таки, это не надёжно, StatusBar не полностью поддерживает юникод. А также обновлять данные нужно по несколько раз, в зависимости от отображаемых элементов (там у меня есть динамичная панель которая скрывается опционально)... Кстати, есть ещё функция StringToUTF() (без API, чистая перекодировка символов), можно попробовать путь кодировать отдельно, а имя с сети отдельно... но вот если бы была функция для определения кодировки строки, то это упростило бы работу намного. В общем спасибо ещё раз, попробую найти хоть какой то компромис. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
amel27,
Цитата:
Цитата:
Код:
Func StringToUTF($String) |
Creat0R,
Цитата:
|
Как выполнить такое условие если в блокноте, строке есть знак + тогда выполнить дествие ???
|
Maza Faka,
Цитата:
http://forum.oszone.net/thread-60616...tml#post666511 Там задача была похожая, только от 1 до 13 :) .. И массив я сделал двумерный (мне кажется так легче), но то что ты сделал в твоём примере, можно сделать двумя циклами (плюс вспомагательная функция): Код:
#include <Array.au3> ;Только для _ArrayDisplay() Drsmog Цитата:
Код:
$NotepadTitle = "[CLASS:Notepad]" |
Огроменное спасибо !!!!!!!!!!!! :up :yahoo: :clapping:
|
Такая вот у меня проблемка:
Есть один сайт на который нужно закачивать картинки, а что бы их закачать нада сначала пройти авторизацию вводом логина и пароля. Так вот нельзя ли как нить сделать прогу на автоите для заливки картинок на этот сайт. очень нужно, а также необходим получать ссылки на залитые на сайт картинки. PS вот сам сайт www.nn.ru PSS вот тут http://www.nn.ru/services/personal-photo/ после регистрации будет галерея в котрую и нужно лить картинки. Помогите пожалуйста!!!! Заранее спасибо. |
Нужна помощь !!!!!!!! Пажалуйста кто нибуть !!!!!!!!!!!! :help:
а если в блокноте, строке есть знак + тогда выполнить дествие, а если нет + тогда естественно другое дествие я так примерно написал а почему то тока плюс проверяет $NotepadTitle = "[CLASS:Notepad]" WinWait($NotepadTitle) $EditText = ControlGetText($NotepadTitle, "", "Edit1") If StatusbarGetText ( $EditText,"+" ) Then Send('{DOWN}') ;Делаем наше действие ;) MsgBox(0, "", "ПЛЮС") ElseIf StatusbarGetText ( $EditText, "-" ) Then Send('{DOWN}') ;Делаем наше действие ;) MsgBox(0, "", "МИНУС") EndIf Мне надо так если +(тока в строке) тогда дествие если -(тока в строке) тогда другое дествие если ?(тока в строке) тогда другое дествие ну и т.д |
fak1r,
Цитата:
Drsmog, Цитата:
Цитата:
Код:
$NotepadTitle = "[CLASS:Notepad]" |
Этот скрипт проверяет всю страницу в блокноте на наличии знаков, а надо чтоб искал тока в строчке, допустим в блокноте
стоят знаки в столбик. + - ? тогда этот скрипт несрабатывает. Надо чтоб возле каждого символа писал слово например + это плюс - это минус ? а это вопрос |
Цитата:
|
да и я считаю что ТСР гораздо лучше будет работать чем ИЕ.ау3
|
Drsmog,
Цитата:
Цитата:
Что то вроде этого: Код:
$NotepadTitle = "[CLASS:Notepad]" fak1r, Увы, мне тоже никогда не приходилось производить авторизацию на сайте/форуме, я поищю на оф. форуме, возможно там кто-то уже делал подобное... |
Спасибо !!! Ну вроде то что надо
|
Два вопроса на повестке дня:
1) Возможно ли отключить (временно) устройство ввода (клавиатуру)? позже нужно будет его включить, без “побочных эффектов” :) 2) Как определить, установлен ли Flash Player для Internet Explorer? Обсуждение на оф. форуме зашло в тупик, функция чуть ниже возвращает True, однако при открытии странички с роликом на YouTube к примеру, получаю предупреждение о том что нужно установить Flash Player... Код:
Func ShockWavePlayer_Installed() |
25 ноября, 2007 - v3.2.10.0
Перевод by CreatoR (мой), мод на перевод от Google ;) P.S Скажу от себя, что в этой версии, как я и писал ранее, разработчики сделали поворот в 360 градусов, изменили многие функции, добавили новые. Да, теперь чтобы перейти на новую версию, нужно будет поменять многие (если не все) наши скрипты, я если честно не спешу этого делать, т.к у меня их слишком много :) - разработчики знают о том, что подобные перемены проблематичны скриптерам, но понаблюдав за их действиями (на оф. форуме), можно понять, что такие перемены оправданы, тем более что это принесёт пользу в будущем, ведь рано или поздно нужно что-то менять, улучшать, и лучше поменять всё(?) одним махом, чем каждый раз по чуть чуть, мучаясь переписывая скрипты. Happy Scripting!!! ![]() ![]() |
Creat0R
Цитата:
Код:
MsgBox(0, "", ShockwaveDetectAxVer(0)) |
Creat0R
Цитата:
Код:
; Скрипт для версии v3.2.10.0 |
amel27,
Спасибо, но функция всегда возвращает 0 :( , у меня на компе установлен Flash Player. Объекта SWCtl.SWCtl у меня нет, возможно это не стандартный объект... Но вот piccaso вроде нашёл решение, у меня, где есть флэш (для IExplorer), возвращает 9, на компе без флэша пока нет возможности проверить: Код:
Global $oErr = ObjEvent("AutoIt.Error","_ComError") Цитата:
Код:
#include <DllCallBack.au3> P.S Кстати, функция OnAutoItExit вызывается по умолчанию, её не обязательно вызывать ( OnAutoItExit() ). |
Creat0R
Цитата:
Цитата:
Цитата:
|
amel27,
Цитата:
Я на днях (максимум в субботу) проверю скрипт от piccaso, мне кажется что он сработает (вернёт 0 или ошибку). По поводу примера для клавы... есть подозрение что это тот же BlockInput, только для клавиатуры, т.к Ctrl Alt Del всё же работает (клаву не включает, но вызывает Диспетчер задач)... нет, я конечно не хочу блокировать и эти клавиши, но просто интересно, действительно ли блокируются все клавиши кроме этих, как бы это проверить точно? |
Creat0R
Цитата:
Цитата:
если на вход подать результат _Utf8ToUnicode() ту что приводил выше, то текст отобразится корректно... там номер сообщения отличается на 10 ;) Код:
; Вариант установки текста статус-бара для юникода |
amel27,
Цитата:
Цитата:
Но всё ровно конечно спасибо, когда обновлюсь (не скоро видимо) оно мне пригодится. |
Creat0R
Цитата:
Цитата:
Код:
Func _GUICtrlStatusBarSetTextEx($h_StatusBar, $s_Data = "", $i_Part = 0, $iCode = 0) |
Здравствуйте!
вклиниваюсь в переписку по очень важному для меня вопросу.... не знает ли кто-то как решить такую проблему. Речь идет об открытии файла эксель. $sFilePath="C:\фйлик.xls" $oExcel_Pr_M = _ExcelBookOpen($sFilePath) открываю файл Exel. Но он имеет сязи с другими книгами, и при открытии всплывает предупреждение Microsoft Excel - "Эта книга содержит связи с другими источниками данных..." и три кнопки - обновить, не обновлять и справка. В этот момент скрипт останавливается!!!! пока я руками не сделаю выбор...это же неправильно( пробовала послать Send - бесполезно! причем как-то странно реагирует на посыл, раз сделает как надо, раз - нет( я не понимаю в чем дело. Мне надо ответить - "не обновлять" и дальше двигаться...но на этом все встало(( |
Прошу прощения..но ктонить может обьяснить мне тупому почему данная каманда не работаает???
Код:
Run ( @SystemDir ) |
а вы какую программу там хотите запустить? вот например это запускается без проблем
Run(@SystemDir & "\cmd.exe") |
Как выслать в EXEL 2003 клавиши Ctrl+a
я делаю так send('{Ctrl}+{a}') и несрабатывает :-((, а должно было все выделится |
SvetlanaK,
Цитата:
Drsmog Код:
send("^a") |
Я хочу просто открыть провадник в какойто папке...без запуска програм...неуж нада кокуюто прогу оязательно??
|
это send("^a") несрабатывает он мне просто вставляет эти символы
|
а усе разобрался вобщем так
ControlFocus ( $EXEL, "", 'MsoCommandBar') SEND("^ф") ; это нажимает как Ctrl+a |
Angelus
Цитата:
Код:
$sPathSelect = "C:\Windows\System32" Код:
$sPathSelect = "C:\Windows\System32" |
amel27,
Цитата:
![]() Цитата:
Может на оф. форуме выложить, пусть поправят в оригинале? Цитата:
Angelus, Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
|
amel27,
Цитата:
Я думаю нужно запостить в форум AutoIt Feature Requests, назвать тему можно примерно так: “Unicode Support for _GUICtrlStatusBar_SetText()” И предложить чтобы добавили дополнительный параметр $iUFlag... Кстати, я до сих пор не понял, для чего функция _GUICtrlStatusBarSetUnicode()? что она делает? я ведь думал что именно она мне позволит отображать юникод в статусбаре. По поводу всё того же юникода... если нельзя определить кодировку (её тип) строки, то может всё же возможно определить не является ли строка юникодной? т.е проверить нет ли юникодных символов в $String'е. Т.к нужно знать какой параметр ставить в той же функции для статусбар, ведь с 65001 не юникодная строка отображаться корректно не будет :( |
видимо моя проблема так и не решится :((
|
fak1r
Цитата:
|
Maza Faka
пролистай назад, требуется автоматизация задач: - регистрация на сайте (линк дан); - заливка на сайт файлов. Creat0R Цитата:
Цитата:
Цитата:
Код:
Func _StringIsUTF8Format($string) |
Все привет.
Как написать, что я зажал кнопку SHIFT ? Объясните пожалуйсто, вот есть команда ControlClick("Adobe Acrobat 8 Professional", "", "[CLASS:Button; TEXT:Accept; INSTANCE:2]") INSTANCE:2 - что это такое и откуда это берется? Спасибо. |
HORRIBLE
Цитата:
Код:
Send("{+ Down}") Цитата:
В справке всё это обьясняется и очень подробно! |
Цитата:
Цитата:
Creat0R вроде разобрался как управлять кнопками питания, вот UDF и пример: Код:
Global Const $PowerActionNone = 0 |
amel27, Creat0R, Подскажите плз...Как удалить с рабочего стола все ярлыки за исключением ярлыка КОРЗИНА.lnk. Я написал скриптик, но как только он встречает ярлык КОРЗИНА - сразу скрипт перестаёт работать.
|
TERMINAL
Вообще-то корзина это не ярлык, а класс и так просто с рабочего стола её не удалить, можно через реестр: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}] @="Recycle Bin" Выложи свой скрипт. |
Maza Faka, Ты меня не понял-мне все ярлыки нужно удалить за исключением корзины.
|
TERMINAL
Можно так: Код:
#include <File.au3> |
amel27,
Цитата:
А самое главное нет ли у тебя да и у Creatora заодно желание создать аналог BSPI, который я очень уважаю, но автор его редко дорабатывает! Я думаю преимущества Вам понятны. А сама разработка была бы замечательным учебным примером для остальных! |
amel27,
Цитата:
HORRIBLE, Maza Faka, amel27, Цитата:
Цитата:
Send("{SHIFTDOWN}"), и соответственно отпустить - Send("{SHIFTUP}"). amel27, Цитата:
|
Вложений: 1
Скажите почему не работает последняя команда, что я не так пишу???
Или тут нельзя этой командой пользоваться, а можно только табом добраться до кнопочки ACCEPT? Пасибо. |
HORRIBLE
Попробуй так: Код:
ControlClick("Adobe Acrobat 8 Professional", "", "Internet Explorer_Server1") |
amel27,
По поводу определения флэша... Я проверил, на системе никогда не устанавливался флэш плеер, функция от piccaso вернула версию 6, я установил плеер, возвращает 9 - вот я и подумал, а что если просто проверять совместимость текущей версии и версии плеера? (или может есть возможность послать запрос (от лица IE) на получение инфы о том, установлен ли в системе Flash плеер?). Вот что у меня получилось в результате: Код:
Global $oErr = ObjEvent("AutoIt.Error", "_ComError") |
Creat0R
Цитата:
Код:
Func IsShockwaveInst() Цитата:
Цитата:
Код:
; ... |
HORRIBLE
надеюсь, вы предварительно ознакомились с материалами форума по установке Adobe Reader 8.0? NikLok Цитата:
Цитата:
|
Creat0R
немного отсебятины по поводу юникода: - в ANSI-режиме AutoIT юникодовые (UTF-16) строки можно хранить только в переменных типа Binary, так как двухбайтовые символы включают нулевые байты недопустимые в обычных строках…. точнее такие байты воспринимаются как конец ANSI-строки и строковые функции перестают корректно работать. Зато обычные строки (тип String) могут хранить и обрабатывать юникодовый текст в формате UTF-8… но так как Windows API понимает юникод только в UTF-16 перед передачей в API (к примеру в GUI) требуется дополнительное преобразование кодировки. - чтобы переключить AutoIT в юникодовый режим сам текст скрипта должен быть набран в юникоде… SciTE способен редактировать юникодовые скрипты, но не позволяет пересохранить скрипт в другом формате - для этого можно воспользоваться «блокнотом» - в юникодовом режиме AutoIT все строки представлены двухбайтовыми символами UTF-16, и все строковые функции «заточены» на работу именно с такими строками, в частности результат StringLen() будет отличаться от количества байтов в строке (в два раза)… для работы с многобайтовыми строками UTF-8 требуется их предварительное преобразование в UTF-16 - при передаче строк в GUI-элементы через SendMessage() важно учитывать в каком режиме находится AutoIT, так как для передачи ANSI и Юникодовых строк используются разные номера сообщений… между тем мне не попадалось пока UDF, пытающихся самостоятельно определить текущий режим работы AutoIT |
amel27,
Цитата:
Цитата:
Цитата:
|
На элементе ListView созданный с помощью UDF функции(_GUICtrlListView_Create) почему-то не срабатывает GUICtrlSetResizing().
Конечно можно было бы изменять его размер при получении сообщения WM_SIZING от окна, но к сожалению GUICtrlSetPos() на нём тоже не срабатывает... Мне кажется, что это происходит из-за отсутствия ID у ListView... Как быть? Может кто-то уже сталкивался с этим? P.S. У UDF'ного ListView нашёл баг: Если попытаться поменять местами пункты в ListView - отображается "+" и окно зависает до тех пор пока не кликнешь по другому окну, например по "Рабочему столу". Если пункты(item) в ListView имеют изображения, то воспроизводится такой же баг если потянуть за само изображение. |
Diamond,
Цитата:
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
|
Creat0R,
Цитата:
Что касается недостатков... то есть хоть и один но очень существенный: Если ListView был создан с помощью штатной GuiCtrlCreateListView() то управлять им с помощью UDF'х функций не получится(Хотя некоторые всё же срабатывают). Цитата:
В общем реализовал так: Код:
Func WM_SIZE($HWnd, $MsgID, $wParam, $lParam) Думаю проблема решена, спасибо. |
Передача строки другому приложению
И собственно вопрос, что должен содержать первый элемент(dwData) у структуры tCopyData? P.S. Как передать-принять командную строку если скрипт которому её нужно передать уже работает? Я в начале предположил что это можно реализовать через WM_COPYDATA используя два процесса. Может есть какой нибудь специальный способ? |
amel27,
Цитата:
Цитата:
Насколько я знаю, это новый макрос, я его лично приминил пару раз (к примеру в проэкте KeyBoard and Mouse Cleaner - для которго кстати мне и нужны функции блокирования клавиш ;)) - В ранних версиях аутоита использовался $DTM_SETFORMAT = 0x1005, в последних версиях нужно проверять юникодность, если скрипт в юникоде, тогда значение должно быть $DTM_SETFORMAT = 0x1032 (решение от самого Jon'а ;) ), иначе некорректно отображается формат времени (для GUICtrlCreateDate()) - почему аутоит сам не проверяет, я так и не понял :(. Diamond, Цитата:
Цитата:
Я бы использовал тут WM_SIZING, оно срабатывает в момент смены размеров. Кстати если интересно, могу подкинуть функцию для автоматической смены размера колонок в ListView (сам писал), в момент смены размера GUI будут смещаться колонки в идентичный размер для каждой (опционально - либо по ширине списка, либо до последнего разделителя). Цитата:
Этот скрипт нужно запустить (не из SciTE), и потом запустить его ещё раз :) - получим ком. строку с которой запущен скрипт... очень полезно если нужно не запускать повторно копию скрипта, и при этом передать данные (такие как путь к "сбросанному" файлу в файл программы ;) ). |
Diamond
Цитата:
Цитата:
|
Creat0R,
Цитата:
Цитата:
Цитата:
Спасибо за пример. Кстати твой код мне показался проще и понятнее чем на офф. форуме. GUICtrlSendToDummy() я использую для того чтобы как можно быстрее выйти из функции и отпустить "передающий процесс". От $CmdLineRaw решил отказаться потому что не знаю как правильно разобрать строку. |
Diamond,
Цитата:
Цитата:
Правда почему то функция не срабатывает корректно при разворачивании/восстановлении, поэтому пусть стандартный обработчик справляется с этими событиями ($GUI_EVENT_MAXIMIZE, $GUI_EVENT_RESTORE). Но зато она работает и на внешних приложениях ;) Цитата:
Цитата:
|
Всем еще раз привет.
есть такой код: $file3= FileOpen("DONE.txt", 1) $file4= FileOpen("NOT DONE.txt", 1) $File1=false If $File1 = false then MsgBox(0, "Info", "Disable '&$File1&'.", 3) FileWrite($file4, " '&$File1&' Disable User") Else MsgBox(0, "Info", "DElaem '&$File1&'.", 3) RunWait("ACDSee.exe") FileWrite($file3,&@CRLF " '&$File1&' Ystanovleno" &@CRLF) EndIF Вопрос, как присвоить переменной $File имя ACDSee чтобы в окошке MsgBox когда оно выскакивало был текст Disable ACDSee, а не Disable '&$File1&' . Ну и соответственно в записаном файле тоже самое было. И можно ли как нить создать переменную, с именем пользователя в винде? (Короче говоря какое имя у пользователя в винде, такое же имя и у переменной.) Чтоб она сама себе присваивало, это имя? Спасибо. |
HORRIBLE,
Цитата:
Код:
$file3 = FileOpen("DONE.txt", 1) Цитата:
|
Creat0R,
Дык, а где я должен задать, что $file1 это есть Acdsee, ведь значение false говорит только, что я типо дела отменил установку. Если делать как ты говоришь, то получается Disable false, а мне немного другое надо. Цитата:
|
Цитата:
Код:
Global $ACDSeeVar = "ACDSee" P.S В справке много полезного ;) - просто нужно немного терпения при её чтении. |
Creat0R, )
Спасибо. Чет я сглупил, а все так просто оказалось)). Я хотел обойтись ток 1 переменной. Наивный. |
По мативам примера из справки (при использовании фикса очередного бага в примерах справки), я написал функцию для открытия системного диалога выбора иконки:
Код:
$sFileName = @SystemDir & "\User32.dll" Добавленно: Вы не поверите, как только я запостил эту функцию, я на оф. форуме совершенно случайно наткнулся на подобную функцию, а точнее всего одну строчку вызовом Dll !!! Вот функция на основе этой строчки :) ... Код:
Func _PickIconDlg($sFileName, $nIconIndex=0, $hWnd=0) |
Creat0R
А как можно создать toolbar ![]() , если можно, с примерами пожалуйста. |
Maza Faka,
Цитата:
Я скоро выложу «AutoIt Bar», там не совсем оригинальный тулбар, но что-то похожее, предназначен в помощь скриптеру AutoIt'а ;) |
Creat0R
Цитата:
|
В новой версии кол-во UDF увеличилось, что не может не радовать, но увеличилось также кол-во вопросов. :-)
Взять к примеру Цитата:
Код:
#include <GuiConstants.au3> Код:
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) |
Maza Faka
По поводу Toolbar'а... Вот простенький пример (примитивного уровня)... ![]() Код:
#include <GuiConstants.au3> |
Creat0R
Цитата:
|
Вложений: 1
Подскажите, пожалуйста, как можно переключатся по закладкам и выбрать нужный компонент в подобном окне (свойство "Подключение по локальной сети") без использования имитации нажатия клавиш и мыши. Дело в том что число компонентов и закладок может изменятся, поэтому иметация нажатия уже будет не попадать.
|
А как написать, что бы можно было копировать папки/фалы с сдрома, незная буквы CD? можно ли такое сделать на AUTO IT.
Спасибо. |
Цитата:
Вот автовход на сайт : www.nn.ru Код:
|
Kenwood3D,
Для переключения вкладок, можно использовать мою UDF _ControlTab(), и указывать текст в качестве идентификатора... Т.к я изменил функцию, вылажу её ещё раз чуть ниже (не помещается) - добавлена возможность выбора определённого таба ("TabSelect"), и для TabRight/TabLeft теперь можно указывать дополнительный пареметр, определяющий сколько сдвигов следует сделать вправо/влево: Код:
$ConnPropTitle = 'Подключение по локальной сети' HORRIBLE Цитата:
Код:
$DrivesArr = DriveGetDrive("CDROM") |
Функция _ControlTab():
Код:
;=============================================================================== |
amel27,
Мы мучались с DllCallBack (чтобы скрипт не останавливался на момент перемещения окна), когда можно было просто использовать обычный GUIRegisterMsg($WM_TIMER, "WM_TIMER") ![]() Инфу чисто случайно откопал из скрипта “Network profiles” (на оф. форуме) ... Код:
#include <GuiConstants.au3> |
1. Можно ли скрыть диалоговые окна при автоустановке приложений через AutoIt?
2. Почему в скриптах для автоустановки приложений вначале закомментированы строки с блокировкой ввода? Бывают проблемы? |
Rogalik,
1. Да, см. функцию WinSetState("Title", "Text", @SW_HIDE). 2. Проблемы бывают в частности и за того что пользователь “произвольничает” в момент установки :) , но скрипт должен быть оптимизирован так, чтобы пользователь ничего немог нарушить - блокирвание ввода должно ставиться в крайних случаях. |
----------------------------------------------
Подскажите пожалуйста как можно сделать проверку выполнения скрипта, а именно не застыл ли он на какой нить строчке??? Если застыл то закрываем работу скрипта. ----------------------------------------------------------------------------------------------------------------- Может кто нить сталкивался с таким, почему на виртуальной машинке при установки программы через авто ит, не срабатывает команда Send("^c"), должен скопировать, а не копирует, или Send("^v") должен вставить то что скопировал, а вставляет v. Проверил тот же самый скрипт на другом компе, не на виртуальной машине, все замечательно копируется и вставляется. Спасибо. |
HORRIBLE, Сам сталкиваюсь часто с такими ситуациями. Мне видится, что если бы скрипт выполнялся построчно другим автоит скриптом, с этим бы не было проблем! Поэтому то (в дополнение кдругим причинам) хочется иметь аналог BSPI или WMI написанный на автоит!!!
А для копирования вставки попробуй использовать пару: Код:
ClipPut($nm) |
Цитата:
Т.е. при автоустановке программ окна инсталлятора и автоматические действия скрипта с ними приходится наблюдать полюбому, так? |
Rogalik,
Цитата:
Да, в скрытых окнах нажать ничего нельзя, но можно в свёрнутых (WinSetState("Title", "Text", @SW_MINIMIZE)) ;). |
Цитата:
Все равно не получается silent-установки, как я хотел, жаль :( |
А каким образом запустить 1.msi, если он на ходиться в C:\1\2\1.msi, через скрипт Auto It, который находится в корне, а не в папке с установщиком.
|
HORRIBLE,
Global $filename = "\1\2\1.msi", $file = @HomeDrive & $filename RunWait ( 'msiexec /i "'&$file&'"') Должно работать... |
Спасибо все работает TERMINAL,
А скажи зачем $file заключать в 3-ые ковычки???? |
HORRIBLE,
Цитата:
All Нужна срочно помощь по RegExp... Никак немогу получить массив со всеми совпадениями между двух символов ($), но при это должно учитываться, что нужный нам текст, должен содержать только допустимые для переменной символы, а именно A-Z, 0-9, и _ (вроде больше ничего не допускается). Чтобы проще понять что мне нужно, покажу что я пытаюсь сделать на примере: Код:
#include <Array.au3> Код:
$String = "This is <$Var$> and this is <$Str>" Код:
$String = "This is <$Var> and this is <$Str$>" |
Нашёл!!! :yahoo:
Код:
#include <Array.au3> Мне это нужно было для функции _ExpandVarStrings() - позволяет расширять переменные (не включая макросы) в любом виде, даже такие: "$Var". Пример и сама функция: Код:
$Var = "Our Value" |
Нашёл вроде багу в Opt("ExpandVarStrings", 1)...
Код:
Opt("ExpandVarStrings", 1) Код:
Opt("ExpandVarStrings", 1) Код:
;=============================================================================== |
Creat0R
Цитата:
А как на счет выбора компонента в окне свойство "Подключение по локальной сети" без использования имитации нажатия клавиш и мыши? |
Kenwood3D,
Цитата:
|
Kenwood3D
вот пример изменения состояния компонента: Код:
#Include <GuiListView.au3> |
HORRIBLE, Мало ли, может захочишь установку делать с ключами...
RunWait ( 'msiexec /i "'&$file&'" /L1049 /S /v/qn') amel27, Creat0R, помогите сделать скрипт плз.... Нужно определить операционку, если VISTA выдаёт сообщение, если XP выдаёт сообщение. (сам бы сделал, но нет под рукой ВИСТЫ, может Вы вкурсе по каким файлам можно определять.....) Я использовал If @OSType="WIN32_NT" Then.... , но почему то не определяется ВИСТА (наверно рна тоже относится к @OSType="WIN32_NT"). Заранее СПС! Creat0R, ты мне давал скрипт который выполняет копирование папки с показателем времени от винды... 1. Нужно сделать так-если файлы есть - перезаписывать... 2. Возможно ли сделать на скрипте чтобы показывало остаток времени (вообщем как в винде) *автор скрипта возможно и amel27, но разговор был с тобой.... |
TERMINAL,
Цитата:
Цитата:
Цитата:
Цитата:
|
Creat0R, Ща нарою, не убегай...
Вот на этой страничке наше обсуждение, но всё что ты писал я копировал в Autolt и у меня вылазила целая куча ошибок (пробовал только что на свежей версии-непомогает).... Сразу говорю-мне нужно скопировать с диска папку i386 на С диск... |
TERMINAL,
Цитата:
Вот это разве не делает то что нужно: Код:
_CopyWithProgress("D:\i386", "C:\i386", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION)) |
Creat0R, для теста скопировал и переделал на - _CopyWithProgress("D:\$OEM$", "C:\9", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION))
Вот какие ошибки... а за @OSVersion большое СПС ! |
TERMINAL,
Цитата:
Нужно так: Код:
;Тут нужные константы |
Creat0R, сори, протупил...всё получилось, но копирование происходит в верхнем левом углу
(можно в другое место?) А хотелось бы, чтобы выглядело это так и ниже после Выполняется подготовка дистрибутива Windows XP Professional Edition Service Pack 2 Plus шла шкала и время копирования.... примерно я хочу так |
amel27
Цитата:
Цитата:
я так понимаю что $TabText = "название закладки". Если это так то в моем случае я делаю так $TabText="Дополнительно", но скрипт не переключает на данную закладку. |
TERMINAL,
Цитата:
У меня уже есть рабочий механизм (кажется даже приводил уже здесь), но для твоей задачки нужно немного переделать, если такой вариант подходит, позже выложу. Kenwood3D, Цитата:
Код:
$ConnPropTitle = 'Подключение по локальной сети' Цитата:
|
Цитата:
$iIndex = _ControlTab($ConnPropTitle, "", "FindTab", $TabText, "", True) и всегда равняется 0 Цитата:
:) Может тогда еще подскажите как в "Подключение по локальной сети - свойства" -> Настроить -> "Свойства: " выбрать закладку "Дополнительно" и там выбрать свойство "Сетевой адрес"? А то видемо из-за закладок не могу определить ClassNameNN списка. |
Creat0R, ок, буду ждать... А выглядеть будет так как я хотел?
|
Народ, подскажите плииз - не могу понять в чем дело. Сделал скрипт для автоматической установки AutoCAD 2006 Russian: на основе скрипта для установки AutoCAD 2005, взятым на форуме MSFN. Для мониторинга вводимых команд использовал ScriptWriter. Все вроде работает, НО... только с жесткого диска :weep:.
При попытке запустить установку с DVD-ROM (одновременно с Unattended-установкой Windows), все срубается. Такое ощущение, что "кто-то" (что-то) жмёт на клавиши раньше записанных действий, и весь автоматизм нарушается. Попытки отмониторить весь процес уже при установке с DVD-ROM к успеху не привели - ScriptWriter тупо зависает, и не дает сохранить лог действий. Ничего больше в голову не приходит - я в AutoIT начинающий. И ведь при установке с винта все РАБОТАЕТ БЕЗ ПРОБЛЕМ - пробовал на разных компах... Что тут можно посоветовать? И еще. При выполнении даже скомпиленного AutoIT-скрипта в трее остается значок, который продолжает "висеть", когда весь процесс нарушается (Script paused). Этого можно как-нибудь избежать? В опциях компиллера (Aut2Exe) я ничего об этом не нашел :shuffle:. Дело в том, что из-за этого нарушается весь процесс дальнейшей установки... |
Вложений: 1
Прикрепляю первую версию самодельной функции для копирования папок вместе с их содержимым...
Две проблемы которые нужно решить: 1) Более точный подсчёт оставшегося до окончания копирования времени (мне кажтся у меня вообще неверный подсчёт, делал давно). 2) AVI-Анимация останавливается на время копирования большого файла - это можно было бы решить если создание всего GUI повесить на отдельный скрипт, но тогда будет висеть два процесса для одной задачи :(. P.S В скрипте используются много CallBack-вызовов.. что может повлиять на нагрузку памяти на время копирования. Для примера нужно распаковать архив, открыть файл Copy With Progress Example.au3, и выставить нужные пути. В самой функции (в качестве параметров) можно указать размеры окна и его местоположение на экране. TERMINAL, Цитата:
|
SergeyAV,
Цитата:
А также все Send() наверняка можно переделать в ControlClick, но точно сказать немогу, негде проверить. Цитата:
|
Цитата:
WinWait WinActivate WinWaitActive ? Попробую... Цитата:
Цитата:
|
Creat0R, чего-то я не пойму где здесь прописовать какие копировать папки и куда.......
|
SergeyAV,
Цитата:
Чтобы узнать класс/имя элемента, нужно использовать инструмент Au3Info (вместе с AutoIt идёт). Вот немного подправленая версия твоего скрипта, я добавил немного комментов, присмотрись к ним ;) P.S Если AutoCad небольшая прога, могу потестить (чтобы усовершенствовать скрипт), всё ровно скоро систему нужно переустанавливать :) |
SergeyAV, У меня тожк такая же проблема была с AutoCAD 2005-это клас из тех программ которые начинают себя неправильно вести при установке винды (я так думаю из-за отсутсвия драйверов). Я его оложил в долгий ящик, но скоро им займусь, если нужно- через неделю можешь спросить, может чем то помогу.
Creat0R, AutoCAD 2005 прога большая- у меня она помоему 400 мег. |
TERMINAL,
Цитата:
Всё довольно просто ;). |
Цитата:
Цитата:
Цитата:
Цитата:
TERMINAL, Цитата:
Подробнее здесь: http://forum.oszone.net/thread-61866.html В 2-х словах: создается админстративная точка (модификация дистрибутива, точнее .msi), которая потом уже без проблем устанавливается... Но с AutoIt разобраться все равно хотелось бы, хотя бы потому, что есть много других прог, где "автокадный способ" не прокатит... |
Ребят, подскажите. Это про калькулятор ).
1 ... $CTRL_btn1 = GUICtrlCreateButton("1", 54, 138, 36, 29) $CTRL_btn2 = GUICtrlCreateButton("2", 93, 138, 36, 29) $CTRL_btn3 = GUICtrlCreateButton("3", 132, 138, 36, 29) $CTRL_btn4 = GUICtrlCreateButton("4", 54, 106, 36, 29) $CTRL_btn5 = GUICtrlCreateButton("5", 93, 106, 36, 29) $CTRL_EdtScreen = GUICtrlCreateEdit("0.", 8, 2, 239, 23,BitOR($ES_READONLY, $ES_RIGHT),$WS_EX_STATICEDGE) $CTRL_LblMemory = GUICtrlCreateLabel("", 12, 39, 27, 26) GUISetState (@SW_SHOW ) While 1 $msg = GUIGetMsg() select Case $msg = $CTRL_btn0 GUICtrlSetData($CTRL_EdtScreen, $CTRL_btn1 ) EndSelect WEnd Почему он в поле $CTRL_EdtScreen вводит 4 ??(причем если помять кнопку не $CTRL_btn1 а там например $CTRL_btn5 поставить, то покажит вместо 5 на 3 больше, т.е. 8) или так нельзя задавать значения, а только так GUICtrlSetData($CTRL_EdtScreen, "1") Но если так писать то в поле $CTRL_EdtScreen получается вводить ток по 1 цифре, а как быть если нужно ввести 2 и более. .... 2. Я так понимаю первую цифру при нажатии кнопки + он заносит в память, а дальше все тупик для меня( у меня получается нажимаю цифру 5 потом нажимаю + и он мне складывает 5+5 пишет 10(хорошо хоть правильно получилось сложить:) ) А как сделать, чтоб при нажатии + он складывал то, что в памяти с той цифрой которую я ввел после нажатия +. Спасибо. |
HORRIBLE,
Простой(?) пример калькулятора: Код:
#include <GuiConstants.au3> |
Creat0R
Цитата:
|
SergeyAV, уж если хочешь разобраться с AutoIt, тогда советую написать скрипт к DivX 6.7+keygen ! Вот когда напишешь, будешь больше знать чем сейчас (если ты новичёк). Только условие-при региистрации не вводить ключ к с AutoIt, а бери его с кеуgena...
Другой вариант-я лично учился на примерах от Sanya Alone, от его примеров подчёркивал самое важное... |
Цитата:
А применительно к топику (AutoIt) есть куда больше животрепещущих вопросов... |
SergeyAV, Я промолчу... Мы разговариваем на разных языках.... Не будем вести дискусию не по теме !
|
Creat0R, Помоги плз... Внизу приложеный скрипт-проблема такая, нужно чтобы после сообщения галочка изчезала в Checkbox1.
|
Цитата:
Почему то твой способ ни на одной закладке на работает. Код:
Пример: |
Возможно ли при установке Windows XP, после копирования файлов, после 1й перезагрузки, заставить работать скрипт?
|
TERMINAL,
Цитата:
Код:
GUICtrlSetState(@SW_SHOW, $GUI_UNCHECKED) :) Выдели слово GUICtrlSetState (или просто поставь на нём курсор), и нажми F1 - увидишь справку для этой команды ;). Код:
GUICtrlSetState($Checkbox1, $GUI_UNCHECKED) Kenwood3D, Цитата:
Код:
DllCall("user32.dll", "long", "SendMessage", "hwnd", $hTab, "int", $TCM_GETITEM, "int", $sParam1, "int", $pItem) Вот так вроде работает: Код:
Run ("rundll32 shell32,Control_RunDLL main.cpl @0") |
Creat0R
Спасибо за калькуль, а можешь объяснить несколько строк из кода: 1. Switch $nMsg Case -3 Что здесь означеет -3 ........... 2. UBound($aOperations_Arr) - зачем, с какой целью мы делаем возрат размерности массива. 3. If $iUbound <= 1 Or $aOperations_Arr[$iUbound-1] = GUICtrlRead($nMsg, 1) Then ContinueLoop ReDim $aOperations_Arr[$iUbound+1] $aOperations_Arr[$iUbound] = GUICtrlRead($nMsg, 1) что тут такое выполняется и зачем это сравнение? 4 и все таки как он складывает или умножает, где это в коде ,видно, но как ????? Спасибо. |
Maza Faka,
Цитата:
HORRIBLE, Цитата:
Цитата:
Цитата:
Цитата:
P.S Чуть позже выложу другую версию калькулятора, где поддерживаются хоткеи, а также ещё несколько улучшении ;) |
Creat0R,
$Plus_Button $Minus_Button $Devide_Button $Multiply_Button это получается стандартное обозначение сложения, вычитания и т.д. ?? А вот, а откуда берутся данные, что я нажал на кнопку деления, ведь ты же не записывал алгоритм, что делим одно число на другое ? А только указываешь с какой по какую кнопку. Я правильно думаю, что об операции которую требуется выполнить $Devide_Button = GUICtrlCreateButton("/", 80, 40, 25, 20) то что стоит в "" это и говорит что необходимо произвести деление или как???? Может как то некорректно вопрос поставил, извините. Спасибо. |
Вложений: 1
Creat0R,
Цитата:
Если можно, подсажите решение первой проблемы здесь И еще! :) Как проверить наличие или отсутсвие флага |
HORRIBLE,
Цитата:
Код:
$aOperations_Arr[$iUbound] = GUICtrlRead($nMsg, 1) Просто в массив записываем этот текст, и когда делается подсчёт (Execute()), то соответствующая операция будет выполнена... да, если создать кнопку с другим именем, то подсчёт будет не корректный. Kenwood3D Цитата:
Нужно в фунцию _ControlTab() добавить это перед Swith $sCommand... Код:
If Not IsHWnd($hWnd) Then $hWnd = WinGetHandle($hWnd) Код:
#include <ControlTab.au3> Цитата:
Код:
If BitAND(GUICtrlRead($Ctrl), $GUI_CHECKED) Then |
Creat0R,
Цитата:
Цитата:
Цитата:
|
Вобщем, проверку наличия галочки выполнил, оказалось, простым способом
Код:
ControlCommand("Заголовок окна", "", "Button2", "IsChecked") |
Kenwood3D,
Цитата:
Код:
#include <GUIConstants.au3> Цитата:
Задача была не ясна. |
Creat0R
Цитата:
|
Creat0R
Цитата:
|
Maza Faka,
Цитата:
amel27, Цитата:
Цитата:
Цитата:
Цитата:
Код:
$aCurInfo = GUIGetCursorInfo($hCopyProgrss_GUI) Цитата:
Мне интересно решить проблему с _GetTimeRemained(), я теперь уверен что моё “древнее” решение совсем неверно, подсчёт не должен происходить на основе количества копируемых файлов и определённом (зарание) уровне (для суммы файлов). |
Цитата:
|
Kenwood3D,
Цитата:
|
Подскажите пожалейста Как можно растянуть и зафиксировать панель задач на две строки (желательно, чтобы квикланч оказался сверху, а открытые программы - снизу).
|
DImaN!
По моему с таким вопросом тебе в другой топик. |
Эффект пристыковки GUI-окна к краям экрана или даже к краям других окон:
Код:
#include <GUIConstants.au3> |
Добрый день!
Нужно вставить строку из autoit'овского Input'a в EditBox стороннего приложения. Собственно при выполнении скрипта перемещаю курсор в нужный EditBox и отправляю: Код:
Send(GUICtrlRead($testinput)) |
SashaShveik
Пример: Код:
#include <GuiConstants.au3> Поищи в топике, было много решений этой проблемы. |
Вопрос (касается моего примера пристыковки гиу окна) - как можно определить только те окна, которые видно пользователю? BitAND(WinGetState($Title), 2) определяет скрыто ли окно, а как определить не спрятанно ли оно за другими окнами, ведь в моём примере, если окно не скрыто/не свёрнуто, но находится за каким то другим окном, то GUI пристыковывается к краям этого окна, хотя краев не видно.
В идеале хотелось бы конечно опрелделять не просто видимость (a.k.a доступность) окна, а именно его видимые края, чтобы можно было пристыковывать только к тем краям, которые видимы для глаза :). |
Проблему вроде решил (осталась только проблема с высокой загрузкой ЦП в момент перетаскивания окна).
Функция для корректировки ссылки (вида hттp://, _http://, хттп:// и т.п.): Код:
ConsoleWrite(_CorrectURL('_hттp://creator-lab.ucoz.ru/load/0-0-1-35-20')) Поскольку есть "много заинтересованных" в «AutoIt Menu для Opera», я |
Подскажите как мне отправить письмо на почтовый яшик например мойадрес@mail.ru спомошью функции _INetSmtpMail ,если можно то готовый скрипт с подробным описанием, буду рад помощи
|
Вложений: 1
rimm
Код:
$s_SmtpServer = "smtp.rambler.ru" |
Вот на руборде дали мне сылку вот на этот скрипт
Код:
Func _UploadImage($sFilepath) Так и не получается залить картинку |
Как в Excel-е узнать есть ли текст в ячеике или нет ? Например в ячейке A1 есть а в A2 нет ?
|
Помогите пжалста...
Какой командой в скрипте прописать выполнение другого скрипта *.vbs ? |
Endr,
Цитата:
Код:
$MyScript = '"C:\My Script.vbs"' |
Creat0R, будьте добры, подскажите пжалста как установить в Windows XP службу, с последующим запуском данной службы. В справке AutoIt я этого не нашел... (или может ссылочку туда, где это обсуждается) :help:
ЗЫ: Creat0R, описанные Вами способы не помогли запустить скрипт *.vbs :( |
Endr,
Цитата:
Цитата:
|
Если кликнуть по файлу *.vbs, то скрипт запускается, а если через описанные выше способы (через скрипт AutoIt) вообще ничего не происходит... (и почему-то с некоторых пор у меня при запуске скриптов AutoIt в трее ничего не появляется :( )
Извиняюсь, что не цитирую, что-то не получается тут это использовать на этом компьютере.. |
Endr,
Цитата:
Код:
MsgBox(0, "", "Hello World!") Цитата:
|
Creat0R, да, окошко появляется :)
Да дело не в компьютере... мои-то скрипты работают. Тут видимо не так надо запускать vbs-файлик... |
Endr,
Цитата:
У меня оно работает нормально, вопрос возможно глупым покажется, но всё же; как определяется что скрипт (vbs) не запускается? |
Creat0R, у меня есть скрипт на VBS, который подкидывает файлики, устанавливает и запускает службу в Винде и потом удаляет все, что для этого требуется и себя. Определить работает скрипт или нет очень просто - служба запускается (если она выключена) и потом файлы удаляются...
Все это нужно для установки Радмина (тот скрипт, который я нашел в интернете делает это видимо, а мой - скрытно). В данный момент у меня половина написана на AutoIt (это распаковка файлов для установки, в т.ч. и скрипт на VBS), а остальное делает собственно скриптик VBS. Могу прикрепить код. |
Endr,
Можно попробовать указать рабочую папку: Код:
ShellExecute($MyScript, "", "C:\") amel27 Такой вопрос - накалякал функцию (на основе других подобных) для проверки пути, не является ли он запущенным процессом, всё вроде работает (возвращает PID процесса), но вопрос в том, насколько надёжно использовать Psapi.dll? :shuffle: - в справке по этому поводу вот что сказанно: Цитата:
Вот функция: Код:
$PathIsProcess = _PathIsProcess("C:\Program Files\qip\qip.exe") |
Creat0R, указал рабочую папку и запустился VBS-скрипт. Спасибо! :up
|
Creat0R
Привет! Не поможешь? Никак не получается убить процесс средствами WinAPI Код:
#include <Array.au3> Цитата:
Цитата:
|
Maza Faka,
Цитата:
На оф. форуме решения тоже нет, там ссылаются на C/C++, а на AutoIt перевести видимо ленятся :biggrin: |
Creat0R
Цитата:
Цитата:
P.S. Если вдруг наткнёшься на решение, сообщи пожалуйста. |
Ура! :) Нашёл, вернее указали на ошибку. А ошибочное значение из недобросовестного ресурса, уже не помню какого.
|
Функция возвращает пронумерованный список всех классов определённого окна:
Код:
Func _WinGetNumeratedClassList($sTitle) |
amel27,
Не удаётся в новой версии AutoIt 3.2.10.0 переделать самопальную функцию _FileSelectFolder() - хотел избавиться от CallBack UDF'ов, соответственно использовать встроенные функции, но при запуске скрипт намертво виснит, диалога невидно вовсе :( Я заменил... _DllCallBack($sCallbackProc,'hwnd;uint;long;ptr') на DllCallBackRegister($sCallbackProc, 'int', 'hwnd;uint;long;ptr') А также _DllCallBack_Free на DllCallBackFree И убрал все UDF'ы/переменные/константы от библиотеки CallBack, но видимо нужно что-то ещё править, подскажи плиз что именно, у меня многие скрипты используют эту функцию, я затрудняюсь теперь пересесть на новую версию :help: . |
Никто не пробовал написать скрипт для Nero 8? А то втихую не получается, требует перезагрузку даже при включенном автоматическом обновлении. Может кто попробует, у кого время есть?
Заранее спасибо! |
Хорошо пополняются посты в этом топике =)
Помогите реализовать корректно работающий скрипт с тикими требованиями: Лечилка для одной RPG игры. Все происходит в разрешении 1024х786 1. В определенных координатах если изменился цвет, то нажимание клавиши Q происходит с интервалом 0.5 секунды пока невернется снова красный цвет (q клавиша это пить баночки жизьни). И в это же самое время нажимать клавишу E (e элексир силы) 2. Очень важно чтоб при этом была всегда зажата правая кнопка мышки (почемуто у меня никак неполучается реализовать в действии с другими командами) 3. Как реализовать чтоб работало внезависимости если 32 бит или 16 цвет? Поискал по форуму здесь и на офф. сайте вот нашел скрипт но в нем часть задумки реализована. Кстати он неработает тоесть не нажимает на кнопки. PHP код:
|
kagorec
С Новым Годом! Цитата:
Цитата:
Цитата:
|
Maza Faka Тебя также с новым :)
Спасибо, посмотрю мануал может чтонибудь да получится ... Насчет посмотреть в топике этт 194 страницы просмотреть с моим диалапом, а можно пример скрипта ? |
Ну может всё таки кто нибудь напишет скрипт для Nero8?
|
kagorec
Цитата:
МИШАНЧИК Цитата:
|
Добрый день, такой вопрос.....есть параметр, нужно что бы он проверял соответствие пути, и если есть лишнии символы то выдал сообщение....
Код:
|
Angelus
FileExists()? |
Я хочу что бы он путь проверял...и если в графе вписано путь и в конце имя файла тогда он выдал сообщение....если не вписано имя файла...то записал в ини файл то что в графе....
|
Angelus
Так? : Код:
$parsing = StringRegExp($serv1_realm, "\..{3}$", 3) |
Цитата:
Код:
Func _FileSelectFolder($sText='', $iRoot=0, $iFlags=0, $sInitDir=@ScriptDir, $hWnd=0, $sCallbackProc='_FileSFCallbackProc') |
Да спасибо...сработало....интересная команда....
|
Creat0R
Ругается на: Цитата:
|
Попытался собрать из нескольких кодов нужный скрипт.
Для экрана 1024х768, движение курсора по кругу (в центре радиусом 300пикселей) скорость неполучается выставить 25 через команду Opt (mousemove), при этом удерживается правая кнопка мышки. Старался вписать управление скриптом: Pause - пауза F9 - включить F10 - остановить Но при включении ахтунг получается - курсор движется по кругу удерживая кнопку все хорошо, НО процессор нагружает на 100% и не управляется ни стоп ни пауза только рестарт компа спасает. Поправте пожалста скрипт или подскажите (мои эксперементы заканчиваются рестартом ПК) PHP код:
|
Вложений: 1
Maza Faka,
Цитата:
Прикрепляю полный набор самопальных функции системных диалогов + Примеры применения (файл Examples.au3). За большенство из которых (как функции так и примеров) большое спасибо amel27 :) Только для AutoIt 3.2.10.0. Зеркало для тех кто неможет скачать с форума. |
kagorec,
Цитата:
Я выкрутился быстрым нажатием «Alt + Ctrl + Del» и «Pause» ;) Тут видимо это происходт из за постоянного цикла внутри _MouseMoveCircle - можно поставить в нём проверку на ввод пользователя, и небольшую паузу... Вот простой пример, для наглядности, я BlockInput закомментировал :) Код:
Global $Paused = False |
Подскажите как с помощью Autoit удалить раздел реестра и все ключи в нем?
HKEY_LOCAL_MACHINE\SOFTWARE\TEST\ или все ключи в разделе HKEY_LOCAL_MACHINE\SOFTWARE\TEST\*.REG_BINARY Буду рад помощи |
rimm,
Цитата:
Код:
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\TEST") Код:
For $i = 1 To 100 |
Библиотека автоматизации для браузера Opera!
24 (планируется ещё больше) полезных функции для решения задач связанных с браузером Opera. Примечание: Библиотека тестировалась под Opera начиная с версии 8.54 и до версии 9.5. [Страница закачки], [Зеркало] |
Ребят, а с помощью AutoIt'а можно реализовать блокировку клавиатуры и мыши при запуске скрипта - и последующей разблокировкой например нажатием каких либо сочетаний клавиш?
|
SAOPP,
Цитата:
|
Ну вот мне бы так и нужно, как "некая" утилитка ;) для чистки клавиатуры блокирует это дело, только без всяких оповещений и окон, просто блокировала, а по нажатию ctrl+alt+del разблокировала и закрывалась соответственно.
|
SAOPP,
Цитата:
Цитата:
Код:
#NoTrayIcon |
|
SAOPP,
Цитата:
Я имел в виду после нажатия ALT + CTRL + DEL (ведь в справке к команде BlockInput это говорится), если двинуть мышкой, скрипт завершит работу, а блокирование снимается по нажатию alt ctrl del. |
Подскажите, а как сделать часы, чтобы время шло ) спасибо.
|
HORRIBLE,
Цитата:
Типа такого: Код:
#include <GuiConstants.au3> |
Creat0R,
неа, не таймер, хотя за таймер спасибо, а такие же часики как и в винде, вправом нижнем углу. т.к если просто использовать команды @Hour &":"& @MIN &":"& @SeC то получается когда файлик запускается то время показывается когда файл был запущен, а вот как сдеть чтоб время обновлялось, не перезапуская файл. Еще подскажите почему ругается вот на это #include <GuiCombo.au3> говорит: Error opening the file Можно ли убрать верхнюю шапку когда создаешь окно GUICreate особенно 3-и стандартных кнопки ? |
HORRIBLE,
Цитата:
Код:
#include <GuiConstants.au3> Цитата:
Цитата:
Код:
GUICreate("Title", 300, 100, -1, -1, $WS_CAPTION+$WS_POPUP) |
Creat0R, возможно ли с помощью скрипта менять разрешение экрана и определять на данный момент?
|
TERMINAL,
Цитата:
Код:
#include <Array.au3> Код:
Func DisplayGetResolution_by_Macro() |
Как сделать поиск по маске, формат имени файла выглядит так (12_12_12.txt), в папке текстовых файлов много и у всех разный формат имени, но есть и файлы с форматом имени таким который был приведен, далее после поиска вывести массив с найденными файлами.
Я так думаю что нужно сперва воспользоваться _FileListToArray ($path ,"*.txt"), а после это этим StringRegExp (). Но я так попробовал, и ничего не вышло StringRegExp ("12_12_12.txt 12_12_12.txt", ,'(\d\d\w\d\d\w\d\d.\w\w\w\w*?)',4) - если так писать, все прекрасно работат, находит)) а как быть с именем файла? '(\d\d\w\d\d\w\d\d.\w\w\w\w*?)' - правильно написано или можно как нить подругому задать? 2 вопрос: _FileCreate("1.txt") $Array1 = _FileListToArray ($path ,"*.au3") $Array2 = _ArrayToclip($1) fileWrite("1.txt",ClipGet()) когда информация (имена присутствующих файлов в папке) записываается в файлик она разделяется @LF, а как сделать так чтоб информация разделялась, а Enter-ом, чтобы каждое название файла начиналось с новой строки. Спасибо. |
HORRIBLE,
Цитата:
Код:
#include <File.au3> Цитата:
Функция _ArrayToClip() помещет строчки в буфер обмена разделённые @CR (возврат каретки). |
Creat0R,
ох большущее спасибо. _RegExpFileListToArray откуда такие команды??? у меня в хелпе по авто иту нету такого, вы че сами их придумавыете? _RegExpFileListToArray($sPath, $sPattern, $sMask="*") в этой команде, что такое $sPattern оно же не где не задано. $sMask="*" как это понять, тип либой файл чтоли? |
HORRIBLE,
Цитата:
Цитата:
Цитата:
|
Creat0R, не могу заставить выключиться Send("{CAPSLOCK off}") !
|
TERMINAL,
Цитата:
Цитата:
|
Creat0R, не неработает, а Num Lock работает....
|
Creat0R, добрый день!Пишу Вам, т.к. прочитал ваши сообщения на форуме - очень пригодилось. До этого очень много делал программок для работы на VB.
Впервые попробовал Autoit, когда понадобилось перенести данные с листа Excel в Axata.Понравилось. Вопрос - можно ли объединить Autoit и VB. И второй очень срочный - есть ли скрипт позволяющий работать с Listview, как с листом ексель, т.е. вводить данные с клавиатуры во все колонки, редактировать и т.д. Заранее благодарен. |
Прошу кто может помочь с английским переводом описаний функций "Автоматизация MS Internet Explorer", к сожалению в русской справке от Валерия Иванова этот раздел не переведен, самому мне перевести не представляется возможным.
Спасибо всем кто помогал мне в прошлый раз. |
Vikma19
Хоть вопрос и не ко мне... Цитата:
Код:
_FileCopy("D:\wallpaper\*.*", "C:\wallpaper") Цитата:
Код:
#include <GuiConstants.au3> Цитата:
P.S. Переводить на русский все функции, вряд-ли кто будет, так, как на это нужно время, а по отдельным, спрашивай, чем сможем поможем. :) |
Maza Faka, Большое спасибо! Попробую разобраться.
|
Maza Faka, Редактирование Itemov -понятно, а как с SubItemami(ввел колонку с помощью _GUICtrlListView_AddSubItem
ввел данные) но исправить можно только Item - а как с SubItem и с вводом новых данных в пустую ячейку? Спасибо. |
Vikma19,
Цитата:
Цитата:
rimm, Цитата:
Попробуй обратиться к Валере. |
Creat0R,
Цитата:
|
Vikma19,
Цитата:
|
Creat0R,
Цитата:
|
Vikma19,
Цитата:
|
Цитата:
пробовал исправлять - но ошибки так и сыпятся. |
Vikma19,
Цитата:
Цитата:
|
Цитата:
|
Вложений: 1
Помогите решить проблему. Есть исходный файл "source1.txt" там лежит ТВ-Программа без форматирования данного рода.
Цитата:
PHP код:
PHP код:
Но Выскакивает ошибка... Что неправильный тут массив(Или регэкспы), хотя часть работы при этом программа делает. И еще: Пожалуйста помогите еще, как сделать так чтобы например есть строка: Цитата:
Цитата:
|
Timurko,
С массивом я вижу одну проблему - нужно к Ubound() добавить -1... Код:
For $i = 1 To UBound($strArray)-1 Цитата:
Код:
#include <Array.au3> |
Timurko
Привет! Так сказать быстрый бета вариант, так, как ухожу домой :) Если заинтересует красивый вариант стукни в ПМ. ;) Код:
#include <Array.au3> |
Афигеть вы просто гении... Весь день голову ломал!
Даже спасибо забыл сказать от радости! Спасибо огромное Мазафака и Креатор =) |
Creat0R,
Цитата:
1. Поставил версию 3.2.8.1 2. Я взял из зипа по адресу (Edit In Place Listview (multi-column)) два файла а) _EipListView ;b) ListViewEIP Какова последовательность действий в дальнейшем. Подскажите пожалуйста. |
Vikma19,
Цитата:
|
Creat0R,
Цитата:
C:\Documents and Settings\user\Desktop\EIPListView\ListViewEIP.au3 (3) : ==> Error opening the file.: #include <user\_EIPListView.au3> |
Vikma19,
Цитата:
|
Creat0R,
Цитата:
Error opening the file.: #include <_EIPListView.au3> |
Vikma19,
А если так: #include '_EIPListView.au3' Или ещё полный путь добавить к файлу. |
Creat0R,
Цитата:
Перенес один файл. А _EIPListView.au3 оставил в папке и указал полный путь к нему(С: documents.... ит.д.) Заработало! Извини за доставучесть. Спасибо! Завтра буду разбираться дальше. Почему не работало, когда оба файла были объединены - не понял. |
Цитата:
Func WM_NOTIFY должна определить какое окно послало вызов или нужна отдельная ф-я ? |
gregaz,
Цитата:
|
А вот еще вопросец: А если в телепередаче более двух обозначений времени а то и вовсе все 10 как на канале РБК. То тут как быть? Например
Цитата:
|
Timurko,
Цитата:
Код:
#include <Array.au3> |
Спасибо я еще немного подправил, так чтобы лишние пробелы уберались и время выглядило такого формата \d\d (передача)
PHP код:
|
хм... А вот если в файле с программой присутствуют названия каналов то они тут просто удаляются...
Я вроде сделал переменную RegExp которая определяет что в данной строке находится именно канал... PHP код:
Вот пример текста программы Цитата:
|
кто подскажет почему скрипт, после удаления ярлыка из автозагрузки, перед самым ребутом, создает его снова???
Код:
;Определение буквы виртуального CDROM-а (67 - ASCII-код символа "C", 90 - "Z") |
Время: 22:35. |
Время: 22:35.
© OSzone.net 2001-