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

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

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


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


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

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


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


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

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



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

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

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

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

 

Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
чего-то у меня в последнее время ихний сайт в дауне
У меня тоже... прокси не юзаю.

Цитата:
пытаясь преобразовать его в юникод
А нельзя на входе перекодировать в Ansi?

Цитата:
все жду пока они поправят этот баг
а они знают о нём?

Цитата:
катастрофически уменьшающий скорость в циклах
Неужели это уменьшает скорость? тогда придётся переписывать много UDF'ов...

Хм, видимо и вправду быстрее, этот тест свидетильствует этому:

Код: Выделить весь код
;Example 1
$sResult = ""
$sString = "test"

$Timer = TimerInit()
For $iCount = 1 To 100
    $sResult = $sResult & $sString
Next
ConsoleWrite("- First Time: " & TimerDiff($Timer) & @LF)

Sleep(500)

;Example 2
$sResult = ""
$sString = "test"

$Timer = TimerInit()
For $iCount = 1 To 100
    $sResult &= $sString
Next
ConsoleWrite("- Second Time: " & TimerDiff($Timer) & @LF)

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

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

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:01, 16-07-2007 | #151



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

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


Аватара для Creat0R

Must AutoIt


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

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


Кто нибудь может мне плиз обьяснить, почему в новой версии AutoIt (v3.2.4.9) попортили половино функции? в смысле теперь все старые скрипты нужно чтательно переписывать...

На данный момент сталкнулся с непознанным - BassMod функция которую привёл тут в пример Diamond (спасибо ещё раз за неё), почему то выводит ошибку:



Что там нужно поменять? Diamond, не подскажешь плиз?

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

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

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


Отправлено: 15:19, 16-07-2007 | #152


Googler


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

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


Creat0R
Цитата:
А нельзя на входе перекодировать в Ansi?
можно объединить сразу две функции в одну или передавать не данные, а ссылку на структуру... завтра соберу для UTF-8.
Цитата:
а они знают о нём?
к сожалению, я там плохо ориентируюсь - юзаю только через поиск
Цитата:
Неужели это уменьшает скорость? тогда придётся переписывать много UDF'ов...
это старый баг - чем длинней строки, тем существенней различие, особенно чувствительно при работе с большими файлами... видимо происходит "лишнее" копирование участков памяти между переменными
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:31, 16-07-2007 | #153


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


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

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


To Sanja Alone
Да, Саня, inetwiz.exe это то, что нужно. Спасибо.

Вот,что у меня получилось:
Код: Выделить весь код
WinMinimizeAll ( )
Run( @ProgramFilesDir & '\Internet Explorer\Connection Wizard\inetwiz.exe' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Установка подключения к Интернету', '1' )
Send ( '{DOWN}{ENTER}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Параметры Интернета для локальной сети', '1' )
Send ( '{ENTER}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Настройте учётную запись почты Интернета', '1' )
Send ( '{ENTER}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Учётная запись почты Интернета', '1' )
Send ( '{UP}{ENTER}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Введите имя', '5' )
Send ( 'Василий Пупкин' & '{ENTER}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Адресс электронной почты Интернета', '1' )
Send ( 'vasilij_pupkin@itkm.ru' & '{ENTER}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Серверы электронной почты', '1' )
Send ( 'pop3.itkm.ru' & '{TAB}' & 'smtp.itkm.ru' & '{Enter}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Вход в почту интернета' , '1' )
Send ( '{Enter}' )
WinWaitActive ( 'Мастер подключения к Интернету', 'Завершение настройки', '1' )
Send ( '{Enter}' )
Exit
Посмотри, всё ли нормально? Может надо что-нибудь добавить или изменить? Мне бы хотелось знать твоё мнение.

Отправлено: 15:44, 16-07-2007 | #154


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


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

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


Creat0R
Да уж... я и раньше не разбирался во всём этом, а теперь они ещё больше всё усложнили...
В общем в некоторых местах нужно вместо "int" прописывать "int:cdecl" - спрашивается зачем такие сложности, ведь до этого всё прекрасно работало без всяких cdecl и библиотека всё понимала...
Я её переписал немного, убрал лишнее и использую как UDF.

Пример вызова:
Код: Выделить весь код
#include <bassmod.au3>
$dll = DllOpen("bassmod.dll")
BassMod($dll, "Awesome - Dawn Main Theme.xm", 1024+4)
UDF:
Код: Выделить весь код
#include-once
; Поддерживает: *.mod *.xm *.it *.s3m *.mtm
Func BassMod($BassModDll,$sPath,$flag=0)
	$init = DllCall($BassModDll, "int", "BASSMOD_Init", "int", -1, _  ;device
							"int", 44100, _  ;freq Hz
							"int", 0)       ;flag
	$fName = DllStructCreate("char[255]")
	DllStructSetData($fName, 1, $sPath)
	$load = DllCall($BassModDll, "int", "BASSMOD_MusicLoad", "int", False, _  ;loading from memory
							"ptr", DllStructGetPtr($fName), _ ;file
							"int", 0, _   ;offset
							"int", 0, _   ;length
							"int", $flag) ;flag
	$music_handle = $load[0]
	DllCall($BassModDll, "int:cdecl", "BASSMOD_MusicPlay", "int", $music_handle)
EndFunc

Последний раз редактировалось Diamond, 18-07-2007 в 04:36. Причина: Удалил строчку: [$music_handle = -1] имхо лишняя...

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

Отправлено: 02:45, 17-07-2007 | #155


Googler


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

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


Creat0R
выполняю обещание:
Код: Выделить весь код
Func _Utf8ToAnsi($utf8string)
    Local $len = StringLen($utf8string)
    Local $buf = DllStructCreate("byte[" & $len*2 & "];byte[2]")
    Local $ret = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
        "int", 65001, "int", 0, _
        "str", $utf8string, "int", -1, _
        "ptr", DllStructGetPtr($buf), "int", $len*2+2)
    Local $out = DllStructCreate("char[" & $len & "];char")
    $ret = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
        "int", 0, "int", 0, _
        "ptr", DllStructGetPtr($buf), "int", -1, _
        "ptr", DllStructGetPtr($out), "int", $len+1, _
        "int", 0, "int", 0)
    Return DllStructGetData($out,1)
