Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 12:29 10-01-2020
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    offtop: кто нибудь пробовал открыть сайт autoit-script.ru по HTTPS ?
    https://autoit-script.ru
     
    Открывается, абсолютно другой сайт. Почему так происходит?

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 15:08 09-05-2015 | Исправлено: ynbIpb, 09:38 12-05-2015
    VictorMan



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
    AutiIt практически не пользуюсь, знаний почти нет, но вот возник вопрос, попробовал разобраться - и никак...
    Нужно получить информацию о местонахождении вызвавшей скомпилированный скрипт программы.
    Насколько я понял, такой возможности нет  
     
    Пример:
    1. Я нахожусь в C:\111
    2. Вызываю скомпилированный скрипт, находящийся в D:\222
    3.Нужно получить путь, откуда был вызван скрипт (т.е. C:\111).
    Или сразу на будущее: этот путь, а также имя вызвавшей программы и командная строка.  
     
    Есть такое решение?

    Всего записей: 2447 | Зарегистр. 26-09-2001 | Отправлено: 22:46 20-05-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VictorMan

    Цитата:
    Нужно получить путь, откуда был вызван скрипт

    Так все есть в мануале:

    Код:
    Macro Reference - AutoIt Related
    @ScriptDir Directory containing the running script. Only includes a trailing backslash when the script is located in the root of a drive.  
    @ScriptFullPath Equivalent to @ScriptDir & "\" & @ScriptName

    Ком. строка

    Код:
    $CmdLine[]


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:21 20-05-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VictorMan
    Цитата:
    имя вызвавшей программы
    _WinAPI_GetParentProcess(), _WinAPI_GetProcessFileName().

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 05:18 21-05-2015 | Исправлено: madmasles, 05:18 21-05-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VictorMan

    Цитата:
    3.Нужно получить путь, откуда был вызван скрипт (т.е. C:\111).  


    Код:
    @WorkingDir

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:03 21-05-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Цитата:

    Код:
    @WorkingDir
    А если программа запущена так
    Код:
    FileChangeDir('D:\222')
    Run('prog.exe')
    То @WorkingDir покажет не тот путь, который нужен.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 06:29 22-05-2015 | Исправлено: madmasles, 07:08 22-05-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Run('prog.exe') меняет WorkingDir , нужно запускать так
     

    Код:
    Run('prog.exe','D:\222')

     
    или так
     

    Код:
    FileChangeDir('D:\222')
    Run('prog.exe','')  

     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:31 22-05-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ИМХО, так покажет родителя
    Код:
    #include <WinAPIEx.au3>
     
    $iParentPID = _WinAPI_GetParentProcess()
    If Not $iParentPID Then Exit MsgBox(16, 'Error', '_WinAPI_GetParentProcess')
    MsgBox(64, 'ParentProcess', 'PID Parent Process = ' & $iParentPID)
    $sRarentFile = _WinAPI_GetProcessFileName($iParentPID)
    If @error Then Exit MsgBox(16, 'Error', '_WinAPI_GetProcessFileName')
    MsgBox(64, 'Parent FileName', $sRarentFile)
    Меняется ли WorkingDir или нет.
     
    PS
    Если не запускается так:
    Код:
    Exit Run('Полный путь к prog.exe')

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 08:00 22-05-2015
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, пожалуйста, помогите решить вопрос, каким образом с помощью AutoIt скрипта заполнить свободное дисковое пространство, на определенном диске? Как это реализовать в пакетном файле я понимаю, а вот как в AutoIt, - у меня идей пока нет. Буду благодарен Вам за помощь.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 17:18 22-05-2015 | Исправлено: Artem_Butenko, 17:20 22-05-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    Примерно, так.

    Код:
    #include <WinAPI.au3>
    $sDrive='g:'
    $sFile=$sDrive & '\Bubble'
    $iSize=DriveSpaceFree ($sDrive) * 1024 * 1024
     
    $hFile = _WinAPI_CreateFile($sFile, 3, 6)
    _WinAPI_SetFilePointer($hFile, $iSize,2)
    _WinAPI_SetEndOfFile($hFile)
    _WinAPI_CloseHandle($hFile)


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:05 22-05-2015
    Spy686



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть програмка написанная на AutoIt
    https://yadi.sk/d/y8UcgnB2gwJxc
    Compare_strings
    Как можно присвоить значения по умолчания для полей:  
    1 и 2, т.е. указать пути к файлу по умолчанию?
     
    Пробовал в  

    Код:
    $Path1 = GUICtrlCreateInput('c:\test.txt', 20, 20, 435, 22)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUICtrlSetResizing(-1, 2 + 4 + 32 + 512)

     
    Не присваивается (
     
    Подскажите пожалуйста

    Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 10:09 30-05-2015
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    1. Я нахожусь в C:\111  
    2. Вызываю скомпилированный скрипт, находящийся в D:\222  
    3.Нужно получить путь, откуда был вызван скрипт (т.е. C:\111).

    Задача не имеющая решения в такой постановке.
     
    Что такое "вызываю"?
    1 Запускаю батник (скрипт) лежащий в C:\111?
    2 Что прописано в батнике:  
    2.1 D:\222\Script.exe ?
    2.2 Start "" D:\222\Script.exe ?
    2.3 Start "" /D"E\333" D:\222\Script.exe ?
    3 А может там прописан запуск батника в E\333 в котором прописан запуск D:\222\Script.exe ?
    4 Может запуск производится из ком строки какого-то файлового менеджера? Какого? Как, ибо способы могут быть разные?
     
    Список предположений можно продолжать без конца. Нужно четче прописывать постановку задачи.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 19:48 31-05-2015 | Исправлено: GORA2, 19:51 31-05-2015
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Spy686
    Напиши внешний скрипт, который запустит прогу и вставит тексты. Или сделай в скрипте вставку текста перед циклом событий.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 13:31 03-06-2015
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу помощи в написании скрипта.  
    Нужно чтобы при нажатии определенной клавиши, например A, указатель мыши перемещался относительно текущего положения на 200 пикселей влево. А при нажатии, например D, указатель перемещался относительно текущего положения на 200 пикселей вправо.

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 09:54 06-06-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, подскажите, пожалуйста, как можно определить, что в буфер обмена что-то попало? Типа как это делают разные менеджеры буфера обмена.

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 10:25 06-06-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    как можно определить, что в буфер обмена что-то попало?
    _ClipBoard_GetSequenceNumber()

    Код:
    #include <Clipboard.au3>
     
    AdlibRegister('_Clipboard', 100)
    HotKeySet('{Esc}', '_Exit')
    _Clipboard()
    While Sleep(250)
    WEnd
     
    Func _Clipboard()
        Local Static $i__Num = _ClipBoard_GetSequenceNumber()
        Local $i_Num = _ClipBoard_GetSequenceNumber()
        If $i_Num > $i__Num Then
            $i__Num = $i_Num
            ConsoleWrite('ClipBoard change' & @LF)
        EndIf
    EndFunc   ;==>_Clipboard
     
    Func _Exit()
        Exit
    EndFunc   ;==>_Exit

     

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:47 06-06-2015 | Исправлено: madmasles, 14:57 06-06-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Пример следилки за буфером обмена.

    Код:
    #include <ClipBoard.au3>
    #include <WindowsConstants.au3>
     
    $hGUI = GUICreate("_Clipboard_Test_")
    $hNextWin = _ClipBoard_SetViewer($hGUI)
    GUIRegisterMsg($WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD")
     
    While True
        Sleep(100)
    WEnd
     
    Func WM_DRAWCLIPBOARD()
        If MsgBox(1, "ClpBoard", ClipGet()) = 2 Then Exit
    EndFunc


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:43 06-06-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    NIKZZZZ
    Спасибо, набросал вариант, но надо думать, отложу пока: при копировании из GTK+-приложений разные сюрпризы - левые ааписи типа "0", то нелатиница в виде ????, останавливается сбор новых клипов до перезапуска скрипта. В общем, с разбегу замена менеджера буфера обмена не удалась - GTK_TEXT_BUFFER_CONTENTS в буфере лезет боком

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 22:54 06-06-2015
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По своей проблеме

    Цитата:
    Нужно чтобы при нажатии определенной клавиши, например A, указатель мыши перемещался относительно текущего положения на 200 пикселей влево. А при нажатии, например D, указатель перемещался относительно текущего положения на 200 пикселей вправо.

    нашел готовое решение здесь

    Код:
    HotKeySet("{ins}", "OnOff")
    HotKeySet("{esc}", "Quit")
     
    Global $Off = True, $Step = 1
     
    While Sleep(1000)
    WEnd
     
    Func up()
      MouseMove(MouseGetPos(0), MouseGetPos(1) - $Step, 0)
    EndFunc
     
    Func down()
      MouseMove(MouseGetPos(0), MouseGetPos(1) + $Step, 0)
    EndFunc
     
    Func left()
      MouseMove(MouseGetPos(0) - $Step, MouseGetPos(1), 0)
    EndFunc
     
    Func right()
      MouseMove(MouseGetPos(0) + $Step, MouseGetPos(1), 0)
    EndFunc
     
    Func OnOff()
      If $Off Then
        HotKeySet("w", "up")
        HotKeySet("s", "down")
        HotKeySet("a", "left")
        HotKeySet("d", "right")
      Else
        HotKeySet("w")
        HotKeySet("s")
        HotKeySet("a")
        HotKeySet("d")
      EndIf
      $Off = Not $Off
    EndFunc
     
    Func Quit()
      Exit
    EndFunc
     

    Однако после запуска иконка скрипта висит в трее, но при нажатии w, s, a или d перемещения курсора мыши не происходит. В чем может быть проблема?

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 09:55 07-06-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil
    Цитата:
    при нажатии w, s, a или d перемещения курсора мыши не происходит. В чем может быть проблема?

    Обход проблемы с HotKeySet/Accelerators при разных раскладках клавиатуры.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:10 07-06-2015
       

    Страницы: 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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru