Русское сообщество AutoIt

  • Май 20, 2012, 12:51:36 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:


Последняя финальная версия AutoIt: 3.3.8.1 (Скачать)
Последняя Beta версия AutoIt: 3.3.9.4 (Скачать)

Реклама

Автор Тема: НЕофициальный FAQ AutoIt  (Прочитано 15116 раз)

0 Пользователей и 2 Гостей смотрят эту тему.

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
НЕофициальный FAQ AutoIt
« Создано: Февраль 05, 2011, 00:47:49 »
Этот FAQ будет постепенно расти, по мере появления частых вопросов на форуме.

По любым предложениям/улучшениям/поправкам смело пишите мне в ЛС.



GUI и его элементы
1. Как избежать мелькание элементов GUI при их частом обновлений?
2. Как показать прокрутку только после того, когда текст выходит за рамки edit-поля?
3. Как сменить иконку у ListView Item?
4. Как правильно создавать дочерние окна?

Графика
1. Как получить размер изображения?

Автоматизация
1. Как учетной записи пользователя назначить административные права?
2. Как создать учётную запись пользователя с правами администратора?

Имитирование нажатия клавиш, Send, HotKeys
1. Почему не работает HotKeySet, или как обойти проблему с раскладкой клавиатуры при отправке сочетаний клавиш?

Общие принципы написания скриптов
1. Как эффективнее организовать операторы сравнения?
2. Почему лучше использовать BitOR для добавления значении констант (например в стилях GUI)?

Системный Tray
1. Как создать GUI по двойному нажатию на иконку в трее?

Разное
1. Как установить пароль на запуск скрипта?
2. Как запустить скрипт вместе с Windows?

Интернет и сеть
1. Как включить/выключить локальное сетевое подключение?
2. Как отправить GET-запрос?
3. Как отправить POST-запрос?
4. Как отправить имя и пароль для HTTP-аутентификации?

Файловая система
1. Как разделить/соеденить файл?

Процессы, сервисы и работа с памятью
1. Как “заморозить/разморозить” процесс?

AutoIt-специфичное
1. Как заставить FileInstall работать с каталогами?




  Записан
Первое сообщение / Продолжение темы 

CreatoR [?]

  • Администратор
  • *
  • *****

  • Автор темы
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: НЕофициальный FAQ AutoIt
« Ответ #16, Отправлен: Июль 08, 2011, 17:39:30 »
Вопрос:
Почему не работает HotKeySet, или как обойти проблему с раскладкой клавиатуры при отправке сочетаний клавиш?

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




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****

  • Автор темы
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: НЕофициальный FAQ AutoIt
« Ответ #17, Отправлен: Август 03, 2011, 04:49:37 »
Вопрос:
Как отправить GET-запрос?

