Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


Сообщения: 36568
Благодарности: 6698


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).
Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).



Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


всем привет.
у меня тут такая проблемка возникла. Не могу понять как заставить программу считывать нажатую клавишу...
подскажите плз как начать обработку события.

пишу небольшой скриптик для сидюка.
кому интересно(вот исходник):

Код: Выделить весь код
CDTray("K:", "open") 
Sleep(500)
MsgBox(0,"insert disk","вставте диcк")
WinActivate("insert disk")
WinWaitClose("insert disk")
CDTray("K:","close")
MsgBox(4,"inf","Хотите посмотреть информацию о диске?")
WinActivate("inf")
$var=DriveGetFileSystem("K:")
MsgBox(0,"info","файловая система диска:"& $var)
WinActivate("info")
WinWaitClose("info")

$1= DriveGetLabel("K:")
msgbox(0,"info1","Заголовок диска:"& $1)
WinActivate("info1")
WinWaitClose("info1")
$2=DriveGetSerial("K:")
MsgBox(0,"info2","серийный номер диска:"& $2)
WinActivate("info2")
WinWaitClose("info2")
$3=DriveSpaceFree("K:")
msgbox(0,"info3","свободного места: "& $3 & " MB")
WinActivate("info3")
WinWaitClose("info3")
$4=DriveSpaceTotal("K:")
MsgBox(0,"info4","всего места на диске: " & $4 & " MB")
WinActivate("info4")

Последний раз редактировалось Sanja Alone, 15-07-2007 в 14:43. Причина: добавление тэга code


Отправлено: 16:35, 02-07-2007 | #121



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 565
Благодарности: 41

Профиль | Сайт | Отправить PM | Цитировать


как заставить контрол "метка"(Label) расширяться по мере смены в ней текста?

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 19:35, 02-07-2007 | #122


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не знаю, может и был вопрос...
Возможно ли с помощью AutoIT послать клик мыши в неактивное окно (возможно и вовсе не видное на экране (не свёрнутое, но закрытое другим))??? Если можно, то как???

Отправлено: 19:51, 02-07-2007 | #123


Аватара для ChVL

Старожил


Сообщения: 254
Благодарности: 38

Профиль | Отправить PM | Цитировать


Sandro Half-Dead
Всё, куда можно послать, Вам покажет программа AutoIt Window Info. Другого не дано.

Отправлено: 20:52, 02-07-2007 | #124


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


GTeam
Цитата:
msgbox, выдает верный урл
Моя вина, сори, замени 4-тую строку в примере на эту:

Код: Выделить весь код
$ExeFileName = StringRegExpReplace($ExeFileToDownload, "^.*/", "")
Я перепутал направление слешев, забыл что это урл в сети

trigun
Цитата:
как заставить программу считывать нажатую клавишу
Я так понял тебе нужно узнать что нажал юзер в MsgBox?
У тебя в примере скрипт ожидает закрытия окна MsgBox... но пока на экране виден MsgBox, скрипт останавливается, поэтому все функции после него будут запущены только после его закрытия.

См. справку по MsgBox(), эта команда возвращает значения, вот пример:

Код: Выделить весь код
$Ret = MsgBox(36, "Title", "Вы подтверждаете?")
If $Ret = 6 Then MsgBox(0, "", "Да, вы подтвердили :)")
If $Ret = 7 Then MsgBox(0, "", "Нет, вы не хотите подтверждать :)")

Dirk Diggler
Цитата:
как заставить контрол "метка"(Label) расширяться по мере смены в ней текста?
я как то на оф. форуме встречал подобну функцию (возвращает нужную длину для смены элемента основываясь на новом тексте), но к сожалению пока не могу найти где , как только найду отпишусь.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:10, 02-07-2007 | #125


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Diamond
Цитата:
не знаю как получить mof-описание для каждого метода или свойства по отдельности
может просто пропарсить текст?
Код: Выделить весь код
#include <array.au3>
_ArrayDisplay(GetObjDescriptions("root\cimv2","Win32_Service"),'Win32_Service')

Func GetObjDescriptions($strNameSpace, $strClass, $strComputer = ".")
    Local $objWMIService, $objClass, $strMOF, $array, $num, $out
    Local Const $wbemFlagUseAmendedQualifiers = 0x20000
    Local Const $regExp = '\s\[(?:\\\]|[^]])*?Description\("((?:\\"|[^"])*)"(?:\\\]|[^]])*\] \w+ (\w+)'

    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & _
         $strComputer & "\" & $strNameSpace)
    $objClass = $objWMIService.Get($strClass, $wbemFlagUseAmendedQualifiers)
    $strMOF = $objClass.GetObjectText_
    $array = StringRegExp($strMOF, $regExp, 3)
    $num = UBound($array)/2
    Dim $out[$num+1][2] = [[$num]]
    For $i=1 To $num
        $out[$i][0] = $array[$i*2-1]
        $out[$i][1] = $array[$i*2-2]
    Next
    Return $out
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:10, 03-07-2007 | #126


Ветеран


Сообщения: 565
Благодарности: 41

Профиль | Сайт | Отправить PM | Цитировать


Вот такую библиотеку накалякал. Кому пригодится - пользуйтесь. Брать здесь .

Код: Выделить весь код
Func _FileGetFileName($path)   ;  выделяет из полного пути и возвращает имя файла
Func _FileGetDirPath($path)   ;  выделяет из полного пути и возвращает имя директории
Func _GetDocumentsAndSettingsDir()	; возвращает полный путь к папке "Documents And Settings"
Func _GetProfilesPath()  ; возвращает массив строк с полными ключами к профилям пользователей этого компьютера
Func _LocalGroupExist($us)     ; Проверяет, существует ли ЛОКАЛЬНАЯ ГРУППА С ТАКИМ ИМЕНЕМ. возвращает ИСТИНУ/ЛОЖЬ
Func _LocalUserExist($us)	 ; Проверяет, существует ли ЛОКАЛЬНЫЙ ПОЛЬЗОВАТЕЛЬ С ТАКИМ ИМЕНЕМ. возвращает ИСТИНУ/ЛОЖЬ
Func _GetDomainOrWorkGroup()     ; ВЕРНЕТСЯ ИМЯ ДОМЕНА, если не в домене - то рабочей группы.
Func _GetWorkgroup()    ; ТОЛЬКО РАБОЧАЯ ГРУППА, ДЛЯ ДОМЕННОГО КОМПА ВЕРНЕТСЯ ПУСТАЯ СТРОКА
Func _JOINWORKGROUP($WG)	; вводит компьютер в Рабочую группу (имя передается параметром)
Func _ShareFolder($dir,$name, $comment = '')   ; создает общий ресурс.
Func _GetShareInfoByNumber($i)   ; Возвращает массив с инфой о шаре № $i или 0, если шар больше нет. В массиве по порядку ИМЯ, ПУТЬ, ТИП
Func _GetShareInfoByName($name)   ; Возвращает массив с инфой о шаре с данным именем или 0, если шар больше нет. В массиве по порядку ИМЯ, ПУТЬ, ТИП
Func _GetShareInfoByPath($path)   ; Возвращает массив с инфой о шаре данного каталога или 0, если шар больше нет. В массиве по порядку ИМЯ, ПУТЬ, ТИП
Func _NoActiveStaticIP()  ; возвращает истину/ложь. Если нет IP на рабочей, подключенной и т.п. карте
Func _AllNetworkDevicesDisabled()    ; возращает истину-ложь
Func _RunVBS($vbs)   ; запускает VBS-скрипт , переданный ему в кач-ве параметра.
Func _RenameComputer($name)	; переименовывает компьютер
Func _GetShortUserName($_user) ; возвращает короткое имя пользователя - т.е. для tega@office.local или OFFICE\tega результатом будет tega
Func _CreateLocalGroup($gn)	; создает локальную группу с указанным именем
Func _CreateLocalUser($us,$passw='')   ; создает локального пользователя с указанным именем и паролем
Func _ListLocalGroups($username)   ; Возвращает массив со списком локальных групп, членом которых является указанный пользователь
Func _JoinLocalgroup($us,$gr)    ; добавляет пользователя в указанную локальную группу.
Func _DomainUserInLocalGroup($UserName, $InGroup, $Domain='')    ; проверяет, является ли пользователь членом локальной группы
Func _GetStartedServicesAndDrivers()    ;  возвращает массив из имен запущенных сервисов и драйверов.
Func _GetStartedServices()    ;  возвращает массив из имен запущенных сервисов.
Func _GetStartedDrivers()    ;  возвращает массив из имен запущенных системных драйверов.
Func _HostIsOk($host_)  ; проверяет, пингуется ли хост. Возвр. истину-ложь
Func _TCPServiceIsOk($_addr,$_port=0); Проверяет порт путем установления к нему соединения.возращает истину-ложь . 
Func _UDPServiceIsOk($_addr,$_port=0) ; Проверяет порт путем установления к нему соединения.возращает истину-ложь . 
Func _GetDns(ByRef $_dns1,ByRef $_dns2)   ; заполняет переменные значениями и возвращает 0. В случае ошибки возвращает -1
Func _GetGateWay()  ; возвращает адрес шлюза по умолчанию
Func _GetIEProxy()   ; возвращает настройки прокси-сервера из Internet Explorer в виде строка "ip-адрес:порт"	
Func _StringIsIp($str)   ; проверяет, является ли строка ip-адресом. Возвр. истину-ложь
Func _StringIsEmpty($str) ; проверяет, является ли строка пустой. Возвр. истину-ложь
Func _HTTPget($url, $ProxyServer='', $ProxyUser = '' , $ProxyPass = '', $UseIntegratedSecurity = False)  ; возвращает текст, полученный методом get протокола HTTP. Устанавливает флаг ошибки @error=0 в случае успеха, -1 в случае неудачи.
Func _HTTPSetTimeOuts($tResolve = 30000,$tConnection = 30000,$tSendTimeout = 30000,$tReceive = 30000) ; устнавливает таймауты для HTTP-запроса

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 19:16, 03-07-2007 | #127


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Dirk Diggler
Цитата Dirk Diggler:
как заставить контрол "метка"(Label) расширяться по мере смены в ней текста?
Цитата Creat0R:
как только найду отпишусь.
Нашёл!


