Что нового

Автоматизация Guard Light

GreyOne

Новичок
Сообщения
3
Репутация
0
Добрый День
я не знаю куда уже копать прошу вас помочь есть программа СКД Guard Light
код работает и выполняет функции но не работает на RDP сервере под администратором через планировщик задач
exe показывает что запущен и не чего не происходит

Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPI.au3>
#include <Date.au3>


AutoItSetOption ('MouseCoordMode', 0)

Run("C:\Program Files (x86)\RF Enabled\Guard Light\GuardLight.exe")

WinWaitActive("Guard Light", "Сегодня")

ControlClick("Guard Light", "Сегодня", "TButton5")

WinWaitActive("Guard Light - Отчеты")

MouseClick("primary", 440, 90, 2, 0)

MouseClick("primary", 440, 90, 2, 0)
MouseClick("primary", 436, 105, 2, 0)

MouseClick("secondary", 705, 228, 1, 0)

MouseClick("primary", 733, 240, 1, 0)

WinWaitActive("Книга1 - Excel")

; Получаем дескриптор окна Excel
Local $hWnd = WinGetHandle("Книга1 - Excel")

; Если окно не найдено, то выходим
If Not $hWnd Then
    MsgBox(0, "Ошибка", "Окно Excel не найдено.")
    Exit
EndIf

; Активируем окно Excel
WinActivate($hWnd)

; Получаем текущую дату
Local $sCurrentDate = @YEAR & @MON & @MDAY

; Имитируем нажатие клавиши Ctrl + S для сохранения
Send("{F12}")

; Дожидаемся появления диалога "Сохранить как"
WinWaitActive("Сохранение документа")

; Указываем путь для сохранения
Local $sSavePath = "D:\Учет раб времени\" & $sCurrentDate & "_.xlsx"

ControlSetText("Сохранение документа", "", "Edit1", $sSavePath)

; Нажимаем "Сохранить"
ControlClick("Сохранение документа", "Сохранить", "Button7")

; Дожидаемся, пока файл будет сохранен, и закрываем окно "Сохранить как"
WinWaitClose("Сохранение документа")

; Закрываем приложение Excel
WinClose($hWnd)


ControlClick("Guard Light - Отчеты", "Закрыть", "TButton1")
 

InnI

AutoIT Гуру
Сообщения
4,927
Репутация
1,434
Известная проблема.
При сворачивании окна RDP - перестают активироваться окна на удалённом компьютере.
При отключении от сервера происходит блокировка сессии (попробуйте на локальном компьютере запустить скрипт и нажать Win+L).
Решения разные - от отказа от RDP до замены функций. Поищите на форуме подходящее вам.
 
Автор
G

GreyOne

Новичок
Сообщения
3
Репутация
0
Известная проблема.
При сворачивании окна RDP - перестают активироваться окна на удалённом компьютере.
При отключении от сервера происходит блокировка сессии (попробуйте на локальном компьютере запустить скрипт и нажать Win+L).
Решения разные - от отказа от RDP до замены функций. Поищите на форуме подходящее вам.
я искал к сожалению не нашел
даже уже chatGPT спрашивал
к сожалению я не могу отказаться от RDP там стоит программа и перенести ее не могу как ей пользуются пользователи
самое интересное что когда я компилирую код в exe он работает если запускать ручками а если добавить его в планировщик задач и запустить сразу же он висит как процесс и не работает
 

All2khoff

Продвинутый
Сообщения
363
Репутация
66
Можно попробовать сделать "автологин" для конкретной УЗ на сервере, таким образом мы открываем "консольную" сессию и скрипт вполне может работать...
а подключаться к данной сессии можно будет посредством Radmin или иных аналогичных приложений.
по ссылке страница с инструкцией, возможно потребуется отключение требования Alt+CTRL+Del
 

InnI

AutoIT Гуру
Сообщения
4,927
Репутация
1,434
Автор
G

GreyOne

Новичок
Сообщения
3
Репутация
0
Нашел решение для бедующих поколений
Запускается от локальной учетки на РДП сервер
Сервер при перезагрузке автоматом заходит в локальную учетку админа и от туда планировщиком запускается задание
Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPI.au3>
#include <Date.au3>


AutoItSetOption ('MouseCoordMode', 0)

Run("C:\Program Files (x86)\RF Enabled\Guard Light\GuardLight.exe")

;WinWaitActive("Guard Light", "Сегодня")
WinWait("Guard Light", "TfmMAIN", 5) ; без таймаута (5) ожидание бесконечно




ControlClick("Guard Light", "Сегодня", "TButton3")

;WinWaitActive("Guard Light - Отчеты")
WinWait("Guard Light - Отчеты", "TfmRezOut", 5) ; без таймаута (5) ожидание бесконечно


MouseClick("primary", 440, 90, 2, 0)

MouseClick("primary", 440, 90, 2, 0)
MouseClick("primary", 436, 105, 2, 0)

MouseClick("secondary", 705, 228, 1, 0)

MouseClick("primary", 733, 240, 1, 0)

;WinWaitActive("Книга1 - Excel")
sleep (9999)
WinWait("Книга1 - Excel", "XLMAIN", 5) ; без таймаута (5) ожидание бесконечно




; Получаем дескриптор окна Excel
Local $hWnd = WinGetHandle("Книга1 - Excel")

; Если окно не найдено, то выходим
If Not $hWnd Then
    MsgBox(0, "Ошибка", "Окно Excel не найдено.")
    Exit
EndIf

; Активируем окно Excel
WinActivate($hWnd)

; Получаем текущую дату
Local $sCurrentDate = @YEAR & @MON & @MDAY

; Имитируем нажатие клавиши Ctrl + S для сохранения
Send("{F12}")

; Дожидаемся появления диалога "Сохранить как"
WinWaitActive("Сохранение документа")
Sleep(1000)
; Указываем путь для сохранения
Local $sSavePath = "D:\Учет раб времени\" & $sCurrentDate & "_.xlsx"

ControlSetText("Сохранение документа", "", "Edit1", $sSavePath)

; Нажимаем "Сохранить"
ControlClick("Сохранение документа", "Сохранить", "Button7")

; Дожидаемся, пока файл будет сохранен, и закрываем окно "Сохранить как"
WinWaitClose("Сохранение документа")

; Закрываем приложение Excel
WinClose($hWnd)


ControlClick("Guard Light - Отчеты", "Закрыть", "TButton1")


; Указываем путь к исходному файлу
Local $sSourceFilePath = "D:\Учет раб времени\Книга1.xlsx"

; Указываем новое имя файла
Local $sNewFileName = "новое_имя.xlsx"

; Формируем новый путь к файлу с новым именем
Local $sNewFilePath = StringReplace($sSourceFilePath, @ScriptDir & "\", @ScriptDir & "\" & $sNewFileName)

; Переименовываем файл
FileMove($sSourceFilePath, $sSavePath)
 

All2khoff

Продвинутый
Сообщения
363
Репутация
66
Сервер при перезагрузке автоматом заходит в локальную учетку админа и от туда планировщиком запускается задание
собственно об этом я и говорил)
автоматический вход в УЗ и в дальнейшем работа с консольной сессией.
 
Верх