Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


andry692,
Попробуйте, у меня работает.
читать дальше »
Код: Выделить весь код
Opt('MustDeclareVars', 1)

Local $s_PathSpark = @ProgramFilesDir & '\Spark\Spark.exe', _; полный путь к Spark.exe
        $s_User = @UserName, _; имя пользователя
        $s_Password = 'password', _; пароль
        $s_Server = 'server', _; сервер
        $f_SavePassword = True, _; сохранить пароль
        $f_Auto = True, _;автоматический вход
        $f_Enter = True; войти

Local $i_Pid, $h_Spark, $a_Client, $a_SavePassword, $a_Auto, $a_Enter, $i_OptMCM, $i_OptPCM, $h_Error

If Not StringRegExp(FileGetVersion($s_PathSpark), '^2\.6\.3') Then
    ; у других версий цвет может быть другой
    If MsgBox(65, 'Info', 'Тестировалось только с версией 2.6.3' & @LF & 'OK - продолжить.') = 2 Then Exit
EndIf
$i_Pid = Run($s_PathSpark)
If Not $i_Pid Then
    ConsoleWrite('Error Run Spark' & @LF)
    Exit 1
EndIf
$h_Spark = WinWait('[Title:Spark;Class:SunAwtFrame]', '', 3)
If Not $h_Spark Then
    ConsoleWrite('Error WinWait window Spark' & @LF)
    Exit 2
EndIf
BlockInput(1)
If Not _WinActivateToSend($h_Spark) Then
    ConsoleWrite('Error _WinActivateToSend window Spark' & @LF)
    BlockInput(0)
    Exit 3
EndIf
Send($s_User)
Send(@TAB)
Send($s_Password)
Send(@TAB)
Send($s_Server)
$a_Client = WinGetClientSize($h_Spark)
If @error Then
    ConsoleWrite('Error WinGetClientSize window Spark' & @LF)
    BlockInput(0)
    Exit 4
EndIf
$i_OptMCM = Opt('MouseCoordMode', 2)
$i_OptPCM = Opt('PixelCoordMode', 2)
If $f_SavePassword Then
    $a_SavePassword = PixelSearch($a_Client[0] / 3, $a_Client[1] / 2, $a_Client[0], $a_Client[1], 0xF4F4F1, 0, 2, $h_Spark)
    If @error Then
        ConsoleWrite('Error search сохранить пароль' & @LF)
    Else
        MouseMove($a_SavePassword[0], $a_SavePassword[1], 0); для отладки
;~         MouseClick('primary', $a_SavePassword[0], $a_SavePassword[1], 1, 0)
    EndIf
EndIf
Sleep(1000); для отладки
If $f_Auto Then
    $a_Auto = PixelSearch($a_Client[0], $a_Client[1], $a_Client[0] / 3, $a_Client[1] / 2, 0xF4F4F1, 0, 2, $h_Spark)
    If @error Then
        ConsoleWrite('Error search автоматический вход' & @LF)
    Else
        MouseMove($a_Auto[0], $a_Auto[1], 0); для отладки
;~         MouseClick('primary', $a_Auto[0], $a_Auto[1], 1, 0)
    EndIf
EndIf
Sleep(1000); для отладки
If $f_Enter Then
    $a_Enter = PixelSearch($a_Client[0], $a_Client[1], $a_Client[0] / 5, $a_Client[1] / 5, 0x82CBDA, 0, 1, $h_Spark)
    If @error Then
        ConsoleWrite('Error search войти' & @LF)
    Else
        MouseMove($a_Enter[0], $a_Enter[1], 0); для отладки
;~         MouseClick('primary', $a_Enter[0], $a_Enter[1], 1, 0)
    EndIf
EndIf
SendKeepActive('')
BlockInput(0)
Opt('MouseCoordMode', $i_OptMCM)
Opt('PixelCoordMode', $i_OptPCM)
$h_Error = WinWait('[Title:Login error;Class:SunAwtDialog]', '', 5)
If $h_Error Then
    ConsoleWrite('Error Can not connect' & @LF)
    WinClose($h_Error)
    WinClose($h_Spark)
    Exit 5
EndIf

Func _WinActivateToSend(ByRef $h_Wnd, $i_TimeOut = 3);3 sec
    If Not WinExists($h_Wnd) Then Return 0
    If Not WinActive($h_Wnd) Then WinActivate($h_Wnd)
    If Not WinWaitActive($h_Wnd, '', $i_TimeOut) Then Return 0
    If Not SendKeepActive($h_Wnd) Then Return 0
    Return 1
EndFunc   ;==>_WinActivateToSend

Последний раз редактировалось madmasles, 28-05-2014 в 10:39. Причина: исправление ошибок

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:55, 28-05-2014 | #6