Работают ли скрипты AutoIt, выполняемые как сервис, для действий с графическим интерфейсом? - PullRequest
5 голосов
/ 06 марта 2009

Я использую скрипт AutoIt для запуска и автоматизации приложения с графическим интерфейсом. Мне нужно активировать скрипт каждый час.

Будут ли работать скрипты AutoIt (которые выполняют действия с графическим интерфейсом) при использовании в качестве службы? Сценарий будет запускаться как служба (не запланированная задача).

Ответы [ 3 ]

4 голосов
/ 20 мая 2009

Вы можете легко запустить скрипт autoit как службу , используя service.au3, написанный archer форумов autoit. К сожалению или к счастью, так как это мера безопасности. Служба должна запускаться независимо от текущего сеанса пользователя (до входа в систему). Он не может получить доступ к API отправки для обработки ввода текущего сеанса пользователя оттуда. Звучит так, будто вам нужно запланированное задание, а не служба.

2 голосов
/ 20 мая 2009

Как упоминалось выше, запланированное задание - это то, что вы ищете. Чтобы запустить скрипт как сервис, прочитайте это:

Q4. Как я могу запустить свой скрипт как сервис? Это также вопрос с несколькими ответами, и ни один из них не является единственным способом сделать это. Первый вопрос, который следует задать себе, - хотите ли вы установить службу на других компьютерах, кроме ваших собственных.

A1. If you only wish to install the service on your own computer, The easiest way to do this is to use Pirmasoft RunAsSvc. This program makes services easy to install and easy to remove when necessary.
A2. If you wish to make the service available to anyone running your script, you can use SRVANY.EXE and ServiceControl.au3. You can then use this code to install your script as a service:
    #include "ServiceControl.au3"
    $servicename = "MyServiceName"
    _CreateService("", $servicename, "My AutoIt Script", "C:\Path_to_srvany.exe", "LocalSystem", "", 0x110)
    RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\" & $servicename & "\Parameters", "Application", "REG_SZ", @ScriptFullPath)

or use the following code to delete this service:
    #include "ServiceControl.au3"
    $servicename = "MyServiceName"
    _DeleteService("", $servicename)

Существует одна оговорка для настройки AutoIt в качестве службы. Если служба не установлена ​​с использованием приведенного выше кода, она должна иметь настройку «разрешить службе взаимодействовать с рабочим столом», иначе функции автоматизации, такие как Control * или Win *, не будут работать. Чтобы убедиться, что служба действительно имеет этот параметр, используйте следующий код: RegWrite ("HKLM \ SYSTEM \ CurrentControlSet \ Services [ServiceName]", "Тип", "REG_DWORD", 0x110)

Взято из раздела FAQ на форумах AutoIt. www.autoitscript.com/forum/index.php?showtopic=37289)

1 голос
/ 06 марта 2009

Похоже, вы хотите использовать запланированное задание вместо службы. Запланированные задачи могут выполняться каждый час, когда вы вошли в систему, а также должны иметь возможность взаимодействовать с вашим рабочим столом. Просто помните, что задача, выполняемая от имени обычного пользователя, не может взаимодействовать (отправлять входные данные) программе с повышенными правами, если вы используете Vista / Windows Server 2008 с включенным контролем учетных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...