Вот пример использования:

Код: Выделить весь код
#include <GUIConstants.au3>
$text = "Text Label"

$hGui = GUICreate("Test Label Size")
 $Label_1 = GUICtrlCreateLabel($text, 20, 20)
GUICtrlSetFont(-1, 9, 400, 0, "Tahoma")

$Button = GUICtrlCreateButton("Change Label", 20, 300)

GUISetState()

      While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $Button
            $Text &= " and some more text, "
            GUICtrlSetData($Label_1, $Text)
            $TextLenght = _GetTextLabelWidth($Text, "Tahoma", 9)
            GUICtrlSetPos($Label_1, 20, 20, $TextLenght)
    EndSwitch
WEnd

Func _GetTextLabelWidth($s_WinText, $s_TextFont, $i_FontSize, $i_FontWeight = -1)
    Local Const $DEFAULT_CHARSET = 0 ; ANSI character set
    Local Const $OUT_CHARACTER_PRECIS = 2
    Local Const $CLIP_DEFAULT_PRECIS = 0
    Local Const $PROOF_QUALITY = 2
    Local Const $FIXED_PITCH = 1
    Local Const $RGN_XOR = 3
    Local Const $LOGPIXELSY = 90

    $h_WinTitle = "Get Label Width"
    If $i_FontWeight = "" Or $i_FontWeight = -1 Then $i_FontWeight = 600 ; default Font weight
    Local $h_GUI = GUICreate($h_WinTitle, 10, 10, -100, -100, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
    Local $hDC = DllCall("user32.dll", "int", "GetDC", "hwnd", $h_GUI)

    Local $intDeviceCap = DllCall("gdi32.dll", "long", "GetDeviceCaps", "int", $hDC[0], "long", $LOGPIXELSY)
    $intDeviceCap = $intDeviceCap[0]

    Local $intFontHeight = DllCall("kernel32.dll", "long", "MulDiv", "long", $i_FontSize, "long", $intDeviceCap, "long", 72)
    $intFontHeight = -$intFontHeight[0]

    Local $hMyFont = DllCall("gdi32.dll", "hwnd", "CreateFont", "int", $intFontHeight, _
            "int", 0, "int", 0, "int", 0, "int", $i_FontWeight, "int", 0, _
            "int", 0, "int", 0, "int", $DEFAULT_CHARSET, _
            "int", $OUT_CHARACTER_PRECIS, "int", $CLIP_DEFAULT_PRECIS, _
            "int", $PROOF_QUALITY, "int", $FIXED_PITCH, "str", $s_TextFont)
    DllCall("gdi32.dll", "hwnd", "SelectObject", "int", $hDC[0], "hwnd", $hMyFont[0])

    Local $res = DllStructCreate("int;int")

    Local $ret = DllCall("gdi32.dll", "int", "GetTextExtentPoint32", "int", $hDC[0], "str", $s_WinText, "long", StringLen($s_WinText), "ptr", DllStructGetPtr($res))

    Local $intLabelWidth = DllStructGetData($res,1)

    GUIDelete($h_GUI)
    Return $intLabelWidth
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:43, 04-07-2007 | #128


Пользователь


Сообщения: 135
Благодарности: 32

Профиль | Отправить PM | Цитировать


amel27
Цитата:
может просто пропарсить текст?
Потрясающе!!! Как раз то что мне и было нужно, даже больше! :UP:
Теперь я смогу написать gui для просмотра WMI - пространств имён и классов, которое (на мой взгляд) будет удобней всяких scriptomatic2 и подобных ему программ.
Огромное спасибо!

Отправлено: 05:05, 04-07-2007 | #129


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Dirk Diggler
Цитата:
Func _FileGetFileName($path)
Имхо, намного проще использовать RegExp:
Код: Выделить весь код
StringRegExpReplace($path, "^.*\\", "")
Цитата:
Func _FileGetDirPath($path)
Тоже самое и тут:
Код: Выделить весь код
StringRegExpReplace($Path, '\\[^\\]*$', '')
Цитата:
Func _StringIsEmpty($str)
А чем плоха встроенная функция StringIsSpace ($str)?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 09:50, 04-07-2007 | #130



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? DreDo Хочу все знать 4 01-12-2009 18:54
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. Vadikan AutoIt 1543 18-01-2009 10:46
[Архив - Часть 1.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.2] AutoIt скрипты Dirk Diggler AutoIt 505 02-12-2006 11:00
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход