|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь. Вот что нужно сделать последовательно: 1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1 2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1 3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, ..., text_n) 4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5 5) сохраняем все изменения и выводим отчёт о проделанной работе :-) Заранее благодарен. |
|
Отправлено: 05:05, 03-12-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Я как то сообщил на офф. форуме о серъёзном баге, наверняка многие из вас его заметили, его трудно не заметить...
Разработчики приписали моему репорту NOBUG (не бага), хотя я не согласен ![]() Баг заключается в следующем - 1) В момент перетаскивания окна ГУИ скрипта по его заголовку, 2) в момент изменения размера ГУИ окна, 3) при зажатии одной из кнопок закрытия/Сворачивания/Разворачивания окна, 4) а также и при открытии любых меню гуи (как главных так и контекстных), и в добавок, 5) при открытии меню из иконки в левом верхнем углу (значок программы) - Скрпит полностью останавливается на время указанных действии. Мне кажется что это не должно происходить, разработчики свернули вину на Windows, мол это баг самой ОС, хотя не смотря на это, некоторые программы (и кстати, написанные тоже на C++) умудряются "не останавливать" свою работу на момент перетаскивания их окна или любой другой указанной ранее “дейтяльности” со стороны юзера. Вобщем я решил эту задачку (надеюсь временно, желательно увидеть решение этой проблеме со стороны разработчиков) вот таким образом: #include <GuiDragable.au3> #include <Guiconstants.au3> Dim $LeftPos $GuihWnd = _GuiDragableCreate("Drag GUI Demo", 300, 150, -1, -1) GUISetBkColor(0xffffff) $ExampleLabel = GUICtrlCreateLabel("Drag Me (but not by controls) ;)", 0, 60, 250, 20) GUICtrlSetFont(-1, 12, 600, 0, "Tahoma") GUICtrlSetColor(-1, 0xDD0000) AdlibEnable("Example", 50) DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $GuihWnd, "long", 300, "long", 0x10) GUISetState() While 1 Sleep(10) WEnd Func Example() $LeftPos += 3 GUICtrlSetPos($ExampleLabel, $LeftPos, 60) If $LeftPos >= 300 Then $LeftPos = -250 EndFunc При перетаскивании окна (при зажатии мышки в любом места окна за исключением контролов, ведь мы же хотим иметь возможность нажимать на кнопки и т.п.), бегущая строка по прежнему "продолжает бежать" ![]() |
------- Отправлено: 06:42, 19-05-2007 | #411 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Метод позволяющий запускать код VBS не создавая временных файлов: $ProcessName = "AutoIt3.exe" $RetArr = _ProcessExistsVbs($ProcessName) If IsArray($RetArr) Then MsgBox(64, "", "Process <" & $RetArr[1] & "> exists." & @LF & @LF & _ "The returned PID is: " & $RetArr[2] & @LF & @LF & _ "Returned Executable Path is: " & @LF & $RetArr[3] & @LF & @LF & _ "Command Line of executed process is: " & @LF & $RetArr[4]) ;Функция возвращает массив содержащий имя процесса, его уникальный идентификатор (PID), путь запуска, и коммандную строку запуска. ;В случае если указанный процесс не существует, возвращается 0. Func _ProcessExistsVbs($ProcName) Local $Code = "" $Code &= 'Function ProcessExists(ProcessName)' & @LF $Code &= ' Set Processes = GetObject("winmgmts://localhost")' & @LF $Code &= ' Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")' & @LF $Code &= ' For Each Proc In myProcEnum' & @LF $Code &= ' If StrComp(Proc.Name, ProcessName, 1) = 0 Or StrComp(Proc.ProcessID, ProcessName, 1) = 0 Then' & @LF $Code &= ' Dim RetArr' & @LF $Code &= ' RetArr = Array(4, Proc.Name, Proc.ProcessID, Proc.ExecutablePath, Proc.CommandLine)' & @LF $Code &= ' ProcessExists = RetArr' & @LF $Code &= ' Exit Function' & @LF $Code &= ' End If' & @LF $Code &= ' Next' & @LF $Code &= ' ProcessExists = 0' & @LF $Code &= 'End Function' Local $VbsObj = ObjCreate("ScriptControl") If @error Then Return SetError(1, 0, -1) $VbsObj.Language = "vbscript" $VbsObj.AddCode($Code) Local $RetArr = $VbsObj.Run("ProcessExists", $ProcName) If $RetArr = 0 Then Return SetError(0, 0, 0) Return $RetArr EndFunc |
------- Отправлено: 21:00, 21-05-2007 | #412 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
![]() |
||
Отправлено: 12:44, 22-05-2007 | #413 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Creat0R
Отлично! Очень интересный способ! :UP: Даже не подозревал что существует такой объект... Я выяснил что "MSScriptControl.ScriptControl" предназначен также и для JavaScript'ов. VbScript'ы у меня запускаются а вот с JavaScript'ами почему-то ничего не выходит. Привожу два упрощённых примера для сравнения: vbscript: ;~ Доступ к контекстному меню папок: Dim $Code $Code = 'Set objShellApp = CreateObject ("Shell.Application")' & @LF & _ 'Set objFolderItem = objShellApp.NameSpace("C:\").Self' & @LF & _ 'Set objFIVs = objFolderItem.Verbs' & @LF & _ 'MsgBox objFIVs.Count,0,"Кол-во элементов:"' & @LF & _ 'For Each ThisCheck in objFIVs' & @LF & _ ' If ThisCheck.Name = "&Найти..." Then' & @LF & _ ' ThisCheck.DoIt' & @LF & _ ' End If' & @LF & _ 'MsgBox ThisCheck.Name' & @LF & _ 'Next' $VbsObj = ObjCreate("MSScriptControl.ScriptControl") $VbsObj.Language = "VbScript" $VbsObj.AddCode($Code) ;~ Диалог открытия файлов: Dim $Code $Code = 'var WshShell = WScript.CreateObject ("WScript.Shell");' & @LF & _ 'var objDialog = new ActiveXObject("UserAccounts.CommonDialog");' & @LF & _ 'objDialog.Filter = "All Files|*.*";' & @LF & _ 'objDialog.InitialDir = "C:\\";' & @LF & _ 'intResult = objDialog.ShowOpen();' & @LF & _ 'if (intResult) WshShell.PopUp(objDialog.FileName);' $VbsObj = ObjCreate("MSScriptControl.ScriptControl") $VbsObj.Language = "JScript" $VbsObj.AddCode($Code) ![]() |
Отправлено: 14:31, 22-05-2007 | #414 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Opt("GuiOnEventMode", 1) GUICreate("Test") GUISetOnEvent(-3, "Quit") GUICtrlCreateMenu("Test Menu") GUISetState() While 1 Sleep(10) ConsoleWrite("! test") WEnd Func Quit() Exit EndFunc Цитата:
Цитата:
![]() ![]() |
|||
------- Отправлено: 21:54, 22-05-2007 | #415 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Diamond
Цитата:
|
|
------- Отправлено: 22:07, 22-05-2007 | #416 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() Цитата:
![]() Цитата:
|
|||
Отправлено: 04:27, 23-05-2007 | #417 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать Цитата:
Если во время архивации WINRAR нажать на окно мышкой архивация остановится! Мне кажется тут дело в системе, а не в Autoit. |
|
Отправлено: 04:57, 23-05-2007 | #418 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
![]() VelDmi Цитата:
![]() Цитата:
![]() Цитата:
Цитата:
Т.е получается, что это ответственность программиста предусматривать подобные вещи, а не системы... |
|||||
------- Отправлено: 05:52, 23-05-2007 | #419 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Хотел написать автоустановку разных антивирусов-написал, но проблема вот такая- каждый антивирус заканчивает свою установку по разному и у меня проблема с теми которые начинают сразу после установки сканить диски. Паузу ставить безсмыслено, а вот с процессами поработать можно было было. Какой скрипт лучше написать, если при сканировании антивир процесс грузит примерно до 40 процентов, а когда закончен равен нулю =0 (я так думаю) !? Или может кто-то с этим сталкивался? Свои мысли может изложить...
|
Отправлено: 16:24, 23-05-2007 | #420 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|