2014-10-22 1 views
0

У меня есть удаленный рабочий стол, и я пытаюсь запустить простой скрипт для предотвращения тайм-аута в режиме ожидания, который составляет 3 минуты (довольно раздражает). Например, сценарий должен, например, нажимать клавишу «А» каждые 2,5 минуты или около того.Autoit контролирует удаленный рабочий стол

Проблема, окно удаленного рабочего стола часто неактивны/минимизированы и:

1), если я пытаюсь запустить такой сценарий «внутри» удаленный рабочий стол, я по-прежнему разъединены, несмотря на это на самом деле работает (продолжается для ввода или создания/удаления файлов и т. д., даже когда на экране появляется сообщение «idle timer expired»). Я считаю, что система хочет каких-то «внешних» действий.

2) если я запустить скрипт на моем компьютере, он doesn'do вообще ничего на удаленном рабочем столе (я был открытый ноутбук там, и там не было типирование):

ControlSend ("[CLASS : TSCShellContainerClass] "," "," [CLASS: OPContainerClass; INSTANCE: 1] "," {A} ")

Я думаю, что проблема связана с частью« controlid », которую я получил через информацию о автоматическом окне. Если я устанавливаю controlid как "" - он работает, но только если это окно активно.

Я видел решение реестра, но, похоже, не работает для меня.

Если у кого есть какие-либо идеи о фиксации этого, пожалуйста, не останавливайтесь :)

ответ

0

Я знаю, что уже поздно, но вот единственное, что я мог бы приступить к работе; он включал активацию окна. Я попробовал ControlFocus, но безрезультатно, вот что я получил.

У вас должен быть возможность изменить ваш скрипт при необходимости.

#include<Array.au3> 
OPT("WinTitleMatchMode",2) 

$a = WinList("Remote Desktop Connection") 

;_ArrayDisplay($A) 

ConsoleWrite(UBound($A)& @CRLF) 
FOR $N = 1 to $A[0][0] 
    $hActiveWindow = WinGetHandle("") 

    WinActivate($a[$N][1]) ;comment if using controlfocus 
    ;ControlFocus($a[$N][1],"","") ;comment if using winactivate 
    ControlSend($a[$N][1],"","","^+{ESC}") 

    WinActivate($hActiveWindow) 
Next