Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Вставить в пустое поле в программу имя пользователя ПК (http://forum.oszone.net/showthread.php?t=282698)

andry692 26-05-2014 08:18 2355789

Вставить в пустое поле в программу имя пользователя ПК
 
Добрый день! Подскажите как можно в autoit используя макрос @username (либо другой способ), вставить в поле "имя пользователя" залогиненного на ПК, в программу Spark.

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

madmasles 27-05-2014 09:50 2356149

andry692,
Вам надо определить с помощью AutoIt v3 Window Info окно (заголовок и, желательно, класс), нужный элемент управления и, далее, использовать функции WinWait() и ControlSetText().

andry692 27-05-2014 12:43 2356217

madmasles, подскажите как это реализовать можно, запускаю:
run ("C:\Program Files\Spark\Spark.exe")
а дальше затрудняюсь(

madmasles, заголовок: Spark, класс: SunAwtFrame

madmasles 27-05-2014 15:29 2356307

andry692,
На этом окне нет элементов управления, сейчас нет времени, если никто не поможет, то завтра утром напишу скрипт.

andry692 27-05-2014 15:56 2356316

madmasles, спасибо

madmasles 28-05-2014 09:55 2356681

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


andry692 28-05-2014 10:12 2356686

madmasles, большое спасибо! У меня работает тоже)

madmasles 28-05-2014 10:26 2356693

andry692,
Я исправил код, в первом варианте ошибки были.

andry692 28-05-2014 10:56 2356708

madmasles, а не могли бы скинуть посмотреть?

madmasles 28-05-2014 11:01 2356712

Цитата:

Цитата andry692
а не могли бы скинуть посмотреть? »

Что?

andry692 28-05-2014 11:05 2356713

Я исправил код, в первом варианте ошибки были. »[/q]

madmasles 28-05-2014 11:08 2356715

Здесь уже исправленный код.

andry692 28-05-2014 12:17 2356747

madmasles, да он работает, я просто подумал что вы его изменили :)


Время: 20:55.

Время: 20:55.
© OSzone.net 2001-