[архив - Часть 2] AutoIt скрипты

Ответить
 • Просмотры: 33
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Creat0R,
Цитата Creat0R:



Кажется ты(?) уже задавал точно такой вопрос

И я даже пример вроде привёл (сорри, найти не удалось).
[архив - Часть 2] AutoIt скрипты




Да, я уже задавал такой вопрос, но твоё решение не отвечало одному из требований задачи (сорри не могу вспомнить какому именно требованию, так, как тоже не смог найти твой пост) Если не трудно выложи своё решение Изображение
Аватара пользователя
amel27

Re: [архив - Часть 2] AutoIt скрипты

Сообщение amel27 »

Как выполнить такое условие если в блокноте, строке есть знак + тогда выполнить дествие ???
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Maza Faka,


Цитата:



не смог найти твой пост



Google рулит (при правильном запросе: 24 +массив site:forum.oszone.net Изображение )...



[архив - Часть 2] AutoIt скрипты




Там задача была похожая, только от 1 до 13 Изображение ..

И массив я сделал двумерный (мне кажется так легче), но то что ты сделал в твоём примере, можно сделать двумя циклами (плюс вспомагательная функция):







Код:

Код: Выделить всё

#include  ;Только для _ArrayDisplay()
Global $MainArray = GetArray(24, 12)
_ArrayDisplay($MainArray)
Func GetArray($iElements = 24, $iRandom = 12)
    Local $iRandNum, $avRetArray[$iElements + 1]
    For $i = 1 To $iElements
        $iRandNum = Random(1, $iRandom, 1)
        If _FindInArray($avRetArray, $iRandNum) = -1 Then
            $avRetArray[$i] = $iRandNum
        Else
            While _FindInArray($avRetArray, $iRandNum) > 1
                $iRandNum = Random(1, $iRandom, 1)
            WEnd
            $avRetArray[$i] = $iRandNum
        EndIf
    Next
    $avRetArray[0] = $iElements
    Return $avRetArray
EndFunc
Func _FindInArray(ByRef $avArray, $StrToFind)
    Local $iRetCount = 0
    For $i = 1 To UBound($avArray)-1
        If $avArray[$i]  "" And $avArray[$i] = $StrToFind Then $iRetCount += 1
    Next
    If $iRetCount  0 Then Return $iRetCount
    Return -1
EndFunc



Drsmog


Цитата:



если в блокноте, строке есть знак + тогда выполнить дествие



Примерно так:





Код:

Код: Выделить всё

$NotepadTitle = "[CLASS:Notepad]"
Run(@WindowsDir & "\Notepad.exe")
WinWait($NotepadTitle)
ControlSetText($NotepadTitle, "", "Edit1", "Просто текст с + ") ;Задаём текст с "+"
$EditText = ControlGetText($NotepadTitle, "", "Edit1")
If StringInStr($EditText, "+") Then
    ;Делаем наше действие ;)
    MsgBox(0, "", "Это могло бы быть ваше действие ;)")
EndIf
;Просто закроем то что открыли
WinClose($NotepadTitle)
WinWaitClose($NotepadTitle, "", 1)
If WinActive("[CLASS:#32770]", "&") Then ControlClick("[CLASS:#32770]", "&", "Button2")
Аватара пользователя
V0van3

Re: [архив - Часть 2] AutoIt скрипты

Сообщение V0van3 »

Огроменное спасибо !!!!!!!!!!!! Изображение Изображение Изображение
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

V0van3,


Цитата:



как надо правильно если в значении %AppPath% есть пробелы?



Заключить переменную в кавычки:





Код:

Код: Выделить всё

%path_cmdutils%\Autoit3.exe "%~dp0\FlashPlayerUpdate.au3" /p "%AppPath%"


Цитата:



какое условие в таком скрипте должно отследить успешное срабатывание чтобы сделать exitloop?



Срабатывание чего? из скрита непонятно какова цель..



А вообще, для таких задач (автоматизации Internet Explorer), есть встроенная библиотека IE.au3, там можно запустить адрес в IE, и функция будет ждать окончания загрузки страницы, также можно нажать на ссылку/кнопку зная заранее только её текст, и т.д и т.п.




Цитата:



то лучше использовать для управления веб интерфейсами autoit или autohotkey?



Думаю что они оба не подходят для этой задачи, хотя если только IE, тогда AutoIt для этого вооружён Изображение
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Ещё один сюрприз от разработчиков! Изображение



В
последней бетте
добавили поддержку DllCallBack!!!




Цитата
http://www.autoitscript.com/forum/index ... 717&st=330
&
:



3.2.9.12 (17th November, 2007) (Beta)



- Added: DllCallbackRegister(), DllCallbackGetPtr() and DllCallbackFree()



Библиотека DllCallBack.au3 полагаю уже будет не нужна Изображение
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Имитация телефонного звонка:





Код:

Код: Выделить всё

