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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сорри. Не так. Нужно

    Код:
    FileDelete(@WindowsDir & "\Prefetch\" & StringLeft (@ScriptName,StringLen ( @ScriptName ) -4) & "*.pf")

     
     
    Добавлено:
    Впрочем, если длина файла ограничена 14 символами, то видимо правильней выделить левые 14

    Код:
    FileDelete(@WindowsDir & "\Prefetch\" & StringLeft (@ScriptName,14) & "*.pf")

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 15:41 16-06-2014 | Исправлено: dialmak, 16:01 16-06-2014
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
    Ну, более корректно отрезать расширение, независимо от его длины

    Код:
    StringLeft(@ScriptName ,  StringInStr(@ScriptName,".",0,-1)-1)

    Но в данном случае расширение и не нужно обрезать.
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:03 16-06-2014 | Исправлено: NIKZZZZ, 16:08 16-06-2014
    dialmak



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

    Цитата:
    Ну, более корректно

    Согласен.  
    Но для решения имхо лучше выделять левые n символов имени.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 16:09 16-06-2014
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
     
    Я написал для себя пару функций, которые постоянно использую.
     

    Код:
    Func _StringLeftStr($str, $sstr, $Flag = 1)
      If StringInStr($str, $sstr, 0, $Flag) Then
        Return StringLeft($str, StringInStr($str, $sstr, 0, $Flag) - 1)
      EndIf
      Return $str
    EndFunc   ;==>_StringLeftStr
     
    Func _StringRightStr($str, $sstr, $Flag = 1)
      If StringInStr($str, $sstr, 0, $Flag) Then
        Return StringMid($str, StringInStr($str, $sstr, 0, $Flag) + StringLen($sstr))
      EndIf
      Return ''
    EndFunc   ;==>_StringRightStr

     
    Первая возвращает часть строки слева от  разделителя $sstr (одиночный символ или строка), в зависимости от $Flag=1 искать с начала по умолчанию, $Flag=-1 с конца.
    Вторая аналогично, но справа.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:29 16-06-2014 | Исправлено: NIKZZZZ, 16:34 16-06-2014
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Я в UDF - FileOperations.au3 сделал функцию _FO_PathSplit, возвращает массив из 3-х элементов, путь, имя файла, расширение. В не цикловых вызовах и быстро и каждый раз думать не надо, одна на 3 случая. И универсально, если какой то части нет то элемент массива пустой. По скорости быстрее чем нативная _PathSplit на регулярках, хотя там за счёт проверки проигрыш, а когда я просил убрать проверку было отказано, видимо не доверяют на 100% своей регулярке, а значит и в проигрыше остаются.

    Всего записей: 4410 | Зарегистр. 03-05-2006 | Отправлено: 23:29 16-06-2014 | Исправлено: AZJIO, 23:32 16-06-2014
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Да в общем, хорошо, конечно, но возвращается массив, что не всегда удобно, лишняя строка.
     
     
    Добавлено:
    А так, для универсальности, можно было бы сделать по маске, как в батниках

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:50 16-06-2014
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ. Кто подскажет как получить имя (модель) дисков в винде. Как на картинке
     
       
     
    Средствами WMI легко как на листинге ниже , а без него как?
    Листинг
     
    Добавлено:
    P.S. Нужно получить только имя (модель) дисков. Номера дисков известны. Всё остальное мне неважно.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 17:31 20-06-2014 | Исправлено: dialmak, 17:34 20-06-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak,
    Посмотрите здесь: Device Management API

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 08:54 21-06-2014
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
    Без API модель можно вытащить из ветки реестра "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"
     

    Код:
    $sDiveLetter="h:"
    $s=Conv(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices","\DosDevices\" & $sDiveLetter))
    MsgBox(4096,$sDdiveLetter,$s)
     
    Func Conv($bStr)
        If BinaryMid($bStr, 3, 4) = Binary("0x3f003f00") Then
            Return BinaryToString($bStr, 2)
        Else
            Return String($bStr)
        EndIf
    EndFunc   ;==>Conv

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 09:22 21-06-2014 | Исправлено: NIKZZZZ, 09:40 21-06-2014
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо. Крутая штука. Осталось разобраться в DeviceAPI.au3
    Пока не придумал как связать между собой номер диска  и имя устройства (вроде оно называется Frendly Name).
    NIKZZZZ

    Цитата:
    из ветки реестра "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"  

    Не то немного.  
    Предположим, что у устройства нет точки монтирования. Например неформатирована или как на картинке выше флешка  c загрузчиком Clever ( GPT с 2 разделами - HFS+ и системный EFI). Но мой скрипт выше прекрасно видит её.  
    А вот что показывает USB Drive Info (та же флешка, что и выше на картинке)
    http://i.imgur.com/QLYllLl.png

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 14:58 21-06-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
    Цитата:
    Осталось разобраться в DeviceAPI.au3
    Получение информации о физических дисках

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:46 21-06-2014
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Прекрасно. Но вопрос остался тот же. Каким образом связать номер диска в ОС с номером индекса ? Если точнее видимо c \Device\000000XX
    http://i.imgur.com/n7AIATD.png

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 20:49 21-06-2014 | Исправлено: dialmak, 20:55 21-06-2014
    NIKZZZZ



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

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 21:42 21-06-2014
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Смотрел. Может плохо. Нашёл только одну функцию для работы с дисками.
    http://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_GetDriveGeometryEx.htm
    Причём в примере к ней ошибка. Ибо если номер диска не подряд - он не выдаст инфу и выйдет. Переделал, но есть ограничение - просматривает только диски под номером от 0 до 19
    Подробнее...
    Пример выхлопа

    Код:
    -------------------------------
    Disk: 0
    Type of media: Fixed
    Cylinders\Tracks\Sectors: 243152\255\63
    Bytes per Sector: 512
    Total Space: 1862.65 Gbytes
    -------------------------------
    Disk: 1
    Type of media: Removable
    Cylinders\Tracks\Sectors: 1958\255\63
    Bytes per Sector: 512
    Total Space: 15 Gbytes
    -------------------------------
    Disk: 3
    Type of media: Fixed
    Cylinders\Tracks\Sectors: 2610\255\63
    Bytes per Sector: 512
    Total Space: 20 Gbytes
    -------------------------------
    Total Disks: 3

     

     
     
    Добавлено:
    NIKZZZZ
    Глянул на PartInfo от Terabyte. Хе-хе. Видит даже невидимую в винде флешку, которую я выше описывал и показывает разделы GPT c подробной инфой. Есть GUI, CUI версия и есть под Linuх и DOS. А вот имени не пишет зараза... http://prntscr.com/3v4j6o

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 23:00 21-06-2014 | Исправлено: dialmak, 23:03 21-06-2014
    NIKZZZZ



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

    Цитата:
    Пока не придумал как связать между собой номер диска  и имя устройства (вроде оно называется Frendly Name).  

    Ну, номер диска можно узнать с помощью _WinAPI_GetDriveNumber, имя устройства взять из реестра.
     
     
     
     
     
     
    Добавлено:
    dialmak

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

    Писал скриптик, монтирует и размонтирует пустышки, посмотри, может найдешь что-нибудь полезное.
    Подробнее...

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:54 22-06-2014
    dialmak



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

    Цитата:
    номер диска можно узнать с помощью _WinAPI_GetDriveNumber

    Номера дисков я показал как получить выше. Будут показаны все диски. А вот _WinAPI_GetDriveNumber покажет номера дисков только для устройств с точкой монтирования ( с буквой). Имя устройства в реестре тоже только для устройств с точкой монтироования.

    Цитата:
    Предположим, что у устройства нет точки монтирования. Например неформатирована или как на картинке выше флешка  c загрузчиком Clever ( GPT с 2 разделами - HFS+ и системный EFI).
     
     
    Добавлено:

    Цитата:
    Писал скриптик, монтирует и размонтирует пустышки

    Что он делает?

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 01:09 22-06-2014 | Исправлено: dialmak, 01:11 22-06-2014
    NIKZZZZ



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

    Цитата:
    Что он делает?

    Скрипт писал под WinPe, синхронизирует буквы хоста и гостя, кроме того позволяет размонтировать пустышки (CD без диска , кардридеры), ну и смонтировать  их заново.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 01:22 22-06-2014
    dialmak



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

    Цитата:
    синхронизирует буквы хоста и гостя

    Сленг у тебя специфический. Без бутылки не соображу...
    Хост - это основная ос, а гость - pe ?  
    Синхронизация букв - это что? В pe будут буквы как в основной ос ? Или недопонял я то-то..

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 01:26 22-06-2014
    NIKZZZZ



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

    Цитата:
    Хост - это основная ос, а гость - pe ?  

    Хост - загруженная система, PE
     

    Цитата:
    В pe будут буквы как в основной ос ?

    Именно так.
     

    Цитата:
    Имя устройства в реестре тоже только для устройств с точкой монтироования.

    Нет. Посмотри мой скрипт, он ищет не смонтированные устройства в реестре и монтирует их ключ - /MountAll

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 01:35 22-06-2014 | Исправлено: NIKZZZZ, 01:43 22-06-2014
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ага. Спасибо

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 01:40 22-06-2014
       

    Страницы: 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