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
|