HotKeySet("{Esc}", "Quit")
_PhoneRing(8)
;===============================================================================
;
; Function Name:    _PhoneRing()
; Description:      Beep Sound Imitation of Phone Rings.
; Parameter(s):     $iRings [Optional] - Rings to beep (5 is the default),
;                       If $iRings > 0 Then this time of rings will be sounded.
;                       If $iRings < 0 Then number after - sign will be used to indicate how long (seconds) the function will ring.
;                       If $iRings = 0 Then the function will ring (loop) forever :)
;                   $iDuration [Optional] - Duration of the Ring to beep (15 is the default).
;                   $iWait - [Optional] How long to wait between each rings in milleseconds (1500 is the default).
;
; Return Value(s):  Always returns 1 regardless of success.
; Requirement(s):   None.
; Author(s):        G.Sandler (a.k.a CreatoR).
;
;===============================================================================
Func _PhoneRing($iRings=5, $iDuration=15, $iWait=1500)
    Local $iCount = 0, $iTimerInit = TimerInit()
    While 1
        $iCount += 1
        For $i = 1 To $iDuration
            Beep(1000, 35)
            Beep(2000, 30)
            Beep(1500, 25)
        Next
        If $iRings > 0 And $iCount = $iRings Then Return 1
        If $iRings = -$iRings Then Return 1
        Sleep($iWait)
    WEnd
EndFunc
Func Quit()
    Exit
EndFunc
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

GuiCtrlSetOnHover() UDF!



Эта функция предназначена для управления элементами при наведении курсора мышки над ними (Hovering Process), используется точно также как и подобные функции GuiCtrlSetOnEvent().



Вот пример, создаёт алфавит из кнопок, когда проводим мышкой по кнопкам, они красятся в красный цвет, также обратите внимание - это будет работать даже если GUI окно не активно, и даже если запущен обычный MsgBox !!! (нажмите на кнопку буквы).





Код:

Код: Выделить всё

#include 
Opt("GuiOnEventMode", 1)
$Btn_Color = 0x7A9DD8
$Hover_Color = 0xFF0000
$GUIMain = GuiCreate("GuiCtrlSetOnHover - Letters Demo", 570, 200)
GUISetOnEvent(-3, "Quit")
GUICtrlCreateLetters(10, 60, 18, 20)
$Close = GuiCtrlCreateButton("Close", 30, 120, 100, 30)
GUICtrlSetOnEvent($Close, "Quit")
GuiSetState()
While 1
    Sleep(100)
WEnd
Func GUICtrlCreateLetters($iLeft, $Top, $Width=15, $Height=15)
    Local $iLeft_Begin = $iLeft
    Local $iAsc_Char = 64
    For $i = 0 To 25
        $iLeft_Begin += 20
        $iAsc_Char += 1
        GUICtrlCreateButton(Chr($iAsc_Char), $iLeft_Begin, $Top, $Width, $Height)
        GUICtrlSetOnEvent(-1, "LetterEvents")
        GUICtrlSetOnHover(-1, "Hover_Func", "Leave_Hover_Func")
        GUICtrlSetBkColor(-1, $Btn_Color)
        GUICtrlSetFont(-1, 6)
    Next
EndFunc
Func LetterEvents()
    MsgBox(64, "Pressed", "Letter = " & GUICtrlRead(@GUI_CtrlId))
EndFunc
Func Hover_Func($CtrlID)
    GUICtrlSetBkColor($CtrlID, $Hover_Color)
EndFunc
Func Leave_Hover_Func($CtrlID)
    GUICtrlSetBkColor($CtrlID, $Btn_Color)
EndFunc
Func Quit()
    Exit
EndFunc

Сам UDF скачать можно
тут
.

История зарождения функции на оф. форуме
Изображение .
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Цитата Creat0R:



fak1r,

Цитата:нельзя ли как нить сделать прогу на автоите для заливки картинок на этот сайт

Если помучаться, то наверняка можно, смотри в сторону TCP-функции, ну или через библиотеку IE.au3.
[архив - Часть 2] AutoIt скрипты




То то и оно я не умею работать с TCP , а как спомощью IE.au3 авторизирваться на сайте тоже не знаю. Изображение
Аватара пользователя
amel27

Re: [архив - Часть 2] AutoIt скрипты

Сообщение amel27 »

Creat0R


Цитата:



Возможно ли написать функцию, которая будет возвращать тип кодировки указанной строки?



в общем случае нет... хотя WinAPI и содержит функцию для проверки строки на "юникодовость", но даже она не дает абсолютно достоверного результата так как применяет некие статистические алгоритмы и не рекомендуется к использованию... собственно поэтому и придумали сигнатуры, чтобы была возможность надежно определить кодировку файла


Цитата:



Как перекодировать строку в UTF-8 with signature кодировку?



из какой кодировки и куда?.. если из ANSI в файл то штатным FileWrite() с флагом 128... если из UTF-8 в файл, то FileWrite() с флагом 16 и предварительной записью сигнатуры в начало файла при его инициализации... или имелось ввиду что-то другое?



И еще - я так и не понял зачем тебе понадобился юникод если ты работаешь только в UTF-8? Изображение
Ответить

Вернуться в «AutoIt»