Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
SvetlanaK, что можно попробовать:
- поставить Sleep(100) после каждой Control-команды;
- вместо ControlSend использовать ControlSetText;
- проверять успешность выполнения каждой команды via ControlGetFocus, ControlGetText;
- использовать ф-ции отладки TrayIconDebug, _Debug* для локализации сбоев в работе скрипта.
prodist
способ определения успешной или неуспешной установки у каждого приложения свой - к примеру, проверить наличие EXE-файла в определенном каталоге... В общем случае, вычислять какие там кнопки жал пользователь при установке бессмысленно - попытаться можно, но толку от этого мало... он мог просто не согласиться с лицензионным соглашением или передумать уже в процессе установки на любом шаге :)
Maza Faka
21-05-2008, 12:56
amel27
Не поможешь? Пытаюсь получить список расшаренных ресурсов компьютера:
$SHARE_INFO_0 = DllStructCreate("wchar[256]")
$ElementCount = DllStructCreate("int")
$aRet = DllCall("netapi32.dll", "int", "NetShareEnum", "wstr", "", "dword", 0, "ptr", DllStructGetPtr($SHARE_INFO_0), _
"dword", DllStructGetSize($SHARE_INFO_0), "ptr", DllStructGetPtr($ElementCount), "ptr*", 0, "ptr", 0)
ConsoleWrite("Resource name = " & DllStructGetData($SHARE_INFO_0, 1) & @LF)
ConsoleWrite("Elements count = " & DllStructGetData($ElementCount, 1) & @LF)
DllCall("netapi32.dll", "int", "NetApiBufferFree", "ptr", DllStructGetPtr($SHARE_INFO_0))
Корректно получаю только количество расшаренных ресурсов :(
SvetlanaK
21-05-2008, 13:37
amel27, спасибо, стала пробовать и случайно заметила, что команды MouseClick и ControlClick имеют разный интервал времения выполненияз, и если стоит так
MouseClick (...)
ControlClick (...)
то ПЕРВОЙ выполняется ControlClick (...), а уж потом только MouseClick (...), что вызвало путаницу в последовательности действий.
а вот еще по ходу дела вопросик, там попадается окно с чекбоксами, где ставятся галочки, как бы моему скрипту "увидеть", стоят они или не стоят? на ум приходит только анализировать пикселы в этом участке, поскоку по аи.инфо можно только увидеть изменение цвета в квадратике. может еще какие идеи есть? буду благодарна за любой совет.
Maza Faka
21-05-2008, 14:04
там попадается окно с чекбоксами, где ставятся галочки, как бы моему скрипту "увидеть", стоят они или не стоят? »
ControlCommand("Title", "", "ControlID", "IsChecked")
Так ведь в конце установки появляется кнопка Готово (она появляется и при удалении, но текст разный в, наверно, Edit'ах) )
Maza Faka Спасибо за помощь и быстрый ответ ! :ninja: Я подумал и взял вариант Creat0R'а он немного короче и AI код мне поближе чем WIN API (недорос наверное я до него =) )
P/S: ОМ и мир всем.
TERMINAL
22-05-2008, 11:10
Возможно ли с помощью скрипта узнать серийный номер и модель жёсткого диска и возможно ли это потом с помощью скрипта записать на диск?
DedJager
22-05-2008, 16:52
Как прочитать текст с текущей страницы браузера? Т.е где на странице есть текст вида "BlaBlaBla: $num" нужно получить это самое num. Единственное что нашел это _IEBodyReadHTML. Но оно считывает все тело. Есть ли какая-то функция для поиска или надо ручками считывать и искать нужную строку?
И второй вопрос - данная функция поддерживает вроде как только ИЕ... для других браузеров ничего нету?
Делаю... скринсейвер на AutoIt. Неполноценный, он просто выводит с трея баллуны типа "Работаем!". Опять вернулся к вопросу параметров командной строки для скомпилированного скрипта. Как известно, скринсейвер запускается параметров /s. Как сделать разной реакцию скрипта на запуск:
Rabotaem.exe /s и Rabotaem.exe. Ответ, пожалуйста, с примером и на русском языке :)
DedJager,
на странице есть текст вида "BlaBlaBla: $num" нужно получить это самое num »
Примерно так:
$Html = _INetGetSource("http://some_web-site.com/some_page.html")
$sText = StringRegExpReplace($Html, '(?i).*BlaBlaBla: \$(.*) ', '\1')
Котяра,
скринсейвер на AutoIt »
Не на русском, но тут (http://www.autoitscript.com/forum/index.php?showtopic=58249) я привёл инфу о том как можно сделать самому полноценную заставку, плюс пример для заставки Matrix ;).
petropulos
23-05-2008, 00:11
И все-таки скажите пожалуйста где скачать русскую справку, просмотрел всю тему но так и не нашел действующих ссылок.
petropulos, где скачать русскую справку »
Тут (http://www.autoitscript.com/autoit3/docs.shtml), правда устарела она немного.
Creat0R, вопрос был конкретно про параметры командной строки...
хотя эта информация тоже полезна для меня
Вроде получается...
Не поможешь? Пытаюсь получить список расшаренных ресурсов компьютера »
примерно так:#include <array.au3>
$a = _NetGetShareList("")
_ArrayDisplay($a)
Func _NetGetShareList($sComputer)
Local $EntriesRead = DllStructCreate("int")
Local $TotalEntries = DllStructCreate("int")
Local $pBuffer = DllStructCreate("ptr"), $tBuffer
$aRet = DllCall("netapi32.dll", "int", "NetShareEnum", _
"wstr", $sComputer, _
"dword", 0, _
"ptr", DllStructGetPtr($pBuffer), _
"dword", -1, _
"ptr", DllStructGetPtr($EntriesRead), _
"ptr", DllStructGetPtr($TotalEntries), _
"ptr", 0)
If $aRet[0] Then Return SetError(1, $aRet[0], 0)
$EntriesRead = DllStructGetData($EntriesRead, 1)
Local $aRes[$EntriesRead+1]=[$EntriesRead]
Local $SHARE_INFO_0 = DllStructCreate("ptr["& $EntriesRead &"]", DllStructGetData($pBuffer,1))
For $i=1 To $EntriesRead
$tBuffer = DllStructCreate("wchar[256]", DllStructGetData($SHARE_INFO_0, 1, $i))
$aRes[$i] = DllStructGetData($tBuffer, 1)
Next
DllCall("netapi32.dll", "int", "NetApiBufferFree", "ptr", DllStructGetData($pBuffer,1))
Return $aRes
EndFunc
SvetlanaK
там попадается окно с чекбоксами »все зависит от контрола - точнее от того, насколько он совместим со стандартными от Microsoft, нужно пробовать... анализ пикселей это крайний случай
Так ведь в конце установки появляется кнопка Готово »дык никто не мешает поставить ожидание типа WinWait("", "Готово") и затем проверить другие параметры окна, но если в процессе установки отказаться разве окно "готово" тоже появится?..
Maza Faka
23-05-2008, 13:54
примерно так: »
Вот спасибо! :) Буду разбираться.
Котяра, вопрос был конкретно про параметры командной строки...
Там приведены их описания, и пример использования. Я кстати и без этого узнал, сначала почти сам догадался, а только потом инфу в Googl'е и на оф. сайте нашёл. Проверить ключи очень просто - в скрипте всего одну строку прописать: MsgBox(0, "", $CmdLineRaw)
Скомпилировать скрипт, и переименовать *.exe в *.scr, и запускать (либо с меню функции заставки, либо прямым запуском).
Creat0R, я про знаю, с какими параметрами запускается скринсейвер Windows. Я спрашивал, как менять реакцию скрипта на них. И понял: так (через эту переменную): $CmdLineRaw »
дык никто не мешает поставить ожидание типа WinWait("", "Готово") и затем проверить другие параметры окна, но если в процессе установки отказаться разве окно "готово" тоже появится?.. »
ну так я понимаю. вот и спрашиваю функцию.. WinWait - спасибо. А по какой функции узнать о завершении приложения (без разницы, как оно завершается)
prodist, какой функции узнать о завершении приложения »
ProcessWaitClose() ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.