EndFunc
P.S. Кстати, у меня нормально прочитал "просигнатуренный" UTF-8 файл в режиме чтения (Mode 0), а с бинарными режимами (Mode 4, 16) такая же канитель, что и с DllStructGetData()...
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:52, 17-07-2007 | #156


Аватара для Creat0R

Must AutoIt


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

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


Diamond
Цитата:
Я её переписал немного, убрал лишнее и использую как UDF.
Большое спасибо, работает как часики.

amel27
Цитата:
выполняю обещание
Привосходно! Спасибо! - Теперь не нужно таскать с собой три функции - Всё в одном!!!

Баг репорт я запостил по поводу _StringRepeat() - и ещё для некоторых функции (_StringProper(), _StringEncrypt(), _HexToString(), _StringToHex())... так что будем надеятся что пофиксят (чтобы самим каждый раз не фиксить).

А по поводу бага с DllStructGetData() - я могу им тоже маякнуть, вот только не уверен как запостить, т.е если бы кто-нить написал это на русском (запрос на поправку бага), я бы им это на англ. выложил... хотя у меня английский тоже не на высоте

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

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

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


Отправлено: 07:57, 17-07-2007 | #157


Ветеран


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

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


Palych64, используйте реестр. Аутлук хранит свои настройки там.

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 11:37, 17-07-2007 | #158


Googler


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

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


Creat0R
Цитата:
А по поводу бага с DllStructGetData() - я могу им тоже маякнуть, вот только не уверен как запостить
там уже вроде возмущались по этому поводу, только я не нашел обещанный автором баг-репорт, к примеру: FileOpen & FileRead, strange outcome, применительно к DllStructGetData() можно использовать этот пример, для файлов будет аналогично:
Код: Выделить весь код
$sFile = @WindowsDir & '\setupact.log'
$hFile = FileOpen($sFile,4)

ConsoleWrite ("Размер файла: "& FileGetSize($sFile) &@CRLF)
ConsoleWrite ("Размер данных в файле: "& StringLen (FileRead ($hFile,FileGetSize($sFile))) &@CRLF)
FileClose($hFile)
З.Ы. в последней бэте ничего не поменялось

Последний раз редактировалось amel27, 17-07-2007 в 19:00. Причина: добавил скрипт


Отправлено: 15:38, 17-07-2007 | #159


Аватара для Sanja Alone

Ищу Человека…


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

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


Palych64
Цитата:
Посмотри, всё ли нормально?
Все работает (проверил на вирт. машине WinXP SP2 eng). А для красивости и удобства правки можно заголовок окна и вводимую инфу задавать через переменные:
Код: Выделить весь код
$Title='Мастер подключения к Интернету'
$Name='Василий Пупкин'
$EMail='vasilij_pupkin@itkm.ru'
$POP3='pop3.itkm.ru'
$SMTP='smtp.itkm.ru'

;а это фрагмент измененного в соотв. с вышесказанным кода:
WinWaitActive ( $Title, 'Серверы электронной почты', '1' )
Send ( $POP3 & '{TAB}' & $SMTP & '{Enter}' )

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Отправлено: 18:49, 17-07-2007 | #160



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход