Задача такова: в 2-х филиалах проверять наличие файлов в определённых папках
и перекидывать их в центральный офис. Для этого в филиалах установлена программа
Ammyy (Free-версия) как служба в режиме "File Manager only".
Из центрального офиса вручную всё работает прекрасно. Но надо эти действия
проводить несколько раз в сутки. Для этого написан скрипт на Autoit и он
нормально отрабатывает. Но только при открытой сессии RDP. (В силу некоторых
причин скрипт должен работать обязательно на сервере, а там физически нет
монитора, т.е. вход на сервер - только по RDP).
Так вот, выяснилось, что если в начале скрипта поставить паузу, запустить
и выйти из RDP-сессии, то главное окно Ammyy открывается, а скрипт его не находит!
(Хэндл окна = 0) Затем команда WinGetPos не может определить координаты окна
и естественно всё на этом заканчивается. Причём окно активно, т.е. является
самым верхним из всех окон. Запускал скрипт из-под учётки администратора.
Вопрос: почему при закрытой RDP-сессии скрипт не находит главное окно приложения?
И можно ли это как-то победить?
Это текст скрипта:
Это содержимое файла-протокола при работе из RDP-сессии:
hWnd= 0x00000000000504A4 size= 44 44 hWnd1= 0x00000000000304F0 size1= 128 96
Т.е. видно, что и главное окно было найдено и следующее.
А это содержимое файла-протокола при работе без RDP-сессии:
hWnd= 0
Если кто сталкивался с такой проблемой, прошу помочь советом.
Спасибо.
и перекидывать их в центральный офис. Для этого в филиалах установлена программа
Ammyy (Free-версия) как служба в режиме "File Manager only".
Из центрального офиса вручную всё работает прекрасно. Но надо эти действия
проводить несколько раз в сутки. Для этого написан скрипт на Autoit и он
нормально отрабатывает. Но только при открытой сессии RDP. (В силу некоторых
причин скрипт должен работать обязательно на сервере, а там физически нет
монитора, т.е. вход на сервер - только по RDP).
Так вот, выяснилось, что если в начале скрипта поставить паузу, запустить
и выйти из RDP-сессии, то главное окно Ammyy открывается, а скрипт его не находит!
(Хэндл окна = 0) Затем команда WinGetPos не может определить координаты окна
и естественно всё на этом заканчивается. Причём окно активно, т.е. является
самым верхним из всех окон. Запускал скрипт из-под учётки администратора.
Вопрос: почему при закрытой RDP-сессии скрипт не находит главное окно приложения?
И можно ли это как-то победить?
Это текст скрипта:
Код:
Global $ID = 16813154
Global $titulFM = $ID & " - File Explorer"
Global $size[4]
Global $size1[4]
Global $hWnd
Global $hWnd1
Global $fout
Global $stroka
Sleep(60000) ;1 minuta
$fout = FileOpen ( "protocol.txt" ,1 )
;MsgBox(0,"fout=", $fout, 5)
;Opt("GUIOnEventMode", 1)
Opt("WindowTitleMatchMode",3)
Run("AA_v3.exe")
Sleep (5000)
$hWnd = WinWaitActive("Ammyy Admin v3.0 - Free", "", 10)
FileWrite($fout, "hWnd= " & $hWnd & " ")
$size = WinGetPos($hWnd)
FileWrite($fout, " size= " & $size[0] & " " & $size[1] & " ")
; MsgBox(0, "Active window stats (x,y,width,height):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3])
; MsgBox (0, "hWnd=", $hWnd, 5)
MouseMove ( $size[0]+400, $size[1]+130, 100 ) ; "ID of client"
MouseClick ( "left" )
Sleep(2000)
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send("{BS}")
Send($ID)
; Send("{Enter}")
MouseMove ( $size[0]+350, $size[1]+240, 100 ) ; "connect"
MouseClick ( "left" )
; ControlClick ("Ammyy Admin v3.0 - Free", "", 1507 )
Sleep (5000)
$hWnd1 = WinWaitActive($titulFM, "", 10)
FileWrite($fout, "hWnd1= " & $hWnd1 & " ")
$size1 = WinGetPos($hWnd1)
FileWrite($fout, " size1= " & $size1[0] & " " & $size1[1] & " ")
FileClose($fout)
Это содержимое файла-протокола при работе из RDP-сессии:
hWnd= 0x00000000000504A4 size= 44 44 hWnd1= 0x00000000000304F0 size1= 128 96
Т.е. видно, что и главное окно было найдено и следующее.
А это содержимое файла-протокола при работе без RDP-сессии:
hWnd= 0
Если кто сталкивался с такой проблемой, прошу помочь советом.
Спасибо.