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

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

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

Сообщение Creat0R »

Функция возвращает пронумерованный список всех классов определённого окна:





Код:

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

Func _WinGetNumeratedClassList($sTitle)
    Local $sClassList = WinGetClassList($sTitle)
    Local $aClassList = StringSplit($sClassList, @LF)
    Local $sRetClassList = "", $sHold_List = "|"
    Local $aiInHold, $iInHold
    For $i = 1 To UBound($aClassList) - 1
        If $aClassList[$i] = "" Then ContinueLoop
        If StringRegExp($sHold_List, "\|" & $aClassList[$i] & "~(\d+)\|") Then
            $aiInHold = StringRegExp($sHold_List, ".*\|" & $aClassList[$i] & "~(\d+)\|.*", 1)
            $iInHold = Number($aiInHold[UBound($aiInHold)-1])
            If $iInHold = 0 Then $iInHold += 1
            $aClassList[$i] &= "~" & $iInHold + 1
            $sHold_List &= $aClassList[$i] & "|"
            $sRetClassList &= $aClassList[$i] & @LF
        Else
            $aClassList[$i] &= "~1"
            $sHold_List &= $aClassList[$i] & "|"
            $sRetClassList &= $aClassList[$i] & @LF
        EndIf
    Next
    Return StringReplace(StringStripWS($sRetClassList, 3), "~", "")
EndFunc
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

amel27,



Не удаётся в новой версии AutoIt 3.2.10.0 переделать самопальную функцию _FileSelectFolder() - хотел избавиться от CallBack UDF'ов, соответственно использовать встроенные функции, но при запуске скрипт намертво виснит, диалога невидно вовсе Изображение



Я заменил...



_DllCallBack($sCallbackProc,'hwnd;uint;long;ptr')



на



DllCallBackRegister($sCallbackProc, 'int', 'hwnd;uint;long;ptr')



А также _DllCallBack_Free на DllCallBackFree



И убрал все UDF'ы/переменные/константы от библиотеки CallBack, но видимо нужно что-то ещё править, подскажи плиз что именно, у меня многие скрипты используют эту функцию, я затрудняюсь теперь пересесть на новую версию Изображение .
Аватара пользователя
МИШАНЧИК

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

Сообщение МИШАНЧИК »

kagorec


Цитата:



194 страницы просмотреть с моим диалапом



Посмотри в версии для
печати
, дай поиск по слову PixelChecksum.



МИШАНЧИК


Цитата:



Ну может всё таки кто нибудь напишет скрипт для Nero8?



Я бы с удовольствием тебе помог, но у меня нет Nero8 (юзаю 6 версию), а качать этого монстра из инета на диал-апе удовольствие сомнительное.
Аватара пользователя
kagorec

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

Сообщение kagorec »

Хорошо пополняются посты в этом топике Изображение



Помогите реализовать корректно работающий скрипт с тикими требованиями:

Лечилка для одной RPG игры. Все происходит в разрешении 1024х786



1. В определенных координатах если изменился цвет, то нажимание клавиши Q происходит с интервалом 0.5 секунды пока невернется снова красный цвет (q клавиша это пить баночки жизьни). И в это же самое время нажимать клавишу E (e элексир силы)

2. Очень важно чтоб при этом была всегда зажата правая кнопка мышки (почемуто у меня никак неполучается реализовать в действии с другими командами)

3. Как реализовать чтоб работало внезависимости если 32 бит или 16 цвет?



Поискал по форуму здесь и на офф. сайте вот нашел скрипт но в нем часть задумки реализована. Кстати он неработает тоесть не нажимает на кнопки.



PHP код:

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

Opt("WinTitleMatchMode", 1)



HotKeySet("{F5}", "Start")



While 1

    Sleep(10)

WEnd



Func Start()

        MsgBox(0,"","Start() triggered")

        $left = PixelChecksum(380, 420, 400, 400)

        ConsoleWrite($left & @CRLF)

        $down = PixelChecksum(450, 420, 470, 400)

        ConsoleWrite($down & @CRLF)

        $up = PixelChecksum(520, 420, 535, 410)

        ConsoleWrite($up & @CRLF)

        $right = PixelChecksum(590, 415, 585, 400)

        ConsoleWrite($right & @CRLF)

    While 1  

        If $left  PixelChecksum(380, 420, 400, 400) Then Send("q")

        If $down  PixelChecksum(450, 420, 470, 400) Then Send("e")

        If $up  PixelChecksum(520, 420, 535, 410) Then Send("w")

        If $right  PixelChecksum(590, 415, 585, 400) Then Send("t")

    WEnd

EndFunc 



Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

kagorec

С Новым Годом!




Цитата:



1. В определенных координатах если изменился цвет, то нажимание клавиши Q происходит с интервалом 0.5 секунды пока невернется снова красный цвет (q клавиша это пить баночки жизьни). И в это же самое время нажимать клавишу E (e элексир силы)



В принципе написать такой скрипт несложно, в топике есть примеры.




Цитата:



