Форум: "Начинающим";
Текущий архив: 2014.06.08;
Скачать: [xml.tar.bz2];
ВнизКак обмануть таймер простоя Найти похожие ветки
← →
Dymok © (2013-07-19 16:10) [0]Есть 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;
← →
Inovet © (2013-07-19 17:13) [1]Может, это надо?
SetThreadExecutionState
← →
брат Птибурдукова (2013-07-19 18:11) [2]
> Есть RDP-сервер (WindowsServer2008R2), на котором настроено
> завершение сеанса пользователя через некоторое время его
> бездействия.
Так может, стоит перенастроить, а не пытаться обмануть?
← →
Inovet © (2013-07-19 18:54) [3]> [2] брат Птибурдукова (19.07.13 18:11)
Ленивый одмин не делает.
← →
Dymok © (2013-07-22 09:19) [4]А как вызвать SetThreadExecutionState? Не могу разобраться. В Windows.pas она не описана...
← →
Inovet © (2013-07-23 16:01) [5]> [4] Dymok © (22.07.13 09:19)
> А как вызвать SetThreadExecutionState?
Так всё же в справке есть.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373208%28v=vs.85%29.aspx
function SetThreadExecutionState(esFlags: UINT): UINT; stdcall; external "Kernel32" name "SetThreadExecutionState";
...
procedure TForm1.Button1Click(Sender: TObject);
begin
if SetThreadExecutionState($00000001 + $80000000) = 0 then
ShowMessage("Чёта не получилось, придётся спать.")
else
ShowMessage("Нескафе голд - не замерзай ночью!");
end;
← →
brother © (2013-07-23 20:55) [6]яб нашел, где описаны флаги ES_XXX и использовал бы их...
← →
Dymok © (2013-07-29 08:48) [7]Спасибо. Самое трудное для меня было написать вызов API - функции, используя описание от Microsoft. Хотя честно читал статью про это на королевстве, всё равно было как-то непонятно...
Но, к сожалению, SetThreadExecutionState, всё равно не помогла, наверно винду так легко не обманешь ((
← →
Dymok © (2013-07-29 08:50) [8]brother, флаги ES_XXX тоже пробовал
← →
Inovet © (2013-07-29 10:28) [9]> [7] Dymok © (29.07.13 08:48)
> Но, к сожалению, SetThreadExecutionState, всё равно не
> помогла, наверно винду так легко не обманешь ((
Во-первых, программа, вызвавшая SetThreadExecutionState, должна быть запущена. Во-вторых, я не знаю, как там RDP отслеживает активность пользователя. Во всяком случае SetThreadExecutionState не имитация активности и не обман, а сообщение системе о необходимости не уходить в спячку, а под активностью пользователя может подразумеватья нечто другое.
← →
Dymok © (2013-07-29 12:58) [10]1) Программа, вызвавшая SetThreadExecutionState - остаётся запущена
закрываю RDP-соединение не завершая сеанс пользователя.
2) Под "активностью" пользователя понимается то, что он (то есть я! )) ) должен или двигать мышкой или нажимать любые кнопки, не реже чем установлен разрешенный период "бездействия"
Т.е. собственно вопрос сводится к тому, как сказать винде что нажата кнопка или подвинута мышь, так, чтобы она не поняла что это "имитация"
← →
Комп2 (2013-08-22 00:32) [11]сделать железный эмулятор - включается в USB и нажимает кнопки...
← →
antonn © (2013-08-22 10:18) [12]
> Во-вторых, я не знаю, как там RDP отслеживает активность
> пользователя
вроде через WinStationQueryInformationW
← →
RWolf © (2013-08-22 10:30) [13]Приобрести отладочную плату на STM32, внести лёгкие правки в поставляемую в комплекте программу эмулятора мыши и воткнуть плату в свободный порт USB.
Результат — курсор ездит по экрану сам, RDP побеждён.
Нетривиально, зато интересно.
← →
Вова (2013-08-22 13:52) [14]
> сделать железный эмулятор - включается в USB и нажимает
> кнопки...
сделать программный эмулятор железного эмулятора, рассказывайте как :-D
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.06.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c