|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36548 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние Текущая тема 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 |
Ветеран Сообщения: 825
|
Профиль | Отправить PM | Цитировать amel27,
Цитата amel27:
Имею разные сетевые адреса на всех 4-х картах. Ну для примера пусть две карты имеют адреса 192.168.0.10 и 162.16.10.24. WINS адресов в настройке карточек нет. Домены не используются пока! Как мне узнать какой комп по какой сети я вижу. Вообще нужно узнать какие станции имеют подключение к нескольким сегментам сразу. Что можешь порекомендовать почитать по данной тематике. |
|
Отправлено: 10:08, 25-10-2007 | #631 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Как можно перечитать содержимое папки в меню, но при этом поместив каталоги (подменю) в самый верх, а не как попало (по дате вроде бы сортируются)... а также требуется вернуть двумерный массив с контролями от создания пунктов меню (только пунктов, подменю не нужны), и с путями по порядку (пути только файлов, чтобы позже при нажатии на пункт файл можно было запустить)?
Вот рабочий пример для считывания установочной папки аутоита, но подменю не в начале (они присутствуют в той позиции, где были найдены в процессе поиска), а мне нужно именно в начале: #include <GuiConstants.au3> Opt("GuiOnEventMode", 1) $Gui = GuiCreate("Test") GUISetOnEvent(-3, "Quit") $Menu = GUICtrlCreateMenu("AutoIt") $AutoItPath = StringRegExpReplace(@AutoItExe, '\\[^\\]+$', '') Global $Elements = GetFolderToMenu($AutoItPath, $Menu) GUISetState() While 1 Sleep(100) WEnd Func GetFolderToMenu($sPath, $hMenu) Local $RetArray[1][4], $SubDirsArr, $hSubMenu, $FindNextFile, $CurrentPath, $iUbound $sPath = StringRegExpReplace($sPath, '\\+$', '') Local $FindFirstFile = FileFindFirstFile($sPath & '\*.*') If @error = 1 Then Return SetError(1, 0, -1) While 1 $FindNextFile = FileFindNextFile($FindFirstFile) If @error = 1 Then ExitLoop $CurrentPath = $sPath & "\" & $FindNextFile If StringInStr(FileGetAttrib($CurrentPath), 'D') And $FindNextFile <> "Include" And $FindNextFile <> "Examples" Then $hSubMenu = GUICtrlCreateMenu($FindNextFile, $hMenu) $SubDirsArr = GetFolderToMenu($CurrentPath, $hSubMenu) If IsArray($SubDirsArr) Then For $i = 1 To UBound($SubDirsArr)-1 If StringInStr(FileGetAttrib($SubDirsArr[$i][3]), 'D') Then GUICtrlCreateMenu($SubDirsArr[$i][2], $SubDirsArr[$i][0]) Else $iUbound = UBound($RetArray) ReDim $RetArray[$iUbound+1][4] $RetArray[$iUbound][1] = $SubDirsArr[$i][1] $RetArray[$iUbound][2] = $SubDirsArr[$i][2] $RetArray[$iUbound][3] = $SubDirsArr[$i][3] EndIf Next EndIf ElseIf Not StringInStr(FileGetAttrib($CurrentPath), 'D') Then $iUbound = UBound($RetArray) ReDim $RetArray[$iUbound+1][4] $RetArray[$iUbound][0] = $hMenu $RetArray[$iUbound][1] = GUICtrlCreateMenuItem($FindNextFile, $hMenu) $RetArray[$iUbound][2] = $FindNextFile $RetArray[$iUbound][3] = $CurrentPath GUICtrlSetOnEvent(-1, "MenuItemEvents") EndIf WEnd FileClose($FindFirstFile) $RetArray[0][0] = UBound($RetArray)-1 Return $RetArray EndFunc Func MenuItemEvents() For $i = 1 To $Elements[0][0] If $Elements[$i][1] = @GUI_CtrlId Then ShellExecute($Elements[$i][3]) ExitLoop EndIf Next EndFunc Func Quit() Exit EndFunc |
------- Отправлено: 11:34, 25-10-2007 | #632 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 03:22, 26-10-2007 | #633 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
интересно, а ограничения на размер меню какие?.. а то я натравил твой скрипт в корень диска C:\ и он мне выдал: ModernMenu.au3 (450) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: NikLok Цитата:
Цитата:
Цитата:
- по имени (удаленно) через WMI "снять" конфигурацию сетевых интерфейсов; - поднять WINS-сервер и брать с него занимаемые именем IP-адреса. Цитата:
|
||||
Отправлено: 08:03, 26-10-2007 | #634 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
P.S Библиотека переименована в Menu_With_Icons_Incl.au3 (её содержание также намного изменилось). |
|
------- Отправлено: 08:28, 26-10-2007 | #635 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Подскажите можно ли при заблокированной системе (win XP) симулировать клавиатурные нажатия?
При не заблокированной все нормально отрабатывается, а при заблокированной никак не хочет. Вы уж прости если ламерский вопрос, но я только вчера сел знакомиться с AutoIt. Вот сам код. WinWait("Генератор отчетов ") WinActive("Генератор отчетов") If @error=1 Then WinActivate("Генератор отчетов") ;Выбираем отчет Send("{DOWN}") Sleep(300) Send("{DOWN}") Sleep(300) Send("{DOWN}") Sleep(300) Send("{RIGHT}") Sleep(300) Send("{DOWN}") Sleep(300) Send("{DOWN}") Sleep(300) Send("{DOWN}") Sleep(300) Send("{DOWN}") Sleep(300) Send("{DOWN}") Sleep(300) ;Открыли отчет Send("{ENTER}") А эти строчки по идее проверяют активно ли окно и если нет делают его активным Ну это по моим соображениям из того что я подчерпнул в справке. WinActive("Генератор отчетов") If @error=1 Then WinActivate("Генератор отчетов") Сделано потому что при заблокированной системе WinWaitActive("Генератор отчетов") можно ждать до бесконечности. По другому отчет выбрать не получается т.к. выбор идет из дерева (class TTreeView), а как я понял AutoIt не может сним работать. Подскажите как можно это сделать? |
Отправлено: 10:34, 26-10-2007 | #636 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Davlet,
Цитата:
If @OSVersion <> "WIN_98" And @OSVersion <> "WIN_ME" Then BlockInput(1) EndIf Run("notepad") WinWaitActive("Untitled - Notepad") Send("{F5}") ;pastes time and date BlockInput(0) Цитата:
Вот пример (должна быть установлена библиотека отсюда, если есть проблемы с установкой, решение есть тут) - Открывает “Диспетчер устройств”, переходит к 16-тому пункту, раскрывает его, и возвращает текст раскрытого подпункта: #include <A3LTreeView.au3> ShellExecute("devmgmt.msc") WinWait("[CLASS:MMCMainFrame]") $hWnd = WinGetHandle("[CLASS:MMCMainFrame]") $h_Item = ControlGetHandle($hWnd, "", "SysTreeView321") ControlSend($hWnd, "", "SysTreeView321", "{Down 16} {Right 2}") ControlFocus($hWnd, "", "SysTreeView321") $GetText = _TreeView_GetText($h_Item, _TreeView_GetSelection($h_Item)) MsgBox(0, "", $GetText) ControlFocus($hWnd, "", "SysTreeView321") Sleep(1500) WinClose($hWnd) |
||
------- Отправлено: 11:02, 26-10-2007 | #637 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Creat0R
Получилось используя ControlSend("Генератор отчетов", "", "[CLASS:TTreeView; INSTANCE:5]", "{DOWN}") и т.д. Но сейчас посмотрю (обмозгую ) что ты предложил. If @OSVersion <> "WIN_98" And @OSVersion <> "WIN_ME" Then BlockInput(1) EndIf Run("notepad") WinWaitActive("Untitled - Notepad") Send("{F5}") ;pastes time and date BlockInput(0) буду делать через ControlSend. |
Отправлено: 11:18, 26-10-2007 | #638 |
Пользователь Сообщения: 141
|
Профиль | Отправить PM | Цитировать Доброго времени суток уважаемые ..очень нужна ваша помошь. нужно установить лицензионное ПО на более сотни машин соответствено на каждое свой ключ. есть предположение что с помошью автоита можно работать с файлом где построчно будут ключи ...напишите пожалуйста как взять из текстового или экселевского файла строку и передать ее в программу....?
|
Отправлено: 14:23, 26-10-2007 | #639 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать mikola1983
Скажем у каждого компьютер имеется имя, например WS1; WS2 и т.д., также имеется текстовый файл с ключами, где номер каждой строки, соответствует номеру машины, соответственно можно написать такой скрипт: $number = StringRegExpReplace(@ComputerName, "[a-zA-z]", "") ; Получаем номер машины $list = "c:\list.txt" ;Переменная с текстовым файлом, в котором находятся лицензии $string = FileReadLine($list, $number) ;Считываем строку соответствующую номеру компьютера и присваиваем переменной MsgBox(0, "", $string) ;Это просто просмотр строки ;Здесь твой код... |
Отправлено: 17:11, 26-10-2007 | #640 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|