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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновлён Полный комплект справки, зеркало  2013.07.14
    Подробнее...

    Всего записей: 4414 | Зарегистр. 03-05-2006 | Отправлено: 15:55 14-07-2013
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята помогите, уже всю голову сломал с этим Outlook-ом
    Не могу отправить сообщение через Outlook средствами Autoit
    уже писал
     

    Код:
    #Include <Date.au3>
    #Include <Array.au3>
    #Include "C:\1\AutoIt3\Include\Outlook.au3"
    $oOutlook = _OutlookOpen()
     
    _OutlookSendMail($oOutlook, "assigarev@rosneft.ru","","", @ComputerName, "The Body Rich Text","",$olFormatRichText,"","")

     
    при попытке выполнить скрипт выскакивает

    Код:
    c:\1\AutoIt3\Include\Outlook.au3 (420) : ==> Error in expression.:
    Local $oMessage = $oOutlook.CreateItem($olMailItem)
    Local $oMessage = ^ ERROR  

     
    не пойму что не так ?

    Всего записей: 156 | Зарегистр. 18-07-2008 | Отправлено: 08:43 16-07-2013 | Исправлено: araneon, 08:43 16-07-2013
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    araneon, принципиально использовать Outlook?
    можно например вот такой вариант рассмотреть: http://autoit-script.ru/index.php?topic=783.msg13596#msg13596

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 09:32 16-07-2013
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    К сожалению да, принципиально.
    Так как нужно, создать форму в которой пользователь вводит текст и нажимает кнопочку Отправить.
    Данный текст (который написал пользователь) берётся с этой формы и отправляется на один Email (test@domen.ru) и всё.
    Так ка пользователей более 300 и в целях безопастности пароли к учёткам меняют пользователи 1 раз в 2-3 месяца то Outlook становится (к сожалению) принципиальным (((
    Подскажите плизз как такое реализовать ?
     
    Добавлено:
    Пробую UDF OutlookEX, функцию _OL_Wrapper_SendMail
     

    Код:
    #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y
    #include <OutlookEX.au3>
     
    Global $oOutlook = _OL_Open()
    If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)
     
    ; *****************************************************************************
    ; Example 1
    ; Send a html mail to the current user.
    ; Add an attachment and set importance to high.
    ; *****************************************************************************
    Global $sCurrentUser = $oOutlook.GetNameSpace("MAPI").CurrentUser.Name
    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "TestSubject", "Body
    <b>fett</b> normal."
    , @ScriptDir & "\_OL_Wrapper_SendMail.au3", $olFormatHTML, $olImportanceHigh)
    If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OutlookSendMail Wrapper Script", "Error sending mail. @error = " & @error & ", @extended: " & @extended)
    MsgBox(64, "OutlookEX UDF: _OutlookSendMail Wrapper Script", "Mail successfully sent to user '" & $sCurrentUser & "'!")
     
    _OL_Close($oOutlook)

     
    и опыть же беда  
     

    Всего записей: 156 | Зарегистр. 18-07-2008 | Отправлено: 10:46 16-07-2013
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    araneon,  тогда думаю стоит убедиться в актуальности используемой версии.
    первоисточник: http://www.autoitscript.com/forum/topic/126305-outlookex-udf/

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 19:02 16-07-2013
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    К сожалению использую подледную версию OutlookEX UDF 0.9.0.0

    Всего записей: 156 | Зарегистр. 18-07-2008 | Отправлено: 10:39 17-07-2013
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Даже не знаю чем помочь. При отсутствующем Outlook у меня немного другой код ошибки, а специально ставить эту хрень лень.
    В справке написано:  
    Цитата:
    Supported Version
    The OutlookEX UDF has been tested with Outlook 2002 on Windows XP SP3 and Outlook 2010 on Windows 7 SP1.

    Возможно в этом причина?
    Ещё как вариант: имеет значение язык Windows\Outlook?
     
     
    тут решили проблему: OutlookEX UDF - Help & Support

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 13:41 17-07-2013 | Исправлено: ynbIpb, 14:30 17-07-2013
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо за подсказки, решили проблему вместе с water, мешали офис 2003 и Share Point Designer 2007, кто конкретно не знаю, удалил обоих и всё заработало.
    Спасибо!!!
    Вопрос теперь немного другой
    Нужно, создать форму в которой пользователь вводит текст и нажимает кнопочку Отправить.
    Данный текст (который написал пользователь) берётся с этой формы и отправляется на один Email (test@domen.ru) и всё.

    Всего записей: 156 | Зарегистр. 18-07-2008 | Отправлено: 15:42 17-07-2013
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, прошу Вашей помощи. В редакторе Koda составил следующую форму. Пожалуйста, помогите реализовать следующее действие: при выборе определенной радио-кнопки и нажатию на кнопку "Start", должно выполняться действие соответствующее указанной радио-кнопке. Если выбор вообще не осуществлен, а кнопка "Start" нажата, необходимо вывести предупреждающее сообщение о том, что необходимо осуществить выбор. И можно ли на одну радио-кнопку назначить порядок определенных действий, например, запуск приложения, запись в системный реестр и др. Сам только начинаю учиться работать с GUI в AutoIt. Буду очень Вам признателен за помощь.

    Всего записей: 712 | Зарегистр. 19-02-2008 | Отправлено: 21:30 17-07-2013 | Исправлено: Artem_Butenko, 21:32 17-07-2013
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят подскажите чёт никак не вспомнить
    есть форма на которой есть GUICtrlCreateInput и неактивная кнопка GUICtrlCreateButton  
    в GUICtrlCreateInput нужно в весть только 4 цифры  
    затем нажимая на кнопку (GUICtrlCreateButton) должна производится проверка на правильность ввода цифр, их может быть ТОЛЬКО 4 и должны начинаться на 3
     
    Добавлено:

    Цитата:
    Artem_Butenko

    посмотри здесь

    Всего записей: 156 | Зарегистр. 18-07-2008 | Отправлено: 14:43 18-07-2013 | Исправлено: araneon, 15:21 18-07-2013
    ynbIpb



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

    Код:
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
     
    $Form1 = GUICreate("Form1", 189, 152, 192, 124)
    $Input1 = GUICtrlCreateInput("Input1", 32, 16, 121, 21)
    $Button1 = GUICtrlCreateButton("Button1", 48, 64, 75, 25)
    GUISetState(@SW_SHOW)
     
     
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button1
                _check_input()
        EndSwitch
    WEnd
     
    Func _check_input()
        $sInputTxt = GUICtrlRead ($Input1)
        If $sInputTxt = "" Then
            MsgBox (0, "", "Нет текста!")
            Return
        EndIf
        If StringLen ($sInputTxt)  <> 4 Or StringLeft ($sInputTxt, 1) <> "3" Or StringIsDigit ($sInputTxt) = 0 Then
            MsgBox (0, "", "Неверные данные!")
            Return
        EndIf
            MsgBox (0, "", "Всё ОК!")
    EndFunc

     
    madmasles, упс... точно, поправил. С регулярками не дружу, по этому выбрал такой подход.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 16:10 18-07-2013 | Исправлено: ynbIpb, 19:33 18-07-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko,
    Можно примерно так: Подробнее...
    Но, ИМХО, так проще: Подробнее...
     
    Добавлено:
    ynbIpb
    Цитата:
    araneon, Как-то так:
    У Вас проходит, например, "3абв", вместо 4-х цифр.
     
     
    Добавлено:
    araneon,
    Посмотрите GUICtrlRegExpRestrict - Ограничение элементов ввода рег. выражением (рег.выр. типа '^3\d{0,3}$')

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:14 18-07-2013 | Исправлено: madmasles, 16:25 18-07-2013
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    All
    Исходные данные:
    Читаю симлинк бутового раздела HKLM\System\Setup\SystemPаrtition
    Получаю что то типа \Device\HardDiskVolume4
    Нужно:
    1. Определить принадлежность этого раздела \Device\HardDiskVolume4 к номеру диска (типа \Device\Harddisk0, \Device\Harddisk1 и т.д.)
    2. Определить все логические тома данного диска (типа C:, D: и т.д.), определённого в п.1
    Желательно без привлечения WMI
    Есть идеи?

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 00:22 19-07-2013
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
    Тебе нужен _WinAPIEx.au3, пример из его хелпа:
     

    Код:
    #Include <WinAPIEx.au3>
     
    Opt('MustDeclareVars', 1)
     
    Global $Data, $Drive = DriveGetDrive('FIXED')
    Global $List[10]
     
    For $i = 0 To UBound($Drive) - 1
        $List[$i] = ''
    Next
    If IsArray($Drive) Then
        For $i = 1 To $Drive[0]
            $Data = _WinAPI_GetDriveNumber($Drive[$i])
            If IsArray($Data) Then
                $List[$Data[1]] &= StringUpper($Drive[$i]) & ' '
            EndIf
        Next
    EndIf
    For $i = 0 To UBound($Drive) - 1
        If $List[$i] Then
            ConsoleWrite('Drive' & $i & ' => ' & $List[$i] & @CR)
        EndIf
    Next  
     

     
     
     
    Добавлено:
    Твоя задача

    Код:
    #include <WinAPIEx.au3>
     
    $sSystemPartition = RegRead('HKEY_LOCAL_MACHINE\SYSTEM\Setup', 'SystemPartition')
    $iSystemPartition = StringRegExp($sSystemPartition, '\\Device\\HarddiskVolume([1-9]+)', '\1')-1
    $aDrive = DriveGetDrive('FIXED')
    $sList = ''
    If IsArray($aDrive) Then
        For $i = 1 To $aDrive[0]
            $aData = _WinAPI_GetDriveNumber($aDrive[$i])
            If IsArray($aData) Then
                If $aData[1] = $iSystemPartition Then
                    $sList &= $aDrive[$i] & '  '
                EndIf
            EndIf
        Next
    EndIf
    MsgBox(4096, 'Буковки диска  ' & $iSystemPartition, $sList)

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 02:35 19-07-2013
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Вав
    Спс, завтра проверю.
     
    Я тут вроде нашёл ещё метод определения бутовой и системной патриции (или системной и загрузочной, как принято называть у MS)
     
    HKLM\System\CurrentControlSet\Control FirmwareBootDevice  
    результат multi(0)disk(0)rdisk(0)partition(1)  это бутовая с загрузчиком
    HKLM\System\CurrentControlSet\Control SystemBootDevice  
    результат multi(0)disk(0)rdisk(0)partition(4)  это системная с ядром
    Диск видно в rdisk(n)
    Вот только не могу найти доки, чтобы убедиться в правильности предположения...
     

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 04:01 19-07-2013 | Исправлено: dialmak, 04:02 19-07-2013
    NIKZZZZ



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

    Цитата:
    убедиться в правильности предположения...

    У меня на Win7 данные тобой ветки не существуют.
     
     
    Добавлено:
    Наврал, есть.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 04:11 19-07-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    araneon,
    Как вариант.
    Код:
    #include <GUIConstantsEx.au3>
     
    $hGui = GUICreate('Test', 200, 110)
    $nInput = GUICtrlCreateInput('Only four numbers', 20, 20, 160, 20)
    $nBtn = GUICtrlCreateButton('Click me', 50, 60, 100, 30)
    GUISetState()
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $nBtn
                Local $sTxt = GUICtrlRead($nInput)
                If StringRegExp($sTxt, '^3\d{3}$') Then
                    MsgBox(64, 'Info', $sTxt, 0, $hGui)
                Else
                    MsgBox(16, 'Error', 'Bad text', 0, $hGui)
                EndIf
                $sTxt = ''
        EndSwitch
    WEnd

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 07:34 19-07-2013 | Исправлено: madmasles, 07:37 19-07-2013
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb
    madmasles
    То что нужно.
    Спасибо Вам большое

    Всего записей: 156 | Зарегистр. 18-07-2008 | Отправлено: 07:55 19-07-2013
    Artem_Butenko



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

    Цитата:
    Artem_Butenko,  
     Можно примерно так: Подробнее... [?]  
     Но, ИМХО, так проще: Подробнее... [?]

     
    Большое Вам спасибо за ценные примеры. Можно только небольшое уточнение. В примерах, в каждой группе можно указать одну из возможных радио-кнопок. Пожалуйста, поясните как адаптировать код двух Ваших примеров, чтобы было возможно указать только одну радио-кнопку на всей форме (в не зависимости от количества групп)?

    Всего записей: 712 | Зарегистр. 19-02-2008 | Отправлено: 11:53 19-07-2013 | Исправлено: Artem_Butenko, 11:55 19-07-2013
    dialmak



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

    Цитата:
    Наврал, есть.

    Инфа оттуда соответствует правде ?
    Посоветуй справочник по реестру, можно англоязычный - везде какое-то гуано.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 12:05 19-07-2013
       

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