Как да мамите таймера за празен ход

Има RDP сървър (WindowsServer2008R2), който е конфигуриран да прекрати сесията на потребителя след известно време на неактивност.

Как мога да заобиколя това ограничение?

Опитах се да емулирам периодично натискане на клавиш, движение на мишката по този начин - всичко не помага:

procedure TForm1.Timer1Timer(Sender: TObject); begin setcursorpos(random(Screen.Width-1), Random(Screen.Height-1)); keybd_event(VK_SHIFT,0,0,0); keybd_event(VK_MENU,0,0,0); keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0); SendMessage(Edit1.handle, wm_char, ord("E"), 0); end;

Може би това е необходимо? SetThreadExecutionState

> Имам RDP сървър (WindowsServer2008R2), конфигуриран с > сесията на крайния потребител след известно време е > неактивност.Така че може би си струва да преконфигурирате, вместо да се опитвате да мамите?

> [2] Братът на Птибурдуков (19.07.13 18:11)Мързелив админ не го прави.

И как да извикам SetThreadExecutionState? Не мога да разбера. Не е описано в Windows.pas.

функция SetThreadExecutionState(esFlags: UINT): UINT; stdcall; външно "Kernel32" име "SetThreadExecutionState"; . procedure TForm1.Button1Click(Sender: TObject); begin if SetThreadExecutionState($00000001 + $80000000) = 0 then ShowMessage("Не работи, ще трябва да спя.") else ShowMessage("Nescafe gold - не замразявайте през нощта!"); end ;

Намерих къде са описани флаговете ES_XXX и бих ги използвал.

Благодаря ти. Най-трудната част за мен беше да напиша API call - функция, използваща описанието от Microsoft. Въпреки че честно четох статия за това в кралството, тя все още беше някак неразбираема.

Но, за съжаление, SetThreadExecutionState все още не помогна,вероятно няма да заблудите Windows толкова лесно ((

брат, ES_XXX флагове също се опитаха

1) Програмата, която извика SetThreadExecutionState - продължава да работи Затварям RDP връзката, без да прекратявам потребителската сесия.

2) Под „активност“ на потребителя се разбира фактът, че той (т.е. аз! ))) трябва или да движи мишката, или да натиска бутони, не по-малко от разрешения период на „неактивност“

Тези. всъщност въпросът се свежда до това как да кажеш на Windows, че е натиснат бутон или се движи мишката, за да не разбере, че това е "имитация"

направи железен емулатор - включва USB и натиска бутоните.

> Второ, не знам как RDP следи > потребителкато чрез WinStationQueryInformationW

Закупете STM32 платка за отстраняване на грешки, направете малки промени в предоставената програма за емулатор на мишка и включете платката в свободен USB порт. Резултатът е, че курсорът се движи по екрана сам, RDP е победен. Нетривиално, но интересно.

> направете хардуерен емулатор - включете USB и натиснете > бутони.

направи софтуерен емулатор на емулатор на желязо, кажи ми как :-D