Войти

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


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

amel27
21-05-2008, 07:24
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")

prodist
21-05-2008, 23:04
Так ведь в конце установки появляется кнопка Готово (она появляется и при удалении, но текст разный в, наверно, Edit'ах) )

*OM*
22-05-2008, 06:54
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. Но оно считывает все тело. Есть ли какая-то функция для поиска или надо ручками считывать и искать нужную строку?

И второй вопрос - данная функция поддерживает вроде как только ИЕ... для других браузеров ничего нету?

Котяра
22-05-2008, 19:52
Делаю... скринсейвер на AutoIt. Неполноценный, он просто выводит с трея баллуны типа "Работаем!". Опять вернулся к вопросу параметров командной строки для скомпилированного скрипта. Как известно, скринсейвер запускается параметров /s. Как сделать разной реакцию скрипта на запуск:
Rabotaem.exe /s и Rabotaem.exe. Ответ, пожалуйста, с примером и на русском языке :)

Creat0R
22-05-2008, 23:00
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
И все-таки скажите пожалуйста где скачать русскую справку, просмотрел всю тему но так и не нашел действующих ссылок.

Creat0R
23-05-2008, 00:37
petropulos, где скачать русскую справку »
Тут (http://www.autoitscript.com/autoit3/docs.shtml), правда устарела она немного.

Котяра
23-05-2008, 00:51
Creat0R, вопрос был конкретно про параметры командной строки...

хотя эта информация тоже полезна для меня

Вроде получается...

amel27
23-05-2008, 12:04
Не поможешь? Пытаюсь получить список расшаренных ресурсов компьютера »
примерно так:#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, нужно пробовать... анализ пикселей это крайний случай

amel27
23-05-2008, 12:21
Так ведь в конце установки появляется кнопка Готово »дык никто не мешает поставить ожидание типа WinWait("", "Готово") и затем проверить другие параметры окна, но если в процессе установки отказаться разве окно "готово" тоже появится?..

Maza Faka
23-05-2008, 13:54
примерно так: »
Вот спасибо! :) Буду разбираться.

Creat0R
23-05-2008, 15:41
Котяра, вопрос был конкретно про параметры командной строки...
Там приведены их описания, и пример использования. Я кстати и без этого узнал, сначала почти сам догадался, а только потом инфу в Googl'е и на оф. сайте нашёл. Проверить ключи очень просто - в скрипте всего одну строку прописать: MsgBox(0, "", $CmdLineRaw)
Скомпилировать скрипт, и переименовать *.exe в *.scr, и запускать (либо с меню функции заставки, либо прямым запуском).

Котяра
23-05-2008, 19:32
Creat0R, я про знаю, с какими параметрами запускается скринсейвер Windows. Я спрашивал, как менять реакцию скрипта на них. И понял: так (через эту переменную): $CmdLineRaw »

prodist
23-05-2008, 20:02
дык никто не мешает поставить ожидание типа WinWait("", "Готово") и затем проверить другие параметры окна, но если в процессе установки отказаться разве окно "готово" тоже появится?.. »
ну так я понимаю. вот и спрашиваю функцию.. WinWait - спасибо. А по какой функции узнать о завершении приложения (без разницы, как оно завершается)

Creat0R
23-05-2008, 20:47
prodist, какой функции узнать о завершении приложения »
ProcessWaitClose() ?




© OSzone.net 2001-2012