2. Очень важно чтоб при этом была всегда зажата правая кнопка мышки (почемуто у меня никак неполучается реализовать в действии с другими командами)



Смотри в справке MouseDown()




Цитата:



3. Как реализовать чтоб работало внезависимости если 32 бит или 16 цвет?



Можно после запуска игры определять глубину цвета рабочего стола @DesktopDepth и в зависимости от результата передавать значение в функцию.
Аватара пользователя
МИШАНЧИК

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

Сообщение МИШАНЧИК »

Ну может всё таки кто нибудь напишет скрипт для Nero8?
Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

Angelus

Так? :



Код:

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

$parsing = StringRegExp($serv1_realm, "\..{3}$", 3)
If @error Then
    IniWrite("c:\test\test.ini", "Section", $serv1_realm, "value")
Else
    MsgBox(64, "Message", "File name")
EndIf
Аватара пользователя
Angelus

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

Сообщение Angelus »

Цитата Creat0R:



Не удаётся в новой версии AutoIt 3.2.10.0 переделать самопальную функцию _FileSelectFolder()
[архив - Часть 2] AutoIt скрипты




Удалось! Изображение





Код:

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

Func _FileSelectFolder($sText='', $iRoot=0, $iFlags=0, $sInitDir=@ScriptDir, $hWnd=0, $sCallbackProc='_FileSFCallbackProc')
    Local $pidl, $iRes='', $pCallbackProc=0, $iMask = $BIF_ALLOLDSTYLEFLAGS, $Error = 0
    ; Контроль входных параметров
    ;$sInitDir = StringRegExpReplace($sInitDir, '([^\\])\\*$', '\1\\')
    ;If StringRight($sInitDir, 1)=':' Then $sInitDir &= '\'
    If BitAND($iFlags, $BIF_NEWDIALOGSTYLE) Then $iMask = $BIF_ALLNEWSTYLEFLAGS
    ; Создание и инициализация основных структур данных
    Local $uBI = DllStructCreate ("hwnd;ptr;ptr;ptr;int;ptr;ptr;int") ; BROWSEINFO
    Local $uTX = DllStructCreate ("char[260];char") ; Текст приглашения
    Local $uMP = DllStructCreate ("char[260]") ; MAX_PATH
    Local $uCB = DllStructCreate ("char[260];int") ; CallBack структура
    DllStructSetData ($uTX, 1, $sText)
    DllStructSetData ($uCB, 1, $sInitDir)
    DllStructSetData ($uCB, 2, $iFlags)
    ; Заполнение структуры BROWSEINFO
    DllStructSetData ($uBI, 1, $hwnd)
    DllStructSetData ($uBI, 3, DllStructGetPtr($uMP))
    DllStructSetData ($uBI, 4, DllStructGetPtr($uTX))
    DllStructSetData ($uBI, 5, BitAND($iFlags, $iMask))
    DllStructSetData ($uBI, 7, DllStructGetPtr($uCB))
    ; Получение указателя на CallBack-функцию
    If $sCallbackProc  '' Then $pCallbackProc = DllCallbackRegister($sCallbackProc, 'int', 'hwnd;int;long;ptr')
    If @error Then Return SetError(2, @error, '') ; ОШИБКА получения указателя
    DllStructSetData($uBI, 6, DllCallbackGetPtr($pCallbackProc))
    ; Получение указателя на корневую папку (PIDL)
    Local $iRet = DllCall ("shell32.dll", "ptr", "SHGetSpecialFolderLocation", _
        "int", 0 , "int", $iRoot , "ptr", DllStructGetPtr($uBI, 2))
    If $iRet[0]=0 Then
        ; Запуск системного диалога
        $pidl = DllCall ("shell32.dll", "ptr", "SHBrowseForFolder", "ptr", DllStructGetPtr($uBI))
        $iRes = DllStructGetData($uMP, 1) ; сохраняем имя объекта
        If $pidl[0] Then
            ; Обработка полученного указателя (PIDL)
            $iRet = DllCall ("shell32.dll", "int", "SHGetPathFromIDList", "ptr", $pidl[0], "ptr", DllStructGetPtr($uMP))
            If $iRet[0] Then $iRes = DllStructGetData($uMP, 1)
            DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", $pidl[0]) ; чистим за собой
        Else
            $Error = 1
        EndIf
        DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", DllStructGetData ($uBI, 2)) ; чистим за собой
    Else
        SetError(1, 0, '') ; ОШИБКА в параметре корневой папки
    EndIf
    If $pCallbackProc Then DllCallBackFree($pCallbackProc) ; закрытие указателя
    Return SetError($Error, 0, $iRes)
EndFunc

Оказывается DllCallbackRegister() возвращает не указатель, а идентификатор, нужно было всего лишь использовать DllCallbackGetPtr() для получения указателя, и далее использовать его при вызове заполнении структуры Изображение .
Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

Я хочу что бы он путь проверял...и если в графе вписано путь и в конце имя файла тогда он выдал сообщение....если не вписано имя файла...то записал в ини файл то что в графе....
Ответить

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