|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36548 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать GTeam
Цитата:
#include <Inet.au3> $ExeFileToDownload = _INetGetSource("http://www.site.com/update.txt") $ExeFileToDownload = StringStripWS($ExeFileToDownload, 3) $ExeFileName = StringRegExpReplace($ExeFileToDownload, "^.*\\", "") $Ret = InetGet($ExeFileToDownload, @TempDir & "\" & $ExeFileName, 1, 0) If $Ret = 1 Then RunWait(@TempDir & "\" & $ExeFileName & ' /S') Но если поддерживается ключ /S, то нет особой необходимости. |
|
------- Отправлено: 06:22, 28-06-2007 | #111 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Просьба помочь разобраться с IE... функциями
Задача : 1. Открыть ВЕБ страницу в нужном месте и в нужном формате 2.Ввести в нее данные Этим скриптом страница открывается и данные вводятся (но в полном размере окна браузера): #include <IE.au3> $oIE = _IECreate ("http://www.google.com") $oForm = _IEFormGetCollection ($oIE, 0) $oQuery1 = _IEFormElementGetCollection ($oForm, 1) _IEFormElementSetValue ($oQuery1, "oszone") _IEFormSubmit ($oForm) #include <GUIConstants.au3> Opt("GUIOnEventMode", 1) $oIE = ObjCreate("Shell.Explorer.2") GUICreate( "Внедренная HTML-страница",640,480) $GUIActiveX=GUICtrlCreateObj( $oIE,0,0,640,480 ) GUISetOnEvent($GUI_EVENT_CLOSE,"closed") GUISetState () $oIE.navigate("www.google.com ") While 1 Sleep(1000) Wend Func closed() Exit EndFunc Видимо это связано с использованием обьектной переменной,в которых я не очень разбираюсь И еще один похожий вопрос : Можно ли управлять (размер,позизионирование ) системного окна типа окна вызываемого функцией FileOpenDialog или это возможно только для окон GUI ? Если можно просьба показать (у меня не получается) |
Отправлено: 09:14, 28-06-2007 | #112 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать gregaz
Цитата:
Задачка не так проста как кажется... Для чужих окон юзаем WinMove(), но если речь о системных окнах самого AutoIT, то ИМХО штатными средствами никак, так как на время активности системного окна выполнение скрипта прерывается и изменить параметры окна не представляется возможным... Тем не менее для некоторых системных окон можно написать API-аналог, частично решающий данную проблему... Например, удалось взять контроль над FileSelectFolder(), правда только в классическом исполнении - при запуске вызывается специальная функция, которая может изменить настройки этого окна. В примере меняется стартовый каталог, но аналогично на этапе инициализации можно управлять и другими параметрами. Думаю не составит труда по тому же принципу написать аналоги FileOpenDialog() и FileSaveDialog().... конечно, если в этом есть необходимость. |
|
Отправлено: 13:03, 28-06-2007 | #113 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Переделанная функция (взята у Smoke_N на офф. форуме ) _MsgBox() - Если текста для показа слишком много, то текст можно прокрутить и просмотреть (используется Edit-элемент, а для прокрутки есть две самопальные стрелочки ), окно MsgBox меняет размеры в соответствии с текстом и с разрешением экрана.
$Text = "" For $i = 1 To 50 $Text &= "Line " & $i & " Line " & $i & " Line " & $i & @CRLF Next _MsgBox(104, "Test", $Text) Func _MsgBox($mb_Icon, $mb_Title, $mb_Text, $mb_Time = '') Local $StrnLenText = MsgLongestString($mb_Text) Local $NumberOfLines = (UBound(StringSplit($mb_Text, @CRLF)) - 1) * 6.5 If (160 + $NumberOfLines) >= @DesktopHeight Then $NumberOfLines = @DesktopHeight - 200 Local $Button1Txt = "OK" Local $Button2Txt = "Cancel" Local $MsgValue = 0 Local $Timer = '' Local $ScrollLabel1 = -1, $ScrollLabel2 = -1 Local $iMsgBox = GUICreate($mb_Title, $StrnLenText + 190, 100 + $NumberOfLines, -1, -1, 0x00400000, 0x00000008) Local $Edit = GUICtrlCreateEdit($mb_Text, 60, 10, $StrnLenText + 105, 30 + $NumberOfLines, 64+128+2048+4, 0x990) GUICtrlCreateIcon(@SystemDir & "\User32.dll", $mb_Icon, 10, 10, 35, 35) $Button1 = GUICtrlCreateButton($Button1Txt, 30 + ($StrnLenText / 2), 45 + $NumberOfLines, 60 + StringLen($Button1Txt), 25) $Button2 = GUICtrlCreateButton($Button2Txt, 100 + ($StrnLenText / 2), 45 + $NumberOfLines, 60 + StringLen($Button2Txt), 25) If $NumberOfLines = (@DesktopHeight - 200) Then $ScrollLabel1 = GUICtrlCreateLabel("т", 40, ((100 + $NumberOfLines)/2)+20, 20) GUICtrlSetTip(-1, "Click here to scroll Down") GUICtrlSetFont(-1, 18, 600, 0, "Wingdings") $ScrollLabel2 = GUICtrlCreateLabel("с", 40, ((100 + $NumberOfLines)/2)-20, 20) GUICtrlSetTip(-1, "Click here to scroll UP") GUICtrlSetFont(-1, 18, 600, 0, "Wingdings") EndIf GUISetState() If $mb_Time <> 0 Then $Timer = TimerInit() While 1 $imsg = GUIGetMsg() Select Case $imsg = $Button1 $MsgValue = 6 ExitLoop Case $imsg = $Button2 $MsgValue = 7 ExitLoop Case $imsg = $ScrollLabel1 ControlSend($iMsgBox, "", $Edit, "{PgDn}") Case $imsg = $ScrollLabel2 ControlSend($iMsgBox, "", $Edit, "{PgUp}") Case $mb_Time <> 0 If TimerDiff($Timer) / 1000 >= $mb_Time Then ExitLoop EndSelect WEnd GUIDelete($iMsgBox) Return $MsgValue EndFunc Func MsgLongestString($sText) Local $Times = '' Local $sSplit = StringSplit($sText, @CRLF) If Not @error Then ArraySortByLen($sSplit) If StringLen($sSplit[1]) <= 100 Then $Times = 2.25 If StringLen($sSplit[1]) >= 101 And StringLen($sSplit[1]) <= 150 Then $Times = 2.5 If StringLen($sSplit[1]) >= 151 And StringLen($sSplit[1]) <= 201 Then $Times = 3 If StringLen($sSplit[1]) >= 202 Then $Times = 3.25 Return Round(StringLen($sSplit[1])*$Times) Else If StringLen($sText) <= 100 Then $Times = 2.25 If StringLen($sText) >= 101 And StringLen($sText) <= 150 Then $Times = 2.5 If StringLen($sText) >= 151 And StringLen($sText) <= 201 Then $Times = 3 If StringLen($sText) >= 202 Then $Times = 3.25 Return Round(StringLen($sText)*$Times) EndIf EndFunc Func ArraySortByLen(ByRef $nArray, $Start = 1) For $i = $Start To UBound($nArray) - 2 Local $SE = $i For $x = $i To UBound($nArray) - 1 If StringLen($nArray[$SE]) < StringLen($nArray[$x]) Then $SE = $x Next Local $HLD = $nArray[$i] $nArray[$i] = $nArray[$SE] $nArray[$SE] = $HLD Next EndFunc |
------- Отправлено: 17:01, 28-06-2007 | #114 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата:
Мне это надо было в порядке изучения возможностей Autoit А так понятно,что в принципе любой вопрос можно решить использованием того или другого языка |
|
Отправлено: 19:22, 28-06-2007 | #115 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 04:10, 02-07-2007 | #116 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать GTeam
Цитата:
Что она содержит? |
|
------- Отправлено: 05:08, 02-07-2007 | #117 |
Ветеран Сообщения: 565
|
Профиль | Сайт | Отправить PM | Цитировать как из скрипта узнать список всех работающих служб в их сокращенном английском названии?
т.е. обработка вывода net start не пойдет - там полные русские, и чтение раздела реестра SERVICES тоже - оттуда невозможно узнать, какие службы запущены. |
Отправлено: 12:15, 02-07-2007 | #118 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Dirk Diggler
Цитата:
$strComputer = "." $WMI=ObjGet("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") $colServices = $WMI.ExecQuery("Select * from Win32_Service") For $o in $colServices MsgBox (0,"Всего служб: " & $colServices.Count ,$o.Name) Next MsgBox(0, "Свойства:", GetClassProperty("root\cimv2","Win32_Service") ) Func GetClassProperty($strNameSpace,$strClass,$strComputer = ".") Local $ret $objClass = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & _ $strComputer & "\" & $strNameSpace & ":" & $strClass) For $objClassProperty In $objClass.Properties_ $ret=$ret & $objClassProperty.Name & @CRLF Next Return $ret EndFunc MsgBox(0,"Методы:", GetClassMethods("root\cimv2","Win32_Service") ) Func GetClassMethods($strNameSpace,$strClass,$strComputer = ".") Local $ret $objClass = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & _ $strComputer & "\" & $strNameSpace & ":" & $strClass) For $objClassMethod In $objClass.Methods_ $ret=$ret & $objClassMethod.Name & @CRLF Next Return $ret EndFunc ClipPut(ListMOF("root\cimv2","Win32_Service")) MsgBox(0,"","MOF-описание, скопировано в буфер обмена!") Func ListMOF($strNameSpace,$strClass,$strComputer = ".") Local Const $wbemFlagUseAmendedQualifiers = 0x20000 $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & _ $strComputer & "\" & $strNameSpace) $objClass = $objWMIService.Get($strClass, $wbemFlagUseAmendedQualifiers) $strMOF = $objClass.GetObjectText_ Return $strMOF EndFunc Если кто-то знает, пожалуйста подскажите... |
|
Отправлено: 13:44, 02-07-2007 | #119 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
msgbox, выдает верный урл |
||
Отправлено: 16:01, 02-07-2007 | #120 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|