Войти

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

alex888500
16-05-2008, 05:05
попробуте запустить "AutoIt Window Info" »
Пробовал запускать "AutoIt Window Info", показала она мне ID кнопки Start, только еще выяснилось что Start находится (принадлежит) на другой кнопке, типа кнопка в кнопке :o , тоже самое и с другими элементами. Поэтому координаты единственное что прокатило.

*OM*
16-05-2008, 07:18
Снова ОМ и мир всем.

Код:
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:

Creat0R
16-05-2008, 11:12
*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 секунды).

Creat0R
16-05-2008, 23:19
Наконец обновился 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, пришлось бы опять всё перестраивать.

NikLok
17-05-2008, 00:22
Если кто не знает вышла версия 3.2.12 - почти полгода мурыжили.

Creat0R
17-05-2008, 00:25
NikLok,
Кхм кхм... смотрим выше и... ;)

Maza Faka
17-05-2008, 07:08
Добавили Hwnd параметр для функции: MsgBox(), FileSelectFolder(), FileOpenDialog(), FileSaveDialog(). »
Наконец-то :happy:

*OM*
19-05-2008, 05:16
Creat0R Не удалил.. Результат тот же остается пустой каталог. :help:

Creat0R
19-05-2008, 05:51
*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

?
:)

amel27
19-05-2008, 08:20
*OM*Результат тот же остается пустой каталог »Случаем не через SciTE проверяете?... я к тому, что перед проверкой нужно закрыть ВСЕ проги, открывшие каталог/файлы, а сам скрипт запускать не через файл-менеджеры (которые удерживают открытый каталог), а по полному имени (включая путь).

Creat0R
19-05-2008, 08:30
amel27,
перед проверкой нужно закрыть ВСЕ проги, открывшие каталог/файлы, а сам скрипт запускать не через файл-менеджеры
Там проблема в том, что небыла указана рабочая папка, поэтому процесс командной строки сам и держал текущую папку, не давая её удалить. Мой последний пример работает даже если из самой папки запускать ;).

*OM*
20-05-2008, 07:11
Creat0R этот вариант выполнил задачу как и хотелось. Выражаю вам своё Домо аригато годзаимащта ! :ninja:

Попутно возник - Вопрос: Как сделать проверку пуст каталог или нет ?

Наличие файла я проверяю через FileExists() , а для проверки наличия каталогов не нашел подобного.

P.S. А как это вы код подсвечиваете в своих ответах ? Не иначе мощное " колдунство " :wizard:

Creat0R
20-05-2008, 07:41
*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 если папка пуста.

amel27
20-05-2008, 10:21
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]")

prodist
20-05-2008, 21:08
Есть autorun-файл (install.exe). После нажатия Установить открывается setup-файл (setup.exe).
Надо, чтобы после завершения работы setup-файла открылся другой файл. Но только при установке, а если запускать удаление через setup, то ничего открываться не должно. И так же, если при открытии ламер)) "нажал на закрытие")

Smarton
21-05-2008, 02:01
Здрасте! У меня два вопроса: Как в Autoit осуществить попиксельное сравнение изображений (в браузере), и как отслеживать события flash приложения (тоже в браузере). Буду оч благодарен если поможите!




© OSzone.net 2001-2012