Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Сообщения: 36491
Благодарности: 6675


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Цитата semiono:
Только как это грамотно сделать, чтоб Then переходил в основной код »
Смотри в справке Func()

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:36, 29-10-2008 | #1031



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 32
Благодарности: 4

Профиль | Отправить PM | Цитировать


amel27, Creat0R ну в общем-то эти варианты работают... Спасибо за помощь а так как частенько приходится эти файлы на дискетах проверять, наваял себе небольшую функцию...
Код: Выделить весь код
;_Fileona ('param1', 'param2', 'param3')
;в функцию отравляется название файла... проверяется наличие дискеты и наличие на ней файла
;param1 = имя файла (если указывается путь, то без первого слэша) 
;пример: 'test.txt' или, во втором случае, 'mydir\test.txt'
;param2 = Титл окна выдаваемого в случае отстутствия дискеты или файла
;param3 = текст окна выдаваемого в случае отстутствия дискеты или файла
Func _Fileona ($onafile, $onatitle, $onatext)
	While DriveStatus ('A:\') <> 'Ready' or Not FileExists ( 'A:\'&$onafile)
		if MsgBox ( 36, $onatitle, $onatext&@CRLF&'Вы хотите продолжить?') = 7 Then 
			ExitLoop
		EndIf
	WEnd
$onafile = 0
$onatitle = 0
$onatext = 0
EndFunc
Вдруг кому пригодится.
-------
И еще вопрос к amel27 и Creat0R объясните пожалуйста чем "ContinueLoop" отличается от его отстутствия?

-------
ira furor brevis est


Отправлено: 04:05, 30-10-2008 | #1032


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
Если первое услове истина »
компилятор сам решает какое "первое", какое "второе" - он в курсе, что "от перестановки слагаемых результат не меняется" ... к примеру, из соображений оптимизации он может поставить на выполнение сначала расчет самого короткого (с его точки зрения) условия, а потом длинного... или даже одновременно

Цитата:
Тем то AutoIt мне и нравится »
угу, только надо держать "в уме" это различие

Цитата:
Не обязательно »
твой код не выдаст предупреждения на дискету без файла


semiono
Цитата:
Или есть лучше вариант?»
имхо надежней через реестр - например, проверить параметр "Start" ключа "HKLM\System\CurrentControlSet\Services\SPTD", если =1, то драйвер установлен, смотри в справке RegRead()


Grammaton Cleric
Цитата:
чем "ContinueLoop" отличается от его отстутствия? »
ContinueLoop - силовое завершение текщего цикла - т.е. пропускается весь код до конца цикла и управление передается сразу на Next/WEnd/Until, при вложенных циклах можно указать, какой именно цикл мы хотим завершить, по умолчанию =1 (текущий)
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:32, 30-10-2008 | #1033


Новый участник


Сообщения: 32
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата amel27:
ContinueLoop - силовое завершение текщего цикла... »
Теперь дошло... спасибо за объяснение..
Теперь еще одна непонятка...
Цитата amel27:
Код: Выделить весь код
$Next = (DriveStatus("A:")=="READY")
 If $Next Then $Next = FileExists('A:\gk.db3')
 If $Next Then ExitLoop
»
Вторая проверка, по моим соображениям, всегда будет успешно выполняться... То есть при любом результате - выход из цикла... почему-то мне кажется, что здесь If $Next Then $Next = FileExists('A:\gk.db3') должно иметь вид If $Next Then $Next = (FileExists('A:\gk.db3')==1) или я не прав?

-------
ira furor brevis est


Отправлено: 05:11, 30-10-2008 | #1034


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Grammaton Cleric:
If $Next Then $Next = FileExists('A:\gk.db3') должно иметь вид If $Next Then $Next = (FileExists('A:\gk.db3')==1) »
в обоих случаях $Next присвоится 1/True при наличии файла и 0/False при его отсутствии
любое число <>0 обрабатывается при проверке как TRUE, 0 соотвественно FALSE, так что эти варианты эквивалентны
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:38, 30-10-2008 | #1035


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
компилятор сам решает какое "первое", какое "второе" - он в курсе, что "от перестановки слагаемых результат не меняется"
Компилятор? я если честно не вижу связи, компилятор преобразовывает в машинный код, возможно ты имел в виду интерпритатор?
И тут мне немного не понятно, что значит он сам решает, тогда получается можно условия написать как угодно? на практике однако это не так...

Код: Выделить весь код
;Пример 1
If 1 = 1 Or TestFunc() Then MsgBox(0, "", "1 = 1")

;Пример 2
If 1 = 0 And TestFunc() Then MsgBox(0, "", "1 = 0?")

;Эта функция никогда не запустится с условиями выше
Func TestFunc()
    Return MsgBox(0, "", "MsgBox from TestFunc()")
EndFunc
Цитата:
твой код не выдаст предупреждения на дискету без файла
А про это сообщение небыло речи - Имхо, мой первый вариант самый оптимальный.

Цитата:
ContinueLoop - силовое завершение текщего цикла
Разве? Мне казалось что это продолжение цикла с начала Выход это ExitLoop.

Цитата:
$Next = (DriveStatus("A:")=="READY")
If $Next Then $Next = FileExists('A:\gk.db3')
If $Next Then ExitLoop
Вместо этого можно просто If DriveStatus("A:") == "READY" And FileExists('A:\gk.db3') Then ExitLoop

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:59, 30-10-2008 | #1036


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
не вижу связи »
это я про про алгоритмы вообще и про скрипты vs компиляторы в частности
Цитата:
про это сообщение небыло речи »
имхо бессмысленно кричать пользователю о том что нужна дискета и радостно жевать до опупения первую попавшуюся
Цитата:
мне казалось что это продолжение цикла с начала
подтверждаю, слово "цикл" применил не по назначению, имел ввиду текущий проход цикла
Цитата:
мой первый вариант самый оптимальный »
дык потому и отметил полезняшкой
Цитата:
Вместо этого можно просто »
зациклились однако

Отправлено: 15:24, 30-10-2008 | #1037


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата amel27:
зациклились однако »
Да, пора закругляться

У меня тут на другую тему есть вопрос: Обязательно ли освобождать разного рода хендлы (типа Callback, FileOpen и т.п.) при выходе из скрипта (OnAutoItExit)?

В справке у FileClose() сказано:

Цитата:
Upon termination, AutoIt automatically closes any files it opened, but calling FileClose is still a good idea.
Возможно это относится и к другим хендлам? И если нет, то что происходит если не закрывать хендлы на выходе, возможно будет излишнее переполнение памяти?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:53, 30-10-2008 | #1038


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Обязательно ли освобождать разного рода хендлы »
Те что открыты через API обязательно, через ф-ции AutoIT необязательно (при штатном выходе из скрипта), если скрипт прерывается системой (обычно при тестировании), то хвосты остаются полюбому... помогает только регулярная перезагрузка. С другой стороны, для "тяжелых" скриптов полезно своевременно закрывать освободившиеся описатели из соображений экономии ресурсов.

ADD: ИМХО вопрос упирается в поддерживаемые типы данных, примерно так: если для к-либо описателя есть ф-ция типа Is*(), где * - тип описателя, то AutoIT должен уметь сам корректно закрывать такие переменные-описатели... Но если, к примеру, обычная переменная содержит несвойственный ей тип (целое число -> указатель на стуктуру, полученный через API), то тут понятно ответственность полностью на авторе скрипта

Последний раз редактировалось amel27, 31-10-2008 в 06:42.

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:49, 31-10-2008 | #1039


Пользователь


Сообщения: 105
Благодарности: 0

Профиль | Отправить PM | Цитировать



Отправлено: 06:43, 31-10-2008 | #1040



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ FOX RED Защита компьютерных систем 67 21-11-2007 15:05
[Архив - Часть 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




 
Переход