Ответ:
  • С помощью InetGet/InetRead
  • С помощью WinHTTP через COM-интерфейс (http://msdn.microsoft.com/en-us/library/aa384106%28v=VS.85%29.aspx)
  • С помощью WinHttp.au3 (WinHTTP через DllCalls) (http://www.autoitscript.com/forum/topic/84133-winhttp-functions/)
  • С помощью TCP-функций AutoIt




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****

  • Автор темы
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: НЕофициальный FAQ AutoIt
« Ответ #18, Отправлен: Август 03, 2011, 04:52:15 »
Вопрос:
Как отправить POST-запрос?

Ответ:
  • С помощью WinHTTP через COM-интерфейс (http://msdn.microsoft.com/en-us/library/aa384106%28v=VS.85%29.aspx)
  • С помощью WinHttp.au3 (WinHTTP через DllCalls) (http://www.autoitscript.com/forum/topic/84133-winhttp-functions/)
  • С помощью TCP-функций AutoIt




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****

  • Автор темы
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: НЕофициальный FAQ AutoIt
« Ответ #19, Отправлен: Август 04, 2011, 01:41:07 »
Вопрос:
Как отправить имя и пароль для HTTP-аутентификации?

Ответ:
  • С помощью InetGet/InetRead
  • С помощью WinHTTP через COM-интерфейс (http://msdn.microsoft.com/en-us/library/aa384106%28v=VS.85%29.aspx)
  • С помощью WinHttp.au3 (WinHTTP через DllCalls) (http://www.autoitscript.com/forum/topic/84133-winhttp-functions/)
  • С помощью TCP-функций AutoIt




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****

  • Автор темы
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: НЕофициальный FAQ AutoIt
« Ответ #20, Отправлен: Февраль 01, 2012, 15:55:49 »
Вопрос:
Как заставить FileInstall работать с каталогами?

Ответ:
FileInstall предназначен строго для файлов.

Однако можно использовать следующий код, который в не скомпилированный скрипт добавит список FileInstall'ов с файлами указанного каталога:

Код: AutoIt [Выделить]
_FileDirInstall(@ScriptDir & '\Resources', @TempDir)

;===== YOUR SCRIPT CONTENT GOES HERE =====



;===== YOUR SCRIPT CONTENT GOES HERE =====


Func _FileDirInstall($sDirPath, $sDest, $nFlag = 0, $sMask = '*', $iSubDirs = 0, $sIncludeName = -1)
    Local $aList, $aMacros, $sMacros, $sData, $sReadScript, $hFile
   
    If @Compiled Then
        Return SetError(-1)
    EndIf
   
    If StringStripWS($sIncludeName, 8) = '' Then
        $sIncludeName = 'InstalledDir'
    ElseIf $sIncludeName = -1 Then
        $sIncludeName = 'InstalledDir_' & StringRegExpReplace($sDirPath, '^.*\\', '')
    EndIf
   
    $sIncludeName &= '.fdi'
   
    $aList = __FileSearch($sDirPath, $sMask, 1, $iSubDirs, 0)
   
    If @error Then
        Return SetError(1)
    EndIf
   
    $aMacros = _
        StringSplit( _
            'AppDataCommonDir|DesktopCommonDir|DocumentsCommonDir|FavoritesCommonDir|ProgramsCommonDir|StartMenuCommonDir|' & _
            'StartupCommonDir|AppDataDir|DesktopDir|MyDocumentsDir|FavoritesDir|ProgramsDir|StartMenuDir|StartupDir|UserProfileDir|' & _
            'HomeDrive|HomePath|HomeShare|ProgramFilesDir|CommonFilesDir|WindowsDir|SystemDir|TempDir', _
        '|')
   
    For $i = 1 To $aMacros[0]
        $sMacros = Execute('@' & $aMacros[$i])
       
        If $sDest = $sMacros Then
            $sDest = StringReplace($sDest, $sMacros, '@' & $aMacros[$i])
        EndIf
    Next
   
    For $i = 1 To $aList[0]
        If $iSubDirs = 1 Then
            $sData &= 'FileInstall("' & $aList[$i] & '", ' & $sDest & ' & "\' & StringRegExpReplace($aList[$i], '^.*\\', '') & '", ' & $nFlag & ')' & @CRLF
        Else
            $sData &= 'FileInstall("' & $sDirPath & '\' & $aList[$i] & '", ' & $sDest & ' & "\' & $aList[$i] & '", ' & $nFlag & ')' & @CRLF
        EndIf
    Next
   
    If $sData = '' Then
        Return SetError(2)
    EndIf
   
    $hFile = FileOpen(@ScriptDir & '\' & $sIncludeName, 2)
    FileWrite($hFile, '#include-once' & @CRLF & @CRLF & $sData)
    FileClose($hFile)
   
    $sReadScript = FileRead(@ScriptFullPath)
   
    If Not StringInStr($sReadScript, '#include "' & $sIncludeName & '"' & @CRLF) Then
        $hFile = FileOpen(@ScriptFullPath, 2)
        FileWrite($hFile, '#include "' & $sIncludeName & '"' & @CRLF & $sReadScript)
        FileClose($hFile)
    EndIf
   
    Return 1
EndFunc

Func __FileSearch($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
    Local $sOutBin, $sOut, $aOut, $sRead, $hDir, $sAttrib, $sFiles
   
    If Not StringInStr(FileGetAttrib($sPath), "D") Then
        Return SetError(1, 0, 0)
    EndIf
   
    If $iSubDir = 1 Then
        $sAttrib &= ' /S'
    EndIf
   
    If $iSort = 1 Then
        $sAttrib &= ' /O:N'
    EndIf
   
    Switch $iFlag
        Case 1
            $sAttrib &= ' /A-D'
        Case 2
            $sAttrib &= ' /AD'
        Case Else
            $sAttrib &= ' /A'
    EndSwitch
   
    $sOut = StringToBinary('0' & @CRLF, 2)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
    $aMasks = StringSplit($sFileMask, ';')
   
    For $i = 1 To $aMasks[0]
        If StringStripWS($aMasks[$i], 8) = "" Then
            ContinueLoop
        EndIf
       
        $sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'
       
        If $i < $aMasks[0] Then
            $sFiles &= ';'
        EndIf
    Next
   
    $hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
   
    While 1
        $sRead = StdoutRead($hDir, False, True)
       
        If @error Then
            ExitLoop
        EndIf
       
        If $sRead <> "" Then
            $sOut &= $sRead
        EndIf
    Wend
   
    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
   
    If @error Or UBound($aOut) < 2 Then
        Return SetError(2, 0, 0)
    EndIf
   
    $aOut[0] = UBound($aOut)-1
    Return $aOut
EndFunc

Запустите данный скрипт до компиляции.
Рядом с вашим скриптом появится файл «InstalledDir_ИмяУказаннойПапки.fdi», а в сам скрипт будет прописана строчка #include "InstalledDir_ИмяУказаннойПапки.fdi".





  Записан

CreatoR [?]

  • Администратор
  • *
  • *****

  • Автор темы
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: НЕофициальный FAQ AutoIt
« Ответ #21, Отправлен: Апрель 24, 2012, 14:33:38 »
Вопрос:
Почему лучше использовать BitOR для добавления значении констант (например в стилях GUI)?

Ответ:
При обычном сложении значении констант, мы получаем кашу из чисел. А при использовании BitOR, существующее значение в добавляемом числе, повторяться не будет (т.е не будет добавляться содержащееся число). Вот пример сравнения:

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$bUseBitOR = True ;Поставьте на False и увидите ошибку в стилизации GUI

$iStyles = $GUI_SS_DEFAULT_GUI + $WS_SIZEBOX

;Вторично пытаемся добавить стиль $WS_SIZEBOX (иногда это происходит если стили берутся к примеру из файла конфигурации)
If $bUseBitOR Then
    $iStyles = BitOR($iStyles, $WS_SIZEBOX)
Else
    $iStyles += $WS_SIZEBOX
EndIf

$hGUI = GUICreate("Test Script", 300, 200, -1, -1, $iStyles)
GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
Логотипы AutoIt
Графика и творчество в рамках AutoIt
CreatoR 12 4386 Последний ответ Август 12, 2010, 22:59:59
от Waik
AutoIt на википедии
Другие проекты/ресурсы по AutoIt
CreatoR 0 2820 Последний ответ Июль 22, 2009, 05:50:15
от CreatoR
 Закреплено  Официальный FAQ AutoIt
AutoIt для новичков
El Panda 16 16522 Последний ответ Сентябрь 15, 2009, 15:41:00
от El Panda
AutoIt Path Switcher - Переключение пути к папке AutoIt
Примеры и рабочие проекты
CreatoR 16 6261 Последний ответ Октябрь 16, 2010, 17:53:08
от CreatoR
Как заставить hotkeys для AutoIt работать только внутри GUI AutoIt?
AutoIt для новичков
Suppir 2 3544 Последний ответ Ноябрь 16, 2009, 09:13:26
от Suppir
Graphical AutoIt Debugger - Графический отладчик для AutoIt
Инструменты и помощь по AutoIt
CreatoR 13 7393 Последний ответ Август 27, 2011, 20:09:15
от Nero21
PHP и Autoit
AutoIt для новичков
planetasov 15 2697 Последний ответ Май 01, 2012, 22:32:34
от running-frag
Autoit на IE
AutoIt для новичков
crank 17 3462 Последний ответ Август 30, 2010, 19:08:34
от Guezt Gutsy
День тестировщика (неофициальный праздник)
Общение
Garrett 3 1014 Последний ответ Сентябрь 09, 2010, 21:22:34
от CreatoR
[Обсуждение] Русское сообщество AutoIt сливается с официальным проектом AutoIt
Общение
Viktor1703 30 596 Последний ответ Апрель 02, 2012, 03:44:53
от Garrett


Реклама

* Последние сообщения на форуме
post Re: [Мышь, клавиатура] Привязка клика по координатам к клавише
[Стол заказов] megatoxx Сегодня в 12:41:37
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:35:14
post Re: Защита исходного кода программы
[AutoIt для новичков] Ganibal95 Сегодня в 12:34:22
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:33:22
post Re: Защита исходного кода программы
[AutoIt для новичков] Ganibal95 Сегодня в 12:21:05
post Re: Проблема с циклами While
[AutoIt для новичков] Yashied Сегодня в 12:14:25
post Сглаживание рывков при передачи новых координат игрока по TCP/IP
[Общение] Ganibal95 Сегодня в 12:10:37
post Перенесено: Уроки программирования и автоматизации посредством AutoIt для чайников
[AutoIt для новичков] Yashied Сегодня в 12:09:28
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:09:05
post Проблема с циклами While
[AutoIt для новичков] Andeangl Сегодня в 11:03:15

* Пользователи онлайн
  • Dot Гостей: 106
  • Dot Скрыт: 2
  • Dot Пользователей: 30
  • Dot Пользователи Online: