Что нового

Автоматизация Ввод значений одного "из"

Dliner

Новичок
Сообщения
9
Репутация
0
Подскажите, при запуске скрипта, не происходит ввод значений 1го из. Происходит всё, кроме ввода логина пароля, эту команду будто пропускает. Как исправить?

Код:
BlockInput(1)
$hWnd = WinWait("[TITLE:Вход в Blizzard Battle.net]", "", 60)
If Not $hWnd Then
   MsgBox(4096, 'Сообщение', 'Battle.net Launcher не запущен')
EndIf
WinActivate("[TITLE:Вход в Blizzard Battle.net]")
MouseClick("left", 930, 470, 2, 0)
Sleep ( 1000 )
Send ( "{BS 20}" )
Sleep ( 10000 )
If $cmdline[0] > 0 Then
    Select 
        Case $cmdline[1] = "[email protected]"
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("d123")
        Case $cmdline[1] = "[email protected]"
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("B123")
    EndSelect
EndIf
Send("{ENTER}")
BlockInput(0)
ProcessWait("Overwatch.exe", 600)
ProcessWaitClose("Overwatch.exe")
ProcessClose("Battle.net.exe")
ProcessClose("Agent.exe")
ProcessClose("Battle.net Helper.exe")
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Так-то код верный...
Добавьте отладку. Посмотрите, что параметром приходит и приходит ли
Код:
If $cmdline[0] > 0 Then
    ConsoleWrite($cmdline[1] & @CRLF) ; <= отладка
    Select
        Case $cmdline[1] = "[email protected]"
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("d123")
        Case $cmdline[1] = "[email protected]"
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("B123")
        Case Else
            ConsoleWrite("Неизвестный параметр: " & $cmdline[1] & @CRLF) ; <= контролька
    EndSelect
Else
    ConsoleWrite("Параметр отсутствует" & @CRLF) ; <= отладка
EndIf

А вообще, проверку одной переменной на разные значения проще делать через Switch
Код:
Switch $cmdline[1]
    Case "[email protected]"
        ; действия
    Case "[email protected]"
        ; действия
    Case Else
        ConsoleWrite("Неизвестный параметр: " & $cmdline[1] & @CRLF) ; <= контролька
EndSwitch
 
Автор
Dliner

Dliner

Новичок
Сообщения
9
Репутация
0
Сообщение автоматически объединено:

Так-то код верный...
Добавьте отладку. Посмотрите, что параметром приходит и приходит ли
Код:
If $cmdline[0] > 0 Then
    ConsoleWrite($cmdline[1] & @CRLF) ; <= отладка
    Select
        Case $cmdline[1] = "[email protected]"
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("d123")
        Case $cmdline[1] = "[email protected]"
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("B123")
        Case Else
            ConsoleWrite("Неизвестный параметр: " & $cmdline[1] & @CRLF) ; <= контролька
    EndSelect
Else
    ConsoleWrite("Параметр отсутствует" & @CRLF) ; <= отладка
EndIf

А вообще, проверку одной переменной на разные значения проще делать через Switch
Код:
Switch $cmdline[1]
    Case "[email protected]"
        ; действия
    Case "[email protected]"
        ; действия
    Case Else
        ConsoleWrite("Неизвестный параметр: " & $cmdline[1] & @CRLF) ; <= контролька
EndSwitch
Пишет что параметр отсутствует =/
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Чтобы запустить скрипт с параметрами из SciTE, нужно через меню View - Parameters Shift+F8 вызвать одноимённый диалог, ввести параметры и нажать Set. Для удаления параметров - очистить поля.
 
Автор
Dliner

Dliner

Новичок
Сообщения
9
Репутация
0
Получилось, разобрался, спасибо.
Сообщение автоматически объединено:

Подскажите, как можно сделать, чтобы допустим на ПК №1 находящимся в 1й локальной сети запуская скрипт, вводились данные №1.
После чего, на ПК №2 в локальной сети вводились данные №2, т.к. данные №1 были уже введены.
Реально ли как-то сделать заморозку после ввода данных №1 например на 1 час?
Код:
BlockInput(1)
$hWnd = WinWait("[TITLE:Вход в Blizzard Battle.net]", "", 60)
If Not $hWnd Then
   MsgBox(4096, 'Сообщение', 'Battle.net Launcher не запущен')
EndIf
WinActivate("[TITLE:Вход в Blizzard Battle.net]")
MouseClick("left", 930, 470, 2, 0)
Sleep ( 1000 )
Send ( "{BS 20}" )
Sleep ( 10000 )
; Данные №1
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("d123")
; Данные №2
            Send("[email protected]")
            Sleep(1000)
            Send("{TAB}")
            Sleep(1000)
            Send("B123")
Send("{ENTER}")
BlockInput(0)
ProcessWait("Overwatch.exe", 600)
ProcessWaitClose("Overwatch.exe")
ProcessClose("Battle.net.exe")
ProcessClose("Agent.exe")
ProcessClose("Battle.net Helper.exe")
ProcessClose[/URL]("Battle.net.exe")
ProcessClose[/URL]("Agent.exe")
ProcessClose[/URL]("Battle.net Helper.exe")
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Автор
Dliner

Dliner

Новичок
Сообщения
9
Репутация
0
Хорошо.
Вопрос в следующем.
Возможно ли сделать так, чтобы после ввода данных №1 на них вешался кулдаун, например на 60 минут, чтобы при повторном запуске скрипта проверялось были ли введены данные №1 за последние 60 минут, если были введены, то вводились данные №2?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Сохраняйте дату/время в файл или в реестр и при запуске проверяйте разницу с текущей датой/временем:
Код:
FileWrite()
FileRead()
_DateDiff()
_NowCalc()
@MDAY @HOUR @MIN
 
Верх