|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36569 |
Внимание! Тема переведена в архивное состояние Текущая тема 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.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать DenchikK,
Цитата:
HotKeySet("{F2}", "StopLoop") WinActivate ("µTorrent","") WinWaitActive("µTorrent", "", 5) Global $i = 0, $IsLoop = True While $i <= 10 And $IsLoop Sleep (1000) Send ("{APPSKEY}") Sleep (1000) Send ("{UP}{UP}") Sleep (1000) Send ("{Enter}") $i += 1 Sleep (1000) WEnd Func StopLoop() $IsLoop = False EndFunc amel27 Цитата:
![]() Lodoss, Цитата:
Возможно есть более удобное решение чем использование сторонних программ (тем более Notepad), я на оф. форуме видел пару решении по конвертированию файлов, вопрос в том, с какого и в какой формат. Кстати, я как то давно написал функцию для парсирования возвращённой строки от FileOpenDialog()/FileSaveDialog()... #include <Array.au3> $Selected = FileOpenDialog("Title", "C:\", "All (*.*)", 4) $SelectedArr = _ParseSelected($Selected) _ArrayDisplay($SelectedArr) Func _ParseSelected($String) Local $RetArr[1], $Ubound If StringInStr($String, "|") Then Local $SplitArr = StringSplit($String, "|") Local $InitPath = StringRegExpReplace($SplitArr[1], '([^\\])\\*$', '\1') For $i = 2 To UBound($SplitArr)-1 $Ubound = UBound($RetArr) ReDim $RetArr[$Ubound + 1] $RetArr[$Ubound] = $InitPath & "\" & $SplitArr[$i] Next $RetArr[0] = $Ubound Else Local $RetArr[2] = [1, $String] EndIf Return $RetArr EndFunc |
|||
------- Отправлено: 14:43, 10-10-2007 | #581 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Можно ли с помощью скрипта открыть каретку CD-ROMa или DVD-ROMa?
|
------- Отправлено: 18:30, 10-10-2007 | #582 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL,
Цитата:
Вот пример (by amel27): ; Читаем параметр командной строки и если обнаружен вызываем функцию, ; переменная окружения ERRORLEVEL устанавливается равной количеству ошибок ; (привод может быть заблокирован Nero или другой программой) $LastParm = $CmdLine[$CmdLine[0]] If $LastParm Then _CDEject ($LastParm) Exit (@error) EndIf ; Функция выброса трея CD/DVD привода ; в качестве параметра принимается буква диска или порядковый номер (по алфавиту), ; для обработки всех найденных приводов достаточно передать -1, ; по умолчанию применяется к первому найденному приводу. ; ; Возвращает количество успешно обработанных приводов, ; значение @error устанавливается равным количеству неудач, ; суммарное значение равно количеству обнаруженных приводов. Func _CDEject ($drive = 1) Local $i = 1, $err = 0, $aDrives = DriveGetDrive ("CDROM") If IsArray ($aDrives) Then For $i = 1 To $aDrives [0] If ($drive = -1) OR ($drive = $i) OR ($drive & ':' = $aDrives [$i]) Then If CDTray ($aDrives [$i], "open") =0 Then $err = $err +1 EndIf Next EndIf SetError ($err) Return $i - $err -1 EndFunc |
|
------- Отправлено: 00:37, 11-10-2007 | #583 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() |
|
Отправлено: 07:24, 11-10-2007 | #584 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Интересно, возможно ли получить процент закачиваемых байтов (общий процент скаченного), не имея заранее полного размера закачиваемого файла?
Просто InetGetSize() иногда возвращает 0, хотя с той же ссылкой InetGet() справляется (скачивает её). А также хотелось узнать, как правильно получать примерно-оставшиеся время до окончания закачки? Я ранее поднимал вопрос о закачке файлов, но всё как то не определено, не надёжно ![]() |
------- Отправлено: 07:33, 11-10-2007 | #585 |
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Цитата:
![]() Конвертировать нужно файлы "*.prt" в "*.dwg". И первый и второй - особенные графические форматы. Файлы с расширением "prt" - это объёмные модели (программа Unigraphix NX), что то наподобие "3Dmaх" но ориентирована на конструкторские решения. Вот из этой программы и нужно формировать файлы "dwg" (экспортировать) для дальнейшего помещения на сервер... Пакетного конвертера из prt в dwg я ненашёл. Поэтому выходом счёл автоматизировать работу с самой программой Unigraphix NX через её меню и горячие клавиши выполняя сначала загрузку файла prt, его обработку и дальнейший экспорт в dwg .... Цитата:
вот сырой GUI который хотелось бы видеть в конечном варианте. #include <GUIConstants.au3> AutoItSetOption ( "TrayIconDebug", 1 ) DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0) ; turn off XP themes $AForm1_1 = GUICreate("prt >>> dwg", 485, 294, -1, -1) GUISetBkColor(0xA6CAF0) $1 = "D:\work" ; входящая папка $2 = "D:\work\plotter\dwg" ; папка конечных файлов $AInput1 = GUICtrlCreateInput($1, 16, 24, 121, 21) if DirCreate($1)= False Then GUICtrlSetData($AInput1, "Заполните поле !") GUICtrlSetColor($AInput1, 0xff0000) Else GUICtrlSetColor($AInput1, 0x0000FF) EndIf $AInput2 = GUICtrlCreateInput($2, 16, 224, 121, 21) if DirCreate($2)= False Then GUICtrlSetData($AInput2, "Заполните поле !") GUICtrlSetColor($AInput2, 0xff0000) Else GUICtrlSetColor($AInput2, 0x0000FF) EndIf $AButton1 = GUICtrlCreateButton("Выбор", 144, 26, 40, 17, 0) $AButton2 = GUICtrlCreateButton("Выбор", 144, 226, 40, 17, 0) $ALabel1 = GUICtrlCreateLabel("Входящая папка", 8, 7, 88, 17) $ALabel2 = GUICtrlCreateLabel("Папка выхода", 8, 207, 76, 17) $AProgress1 = GUICtrlCreateProgress(112, 256, 137, 9) GUICtrlSetColor(-1, 0x007DFA) $AProgress2 = GUICtrlCreateProgress(88, 272, 161, 9) $Group1 = GUICtrlCreateGroup("Выбрать", 16, 48, 169, 65) $Radio1 = GUICtrlCreateRadio("Папку", 24, 64, 57, 17) $Radio2 = GUICtrlCreateRadio("Группу файлов", 80, 64, 97, 17) $Checkbox1 = GUICtrlCreateCheckbox("Учитывать подкаталоги", 24, 88, 153, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2 = GUICtrlCreateGroup("Фильтр файлов", 16, 120, 169, 81) $Input1 = GUICtrlCreateInput("_drw", 82, 144, 97, 21) $Input2 = GUICtrlCreateInput("*", 82, 168, 97, 21) $Label1 = GUICtrlCreateLabel("Включить", 22, 144, 53, 17) $Label2 = GUICtrlCreateLabel("Исключить", 22, 168, 60, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $Button1 = GUICtrlCreateButton("Удалить", 408, 26, 65, 17, 0) $Button2 = GUICtrlCreateButton("Очистить", 336, 26, 65, 17, 0) $Button3 = GUICtrlCreateButton("Сохранить", 192, 26, 65, 17, 0) $Label3 = GUICtrlCreateLabel("текущий прогресс", 8, 252, 95, 16) $Label4 = GUICtrlCreateLabel("общий", 8, 268, 37, 17) $Button4 = GUICtrlCreateButton("Загрузить", 264, 26, 65, 17, 0) $Group3 = GUICtrlCreateGroup("Время", 328, 248, 57, 33) $Label6 = GUICtrlCreateLabel("00:12:47", 336, 261, 46, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group4 = GUICtrlCreateGroup("Осталось", 256, 248, 65, 33) $Label5 = GUICtrlCreateLabel("3 файла", 264, 262, 52, 17) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlCreateGroup("", -99, -99, 1, 1) $Group5 = GUICtrlCreateGroup("Список обрабатываемых файлов", 192, 48, 281, 193) GUICtrlCreateGroup("", -99, -99, 1, 1) $Ed = GUICtrlCreateEdit("", 200, 65, 265, 165) GUICtrlSetData(-1, "Здесь должен формироваться список с" &@CRLF & "чекбоксами входящих файлов, то что будет" &@CRLF & "отмечено - обрабатываем") $AButton5 = GUICtrlCreateIcon("C:\WINDOWS\system32\shell32.dll", -138, 392, 248, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP)) GUICtrlSetTip(-1, "Старт") $AButton6 = GUICtrlCreateIcon("C:\WINDOWS\system32\shell32.dll", -28, 432, 248, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP)) GUICtrlSetTip(-1, "Стоп или Выход") GUISetState(@SW_SHOW) While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $Msg = $AButton6 ; выход MsgBox(64, "", "Справка") ExitLoop Case $Msg = $AButton1 ; выход if $radio1 And BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED = true Then ; кнопка выбора папок GuiCtrlSetData($AInput1, "") $data_in = FileSelectFolder("Заполните поле ! с файлами Prt", "d:\") if $data_in = True Then GuiCtrlSetData($AInput1, $data_in) GUICtrlSetColor($AInput1, 0x0000FF) Else GuiCtrlSetData($AInput1, "Заполните поле !") GUICtrlSetColor($AInput1, 0xff0000) EndIf Else ; кнопка выбора файлов GUICtrlSetState($radio2, $GUI_CHECKED) GuiCtrlSetData($AInput1, "") $files = FileOpenDialog("Пакетное конвертирование файлов Prt в Dwg [beta версия]", "d:\work\", "файлы NX1, NX2, NX3, NX4 (*.prt)", 1 + 4 ) if $files = True Then GuiCtrlSetData($AInput1, $files) GUICtrlSetColor($AInput1, 0x0000FF) Else GuiCtrlSetData($AInput1, "Заполните поле !") GUICtrlSetColor($AInput1, 0xff0000) EndIf EndIf ; изменить путь для выходящих файлов prt Case $Msg = $AButton2 $data_out = FileSelectFolder("Заполните поле ! конечных файлов Dwg", "") if Not DirCreate ($data_out & "dir546") Then MsgBox(16, "Ошибка", "Нельзя создать файлы в директории "& $data_out,10) GuiCtrlSetData($AInput2, "Заполните поле !") GUICtrlSetColor($AInput2, 0xff0000) Else GuiCtrlSetData($AInput2, $data_out) GUICtrlSetColor($AInput2, 0x0000FF) DirRemove($data_out & "dir546", 1) EndIf Case $Msg = $AButton5 ; старт WinMove("prt >>>", "", 800, 600) TrayTip("Программа prt to dwg", "проверка путей для входящих и исходящих папок", 5, 1) if GUICtrlRead($AInput1, 0xff0000) <> True Then MsgBox(16, "", "Неправильные пути в папках") GuiCtrlSetData($AInput1, "Заполните поле !") GUICtrlSetColor($AInput1, 0xff0000) Else MsgBox(64, "", "Начало обработки программы .....",5) EndIf EndSelect WEnd Цитата:
![]() ![]() |
|||
Отправлено: 11:22, 11-10-2007 | #586 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Lodoss,
Цитата:
Цитата:
![]() Т.е возвращается к примеру такая строка: C:\My_Files|File1.txt|File2.txt|File3.txt Вот через ту функцию, подобная строка парсируется в массив, где каждый элемент содержит полный путь к каждому файлу (даже если выбран один файл) - таким образом очень просто обрабатывать массив и делать то что нам нужно с путями к файлам). |
||
------- Отправлено: 12:23, 11-10-2007 | #587 |
Пользователь Сообщения: 141
|
Профиль | Отправить PM | Цитировать есть ли возможность с помощью автоита сделать небольшую прогу для переименования удаленных ПК. конкретно интересует кусок кода либо команда переименования. подскажите пожалуйста.
|
Отправлено: 12:42, 11-10-2007 | #588 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать Цитата mikola1983:
|
|
Отправлено: 13:20, 11-10-2007 | #589 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать mikola1983
Цитата:
ALL Думаю не все знают, что у ключей реестра (не путать с параметрами) как и у файлов есть своя метка времени последней модификации, стандартные утилиты ее не показывают но иногда возникает необходимость узнать когда создали/изменили тот или иной ключ... для этого случая сваял UDF, дата возвращается в формате: YYYY/MM/DD HH:MM:SS: Global Const $HKCR = 0x80000000 Global Const $HKCU = 0x80000001 Global Const $HKLM = 0x80000002 Global Const $HKU = 0x80000003 Global Const $HKCC = 0x80000005 Func RegGetTimeStamp($iRegHive, $sRegKey) Local $sRes='', $aRet, $hReg = DllStructCreate("int") Local $FILETIME = DllStructCreate("dword;dword") Local $SYSTEMTIME1 = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort") Local $SYSTEMTIME2 = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort") Local $hAdvAPI=DllOpen('advapi32.dll'), $hKernel=DllOpen('kernel32.dll') If $hAdvAPI=-1 Or $hKernel=-1 Then Return SetError(1, $aRet[0], 'DLL Open Error!') $aRet = DllCall("advapi32.dll", "int", "RegOpenKeyEx", _ "int", $iRegHive, "str", $sRegKey, _ "int", 0, "int", 0x20019, _ "ptr", DllStructGetPtr($hReg)) If $aRet[0] Then Return SetError(2, $aRet[0], 'Registry Key Open Error!') $aRet = DllCall("advapi32.dll", "int", "RegQueryInfoKey", _ "int", DllStructGetData($hReg,1), _ "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, _ "ptr", DllStructGetPtr($FILETIME)) If $aRet[0] Then Return SetError(3, $aRet[0], 'Registry Key Query Error!') $aRet = DllCall("advapi32.dll", "int", "RegCloseKey", _ "int", DllStructGetData($hReg,1)) If $aRet[0] Then Return SetError(4, $aRet[0], 'Registry Key Close Error!') $aRet = DllCall("kernel32.dll", "int", "FileTimeToSystemTime", _ "ptr", DllStructGetPtr($FILETIME), _ "ptr", DllStructGetPtr($SYSTEMTIME1)) If $aRet[0]=0 Then Return SetError(5, 0, 'Time Convert Error!') $aRet = DllCall("kernel32.dll", "int", "SystemTimeToTzSpecificLocalTime", _ "ptr", 0, _ "ptr", DllStructGetPtr($SYSTEMTIME1), _ "ptr", DllStructGetPtr($SYSTEMTIME2)) If $aRet[0]=0 Then Return SetError(5, 0, 'Time Convert Error!') $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,1)) &'/' $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,2)) &'/' $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,4)) &' ' $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,5)) &':' $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,6)) &':' $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,7)) Return $sRes EndFunc |
|
Отправлено: 06:26, 12-10-2007 | #590 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|