[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Ответить
 • Просмотры: 23
Аватара пользователя
6757439

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение 6757439 »

Цитата araneon:



Спасибо огромное что отозвались на мой вопрос. Но WinActivate("заголовок нужного окна", "") непомогает, почемуто окно нестановится активным, заголовок окна смотрел в AutoIt v3 Window Info в строке >>>>Window

Код: Выделить всё

ControlSend ( "title", "text", controlID, "string" [, flag] )
Аватара пользователя
araneon

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение araneon »

Незнаю печему оно нестановится активным, AutoIt Window Info показывает что заголовок "Setup - FOX*Video Converter" но выход из положения нашолся в таком виде ?Код?WinWait("Setup - FOX Video Converter","Setup has finished installing ")?ControlClick("Setup - FOX Video Converter","Setup has finished installing ","TNewCheckListBox1")
Аватара пользователя
araneon

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение araneon »

Здраствуйте ,

Помогите плиз реализовать - нужно если интернет работает больше часа по времени, отключить интернет и проверить отключился ли ... интернет адсл , при отключении надо чтото вроде длл метода так как rasdial "название подключения" /disconnect почемуто невсегда срабатывает

заранее спасибо.
Аватара пользователя
Maza Faka

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение Maza Faka »

Babullika

Незнаю, как сработает с ADSL подключением, но с dialup работает:

Код: Выделить всё

While 1
    If Int(_RASConStat(4) / 1000 / 60) >= 60 Then
        $hRASConn = _RasEnumConnections()
        If Not @error Then _RasHangUp($hRASConn)
        Exit
    EndIf
    Sleep(1000)
WEnd
; #FUNCTION# ====================================================================================================================
; $iFlag:
; 1 - The number of bytes transmitted through this connection or link.
; 2 - The number of bytes received through this connection or link.
; 3 - Total
; 4 - The amount of time, in milliseconds, that the connection or link has been connected.
Func _RASConStat($sFlags = 1)
    Local $hRASConn = _RasEnumConnections()
    If @error Then Return SetError(1, 0, 0)
    $tRAS_STATS = DllStructCreate("dword dwSize;dword dwBytesXmited;dword dwBytesRcved;dword dwFramesXmited;" & _
                                  "dword dwFramesRcved;dword dwCrcErr;dword dwTimeoutErr;dword dwAlignmentErr;" & _
                                  "dword dwHardwareOverrunErr;dword dwFramingErr;dword dwBufferOverrunErr;" & _
                                  "dword dwCompressionRatioIn;dword dwCompressionRatioOut;dword dwBps;dword dwConnectDuration")
    DllStructSetData($tRAS_STATS, "dwSize", DllStructGetSize($tRAS_STATS))
    $aRet = DllCall("rasapi32.dll", "int", "RasGetConnectionStatistics", _
                                            "hwnd", $hRASConn, _
                                            "ptr", DllStructGetPtr($tRAS_STATS))
    If $aRet[0] Then Return SetError(2, 0, 0)
    Local $iResult = 0
    Switch $sFlags
        Case 1
            $iResult = DllStructGetData($tRAS_STATS, "dwBytesXmited")
        Case 2
            $iResult = DllStructGetData($tRAS_STATS, "dwBytesRcved")
        Case 3
            $iResult = DllStructGetData($tRAS_STATS, "dwBytesXmited") + DllStructGetData($tRAS_STATS, "dwBytesRcved")
        Case 4
            $iResult = DllStructGetData($tRAS_STATS, "dwConnectDuration")
    EndSwitch
    Return $iResult
EndFunc   ;==>_RASConStat
Func _RasEnumConnections()
    Local Const $MAX_PATH = 260
    Local Const $RAS_MaxDeviceType = 16
    Local Const $RAS_MaxEntryName = 256
    Local Const $RAS_MaxDeviceName = 128
    Local $tRASCONN, $iCntByte, $iCntConn, $aRet
    $tRASCONN = DllStructCreate("dword dwSize;hwnd hRasConn;char szEntryName[" & $RAS_MaxEntryName + 1 & "];" & _
                                "char szDeviceType[" & $RAS_MaxDeviceType + 1 & "];" & _
                                "char szDeviceName[" & $RAS_MaxDeviceName + 1 & "];" & _
                                "char szPhonebook[" & $MAX_PATH & "];" & _
                                "dword dwSubEntry;byte guidEntry[16];dword dwFlags;byte luid[8]")
    DllStructSetData($tRASCONN, "dwSize", DllStructGetSize($tRASCONN))
    $iCntByte = DllStructCreate("dword")
    $iCntConn = DllStructCreate("dword")
    DllStructSetData($iCntByte, 1, DllStructGetSize($tRASCONN))
    $aRet = DllCall("rasapi32.dll", "int", "RasEnumConnections", _
                                            "ptr", DllStructGetPtr($tRASCONN), _
                                            "ptr", DllStructGetPtr($iCntByte), _
                                            "ptr", DllStructGetPtr($iCntConn))
    If $aRet[0] Then Return SetError(1, $aRet[0], -1)
    If DllStructGetData($iCntConn, 1) < 1 Then Return SetError(2, 0, 0) ;Error: not opened connections
    Return DllStructGetData($tRASCONN, "hRasConn")
EndFunc   ;==>_RasEnumConnections
Func _RasHangUp($HRASCONN)
    $aRet = DllCall("Rasapi32.dll", "int", "RasHangUp", _
                                            "hwnd", $HRASCONN)
    Return $aRet[0]
EndFunc   ;==>_RasHangUp
Аватара пользователя
CrazyNNM

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение CrazyNNM »

Цитата Creat0R:



Неужели вы серъёзно ожидаете получить помощь на основе того что вы запостили?
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Не очень понял чего именно недостаточно, ну если хотите подробностей, то пожалуйста...

Не размещал тут свой код, чтобы не забивать голову тому, кто попробует...

Сам скрипт:



Код:

Код: Выделить всё

Run("\\srv\soft\Symantec\updat32.exe")
WinWait("SARC Intelligent Updater","&Да")
WinActivate("SARC Intelligent Updater","&Да")
If WinActive("SARC Intelligent Updater","&Да") Then
	ControlClick("SARC Intelligent Updater","&Да","[ID:6]")
EndIf
WinWait("SARC Intelligent Updater","OK")
WinActivate("SARC Intelligent Updater","OK")
If WinActive("SARC Intelligent Updater","OK") Then
	ControlClick("SARC Intelligent Updater","ОК","[ID:2]")
EndIf
Exit

SARC Intellegent Updater
, собственно, можно скачать с сайта Symantec! Меня интересует версия под Symantec AntiVirus 10.2 Corporate Edition Client.



Глюк начинается на строке WinWait("SARC Intelligent Updater","OK") т.к. это окно просто не удается отловить, пробовал поразному, но моих познаний в AutoIt, видимо, недостаточно...
Аватара пользователя
Creat0R

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение Creat0R »

morres,
Цитата morres:



Не очень понял чего именно недостаточно, ну если хотите подробностей, то пожалуйста...
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Всегда нужны подробности, читать мысли (через интернет тем более) ещё никто не научился.




Цитата morres:



Не размещал тут свой код, чтобы не забивать голову тому, кто попробует
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Попробует что? нет логики в этом, наоборот, нужно разместиь тестовый скрипт чтобы можно было что-то попробовать Изображение




Цитата morres:



Глюк начинается на строке WinWait("SARC Intelligent Updater","OK") т.к. это окно просто не удается отловить
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Что имеется в виду под «Отловить»? Скрипт останавливается на этой строчке, или проходит дальше не замечая окна (не нажимая кнопки)?

Если второе, то видимо проблема в том, что окно создаётся немного раньше, но оно просто скрыто, тут можно попробовать ждать видимости окна:





Код:

Код: Выделить всё

_WinWaitVisible("SARC Intelligent Updater", "OK")
Func _WinWaitVisible($sTitle, $sText, $iTime=0)
    Local $iTimer = -1
    If $iTime > 0 Then $iTimer = TimerInit()
    While Not BitAND(WinGetState($sTitle, $sText), 2)
        Sleep(10)
        If $iTime > 0 And (TimerDiff($iTimer) / 1000) >= $iTime Then ExitLoop
    WEnd
    Return Number(BitAND(WinGetState($sTitle, $sText), 2) = 2)
EndFunc
Аватара пользователя
Creat0R

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение Creat0R »

Новая версия утилиты
Au3ToPost 1.8
!

(Архив включает откомпилированную версию).



Список изменении:




Цитата:



v1.8 [05.12.2008]

+ Добавлено распознавание стиля - стиль отвечающий за блочный комментарии (#CS...#CE).

+ Добавлено распознавание стиля - стиль отвечающий за т.н аббревиатуры, например при вводе cw.

+ Добавлена поддержка преобразования выделенной части кода.

+ Добавлена опция предпросмотра результата.

+ Добавлена опция "Поверх всех окон" в главном меню.



* Опять предотвращена высокая загрузка ЦП, на этот раз загрузка была при снятой птичке "Ввести код вручную".

* Теперь при выборе обрабатываемого файла будет осуществляться проверка на его существование Изображение

* Переделан метод использования горячих клавиш (меньше нагрузки на главный цикл).

* Также теперь проверка на ввод данных (путь к файлу обработки и поле с кодом) производится вне цикла (WM_COMMAND).

* Теперь путь к SciTE в первую очередь определяется относительно папке AutoIt.

* Изменён принцип работы быстрого режима. По нажатию на со-вующий пункт меню главное окно прячется в трей, и программа работает в тихом режиме (обработка либо по хоткей CTRL + SHIFT + A, либо из пункта меню иконки в трее.

* Исправлена потенциальная ошибка при интеграции в SciTE - путь к папке AutoIt неверный если скрипт откомпилирован.

* Поправки в отображений некоторых элементов интерфейса.

* Код немного переписан в соответствии с последней версией AutoIt (3.2.12.1). Для совместимости с более старыми версиями раскомментируйте строчки начинающиеся с ";~ ...".

* Размеры GUI теперь ограничены.

* орфографические поправки (в коде и в Readme файле).

* Косметические поправки в коде.
Аватара пользователя
Creat0R

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение Creat0R »

В принципе, можно было бы указать постоянный разделитель, но он должен быть опционально задан в параметре. Т.е вся строка может содержать параметры только одного характера, но нужно сделать так, чтобы функцию можно было применять на разные строки. Вот что у меня (не) получилось:





Код:

Код: Выделить всё

If $CmdLine[0] = 0 Then $CmdLineRaw = '/Param="1" /File=C:\Program Files\Some App\File - Name.txt /URL="http://google.com"'
MsgBox(64, "", _
    _GetCmdLine($CmdLineRaw, "/Param=") & @LF & _
    _GetCmdLine($CmdLineRaw, "/URL=") & @LF & _
    _GetCmdLine($CmdLineRaw, "/File="))
Func _GetCmdLine($sCmdLine, $sArgument, $sCmd_Delim='/.*=')
    If Not StringInStr($sCmdLine, $sArgument) Then Return SetError(1, 0, "")
    Local $sRegExp = '(?i)^.*?\Q' & $sArgument & '\E\s*(?:(?:"([^"]*)")|([^"]+)' & $sCmd_Delim & ').*$'
    Local $sRetCmd = StringRegExpReplace($sCmdLine, $sRegExp, '\1\2')
    If $sRetCmd = $sCmdLine Then Return SetError(2, 0, "")
    Return StringStripWS($sRetCmd, 3)
EndFunc

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



P.S

$sCmd_Delim это и есть указатель на резделитель, т.е в одной строке могут быть только такие разделители: /Param=, или только такие: -Param=, или такие например: -Param:, но не смешанные (как я задумывал в начале).
Аватара пользователя
amel27

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение amel27 »

morres


Цитата:



ну если хотите подробностей, то пожалуйста
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




вот это другое дело Изображение итак, по порядку:



- окна "&Да" и "ОК" отличаются не только текстом, но и заголовком (там два пробела, а не один);

- нелогично активировать окно для ControlClick (это обычно практикуют для Send);

- ControlClick срабатывает не всегда (?), но можно поставить проверочный цикл:



Код:

Код: Выделить всё

Run("\\srv\soft\Symantec\updat32.exe")
WinWait("SARC Intelligent Updater","&Да")
While WinExists("SARC Intelligent Updater","&Да")
    Sleep(200)
    ControlClick("SARC Intelligent Updater","&Да","Button1")
WEnd
WinWait("SARC  Intelligent Updater","ОК")
While WinExists("SARC  Intelligent Updater","ОК")
    Sleep(200)
    ControlClick("SARC  Intelligent Updater","ОК","Button1")
WEnd
Аватара пользователя
kronic

Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Сообщение kronic »

Цитата amel27:



- ControlClick срабатывает не всегда (?), но можно поставить проверочный цикл:
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




он не отрабатывает в основном, когда окно не успевает подгрузиться

тобишь, окно появилось, кнопка уже есть, но она не активна, скрипт по ней кликает и ничего не происходит. скрипт думает, что все прошло отлично)))

насчет условного цикла, это вроде как, самое рациональное решение))
Ответить

Вернуться в «AutoIt»