Что нового

Работает ли Send, при запуске приложения autoit из службы windows

VladG09

Новичок
Сообщения
2
Репутация
0
Очень прошу помощи ...
Есть приложение на c#, работает как в консоли, так и как служба.
Из данного приложения запускается скомпиленный скрипт autoit, в котором запускается приложение с windows form (первое окно с вводом логина и пароля) и далее через Send передаются нажатия клавиш.
Если приложение c# запущено в консоли - то все работает, а вот если его запустить как сервис, то получаю проблему.
Пример кода autoit:
AutoIt код:
Run($CmdLine[1])
AutoItSetOption("WinTitleMatchMode", 3)
WinWaitActive($CmdLine[2])
Send("!U#")
Send($CmdLine[3])
Никак не могу понять, то ли ждет на строке 3 или строка 4 не работает при запуске из Widows службы ?
Сообщение автоматически объединено:

Поковырялся немного, изменил скрипт оказывается не сработает 3 строка
WinWaitActive($CmdLine[2]), даже не сработало
WinActivate()

Код:
#include <CileConstants.au3>
Run($CmdLine[1])
Local $f = @ScriptDir & "\log.log"
Local $ff = FileOpen($f, $FO_APPEND)
AutoItSetOption("WinTitleMatchMode", 3)
Local $w = $CmdLine[2]
While 1
   Sleep(3000)
   FileWriteLine($ff,"1")
   If WinExists($w) Then
      FileWriteLine($ff,"2")
      $h = WinActivate($w)   
      FileWriteLine($ff,"WinActivate " & $h)
      If WinActive($w) Then
         ExitLoop
      EndIF         
   EndIf     
WEnd
FileWriteLine($ff,"3")
Send("!U#")
Send($CmdLine[3])
FileClose($ff)

А вот результат
Результат:
1
2
WinActivate 0
1
2
WinActivate 0
1
2
WinActivate 0
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Правильно ли я понимаю, что запуск приложения в виде службы используется для работы без входа пользователя в систему? Если да, то активации окон не будет. Используйте WinWait и Sleep.
 
Автор
V

VladG09

Новичок
Сообщения
2
Репутация
0
Правильно ли я понимаю, что запуск приложения в виде службы используется для работы без входа пользователя в систему? Если да, то активации окон не будет. Используйте WinWait и Sleep.
Спасибо.
Да Вы правильно поняли.
Переписал на использование WinWait и ControlSend - так работает.
 
Верх