Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
alex888500
16-05-2008, 05:05
попробуте запустить "AutoIt Window Info" »
Пробовал запускать "AutoIt Window Info", показала она мне ID кнопки Start, только еще выяснилось что Start находится (принадлежит) на другой кнопке, типа кнопка в кнопке :o , тоже самое и с другими элементами. Поэтому координаты единственное что прокатило.
Снова ОМ и мир всем.
Код:
Opt("OnExitFunc", "_SelfDestroy")
FileCopy(@ScriptFullPath, @ScriptFullPath & ".bak", 1)
MsgBox(16, "Thats it!", "I am gona kill my self now... goodby :`(", 4)
Func _SelfDestroy()
If Not @Compiled Then Return FileDelete(@ScriptFullPath)
Run(@ComSpec & ' /c ping -n 2 localhost > nul & del /q /f "' & FileGetShortName(@ScriptFullPath) & '"', '', @SW_HIDE)
EndFunc »
Используя пример делал так:
Opt("OnExitFunc", "_Uninstall")
FileCopy(@ScriptFullPath, @ScriptFullPath & ".bak", 1)
Func _Uninstall()
If Not @Compiled Then Return FileDelete(@ScriptFullPath)
Run(@ComSpec&' /c ping -n 3 localhost > nul & rd /s /q "'&@ScriptDir&'"','', @SW_HIDE)
EndFunc
Exit
Возник вопрос! : Почему остается папка (хотя и пустая) ?
Если делаю сам в консоли, при наборе команды с указанием пути в кавычках, удаляется папка и содержимое. :ninja2:
*OM*, Почему остается папка »
Нужно указать в таком случае полный путь к родительской папке а не к скрипту...
Opt("OnExitFunc", "_SelfDestroy")
;FileCopy(@ScriptFullPath, @ScriptFullPath & ".bak", 1)
MsgBox(16, "Thats it!", "I am gona kill my self now... goodby :`(", 4)
Func _SelfDestroy()
;If Not @Compiled Then Return FileDelete(@ScriptFullPath)
Run(@ComSpec & ' /c ping -n 2 localhost > nul & rd /q /s "' & FileGetShortName(@ScriptDir) & '"', '', @SW_HIDE)
EndFunc
!!! Очень осторожно с этим скриптом, он удалит всё содержимое текущей папки после запуска (через 2 секунды).
Наконец обновился AutoIt 3.2.12.0 (http://www.autoitscript.com/forum/index.php?showtopic=71366)!
Список изменении тут (http://www.autoitscript.com/autoit3/docs/history.htm), если сильно попросите переведу на русский :)
Из приятного и долгожданного:
* Убрана опция «RunErrorsFatal», теперь естественно она по умолчанию задействована.
* К Inet-функциям теперь добавляется User Agent, многие сайты блокируют доступ при пустой строке юзер агента.
* Максимальное число создаваемых GUI-окон выросло до 65532.
* Добавлен GUISetAccelerators() (http://www.autoitscript.com/autoit3/docs/functions/GUISetAccelerators.htm), я о нём кажется уже писал ранее.
* Добавили REGEXPCLASS (http://www.autoitscript.com/autoit3/docs/intro/windowsadvanced.htm) в расширенное распознавание заголовков окон (по моей просьбе (http://www.autoitscript.com/forum/index.php?showtopic=51217&hl=CLASS) :tongue: ).
* FileReadLine( ,-1) (http://www.autoitscript.com/autoit3/docs/functions/FileReadLine.htm) теперь читает последнюю строку в файле.
* Добавили GUICtrlSetDefColor() (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlSetDefColor.htm) и GUICtrlSetDefBkColor() (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlSetDefBkColor.htm), ох сколько я этого ждал, тоже по моей просьбе (http://svn.autoitscript.com/trac/ticket/182).
* Добавили Hwnd параметр для функции: MsgBox() (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm), FileSelectFolder() (http://www.autoitscript.com/autoit3/docs/functions/FileSelectFolder.htm), FileOpenDialog() (http://www.autoitscript.com/autoit3/docs/functions/FileOpenDialog.htm), FileSaveDialog() (http://www.autoitscript.com/autoit3/docs/functions/FileSaveDialog.htm). А сколько этого я ждал и просил....
P.S
Я так приблезительно прикинул, получается новая версия выходит в среднем примерно раз в пол года! :up
P.P.S
Я рад что не обновился полностью до 3.2.10.0, пришлось бы опять всё перестраивать.
Если кто не знает вышла версия 3.2.12 - почти полгода мурыжили.
NikLok,
Кхм кхм... смотрим выше и... ;)
Maza Faka
17-05-2008, 07:08
Добавили Hwnd параметр для функции: MsgBox(), FileSelectFolder(), FileOpenDialog(), FileSaveDialog(). »
Наконец-то :happy:
Creat0R Не удалил.. Результат тот же остается пустой каталог. :help:
*OM*,
остается пустой каталог »
А если так:
Opt("OnExitFunc", "_SelfDestroy")
MsgBox(16, "Thats it!", "I am gona kill my self now... goodby :`(", 4)
Func _SelfDestroy()
Run(@ComSpec & ' /c ping -n 2 localhost > nul & rd /q /s "' & @ScriptDir & '"', @ScriptDir & '\..', @SW_HIDE)
EndFunc
?
:)
*OM*Результат тот же остается пустой каталог »Случаем не через SciTE проверяете?... я к тому, что перед проверкой нужно закрыть ВСЕ проги, открывшие каталог/файлы, а сам скрипт запускать не через файл-менеджеры (которые удерживают открытый каталог), а по полному имени (включая путь).
amel27,
перед проверкой нужно закрыть ВСЕ проги, открывшие каталог/файлы, а сам скрипт запускать не через файл-менеджеры
Там проблема в том, что небыла указана рабочая папка, поэтому процесс командной строки сам и держал текущую папку, не давая её удалить. Мой последний пример работает даже если из самой папки запускать ;).
Creat0R этот вариант выполнил задачу как и хотелось. Выражаю вам своё Домо аригато годзаимащта ! :ninja:
Попутно возник - Вопрос: Как сделать проверку пуст каталог или нет ?
Наличие файла я проверяю через FileExists() , а для проверки наличия каталогов не нашел подобного.
P.S. А как это вы код подсвечиваете в своих ответах ? Не иначе мощное " колдунство " :wizard:
*OM*, Как сделать проверку пуст каталог или нет ? »
;Переменной $IsEmpty присваивается значение возвращаемое ф-ей _DirIsEmpty()
$IsEmpty = _DirIsEmpty("c:\Temp")
;Отображение содержимого переменной $IsEmpty и уровень ошибочности
MsgBox(64, "Results", "$IsEmpty = " & $IsEmpty & @LF & "@error = " & @error)
;Функция проверяет если каталог по заданному пути не содержит файлы/папки..
;Если папка не существует (по пути из переменной $sPath), то @error = 1 и возвращается 0
;Если папка существует, и она *не* пуста, то возвращается 0
;Если папка существует, и она *пуста*, то возвращается 1
Func _DirIsEmpty($sPath)
;Если атрибут папки не содержит D (от слова Dir), то устанавливаем уровень ошибочности и возвращаем 0
If Not StringInStr(FileGetAttrib($sPath), "D") Then Return SetError(1, 0, 0)
;Инициализация поиска *любого* файла в указанном пути
Local $hSearch = FileFindFirstFile($sPath & "\*")
;"Запоминаем" уровень ошибочности
Local $iRet = @error
;Закрытие хендла (управляющего) после инициализации поиска (обязательно)
FileClose($hSearch)
;Возвращаем уровень ошибочности ($iRet),
;FileFindFirstFile() возвращает @error = 1 если папка пуста, это и есть индикация того, что она пуста :)
Return $iRet
EndFunc
как это вы код подсвечиваете в своих ответах ? »
Есть утилита Au3ToPost (http://creator-lab.ucoz.ru/load/4-1-0-18).
DENoszone
20-05-2008, 08:57
мне не кто не поможет=(
Maza Faka
20-05-2008, 09:42
*OM*
Аналогично с помощью WinAPI:
$IsEmpty = _DirIsEmpty("c:\Test")
MsgBox(0, "Folder empty", $IsEmpty & @LF & _
"Error = " & @error)
Func _DirIsEmpty($sPath)
If Not FileExists($sPath) Then Return SetError(1, 0, 0)
If Not StringInStr(FileGetAttrib($sPath), "D") Then Return SetError(2, 0, 0)
$aRet = DllCall("shlwapi.dll", "int", "PathIsDirectoryEmpty", "str", $sPath)
If $aRet[0] = True Then
Return SetError(0, 0, 1)
Else
Return SetError(3, 0, 0)
EndIf
EndFunc ;==>_DirIsEmpty
Возвращает 1 если папка пуста.
DENoszone
думаю нет - прога слишком смахивает на генератор спама... подсказка: реализация будет через использование ф-ций StringRegExp* и _IE*
TERMINAL
20-05-2008, 13:37
Вопрс такой интересный....Возможно ли с помощью скрипта запмсать диск (файл для записи находится на С:\test.txt)?
SvetlanaK
20-05-2008, 17:46
Здравствуйте! понимаю, что глупо вытаскивать данные из чужой программиой посылом сендов и принудительными кликами мышкой, но выхода другого нет... данные потом успешно обрабатываются с пом ExcelCOM_UDF.au3).
Решила вот воспользоваться ControlClick,ControlFocus и ControlSend. При помощи автоит.инфо можно вытянуть всю информацию об окнах. Вроде это даже как более правильно и работает в разы быстрее! (это нужно, потому что в формах программы могут добавляться новые кнопки и перемещаться те,которые надо кликать). Но вот что заметила - работают эти контролы через раз! то запускаются, то нет, скрипт стоит, ожидаючи посыла в текстовое окно нужного текста, нажатия кнопки...и непонятно - почему он стоит? Прога та написана на делфи, окна определяются, и все его составляющие тоже. В чем же дело? Может какие то опции надо прописать? В хелпе ничего не нашла. Кто сталкивался, помогите пожалуйста! Новую версию юзаю - тот же глюк(
Вот все что использутеся....
введение логина
ControlFocus("Подключение","","[CLASS:TLogInAppForm]")
ControlSend("Подключение","","[CLASS:TLogInAppForm; INSTANCE:1]","Иванов")
ввод дат в окошко с датами
ControlFocus("Фильтр","","[CLASS:TDBDateTimeEditEh;INSTANCE:6]")
ControlSend("Фильтр","","[CLASS:TDBDateTimeEditEh;INSTANCE:6]",$day1 & $mes1 & $god1)
клик мышкой по кнопке
ControlFocus("Фильтр","","[CLASS:TBitBtn; INSTANCE:4]")
ControlClick("Фильтр","Очистить фильтр","[CLASS:TButton;INSTANCE:1]")
Есть autorun-файл (install.exe). После нажатия Установить открывается setup-файл (setup.exe).
Надо, чтобы после завершения работы setup-файла открылся другой файл. Но только при установке, а если запускать удаление через setup, то ничего открываться не должно. И так же, если при открытии ламер)) "нажал на закрытие")
Здрасте! У меня два вопроса: Как в Autoit осуществить попиксельное сравнение изображений (в браузере), и как отслеживать события flash приложения (тоже в браузере). Буду оч благодарен если поможите!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.