Форум: "WinAPI";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизОпределение блокировки рабочей станции Найти похожие ветки
← →
Woolen © (2006-03-21 20:22) [0]Если кто-нибудь знает, поскажите, пожалуйста. Как определить, что рабочая станция заблокирована? Если правильно понимаю, есть WM_WTSSESSION_CHANGE. Но он не подходит, потому что нужна поддержка Windows 2000. Видимые/невидимы собственные окна тоже не подходят. Их нет, поскольку программа - DLL без единого окна. Есть ли способ как-то еще определить, что машина залочена? Спасибо
← →
Eraser © (2006-03-21 20:51) [1]
> Woolen © (21.03.06 20:22)
> Есть ли способ как-то еще определить, что машина залочена?
Есть способ ослаживать момент "залочивания/разлочивания".
← →
Игорь Шевченко © (2006-03-21 21:08) [2]
> Есть ли способ как-то еще определить, что машина залочена?
Не уверен, что есть способ. А зачем это надо ?
← →
Woolen © (2006-03-21 21:23) [3]
> Есть способ ослаживать момент "залочивания/разлочивания".
А какой? Что-то я ничего такого не нашел, к сожалению.
> Не уверен, что есть способ. А зачем это надо ?
Чтоб не делать лишних и ненужных действий с рабочим столом, когда он недоступен.
← →
Игорь Шевченко © (2006-03-21 22:10) [4]Woolen © (21.03.06 21:23) [3]
> Чтоб не делать лишних и ненужных действий с рабочим столом,
> когда он недоступен.
Вообще-то он доступен с точки зрения программы. Просто в этот момент активен другой Desktop - ну и что с того ?
← →
Woolen © (2006-03-22 00:37) [5]
> Вообще-то он доступен с точки зрения программы. Просто в
> этот момент активен другой Desktop - ну и что с того ?
Приложение может делать снимки экрана, в т.ч. и по таймеру. Если машина заблокирована, оно ничего не снимет (по большому счету), следовательно моя DLL должна отказать в копировании экрана. Если могут быть варианты, подскажите, пожалуйста?
← →
Игорь Шевченко © (2006-03-22 01:13) [6]
> Если машина заблокирована, оно ничего не снимет (по большому
> счету),
Это подтверждется эскпериментом ?
> Если могут быть варианты, подскажите, пожалуйста?
Да я бы подсказал, но боюсь, что у простого пользователя шансов узнать о заблокированной машине крайне немного, если вообще есть. Максимум, что могу посоветовать, это подвигаться в сторону OpenInputDesktop, потому что единственное отличие заблокированной машины от незаблокированной заключается в том, что текущим Desktopом является WinLogon, а не Default.
← →
Игорь Шевченко © (2006-03-22 01:15) [7]Могу еще посоветовать подвигаться в сторону функций из Winsta.Dll, например WinStationQueryInformationW и т.д. и т.п.
← →
Woolen © (2006-03-22 12:51) [8]
> Это подтверждется эскпериментом ?
Да, под Windows 2000 TBitmap.Canvas.CopyRect дает белый растр. В качестве источника - Canvas с дескриптором контекста, полученным из дескриптора окна рабочего стола (который получен припомощи GetDesktopWindow). Даже если бы что-то и было видно, смысловой нагрузки оно все равно никакой не несло бы - пользователь все равно ничего не делает.
> OpenInputDesktop
> Winsta.Dll, например WinStationQueryInformationW
Спасибо. Буду пробовать.
← →
Eraser © (2006-03-22 14:48) [9]
> Woolen ©
почитай вот эту ветку
http://delphimaster.net/view/4-1138482663/
+ копни в сторону Winlogon Notification Package.
но всё таки, скорее всего, если приложение не является сервисом, всё закочится на этом [6].
← →
Игорь Шевченко © (2006-03-22 15:36) [10]Eraser © (22.03.06 14:48) [9]
> + копни в сторону Winlogon Notification Package.
А не подскажет ли уважаемый Eraser, много ли прав требуется для работы с Winlogon notification packages ?
← →
Eraser © (2006-03-22 15:51) [11]
> Игорь Шевченко © (22.03.06 15:36) [10]
как минимум права администратора ), но только в процессе регистрации DLL, что не желательно.. но допустимо.
← →
Игорь Шевченко © (2006-03-22 16:07) [12]Eraser © (22.03.06 15:51) [11]
> как минимум права администратора
То-то и оно. Кстати, не факт, что на всех версиях Windows дополнить Winlogon notifications будет легко и просто. Может потребоваться цифровая подпись.
← →
Eraser © (2006-03-22 16:16) [13]
> Игорь Шевченко © (22.03.06 16:07) [12]
а вот это не знал... на XP SP2 не требует цифровой подписи... может на серверных ОС.
Можно поподробнее?
← →
Игорь Шевченко © (2006-03-22 16:22) [14]Eraser © (22.03.06 16:16) [13]
Виноват, про подпись спутал с чем-то еще. Исправляюсь, ссылку даю на winlogon notification packages
http://download.microsoft.com/download/7/d/8/7d8965b9-4a7c-4510-9987-ffa57c9ad2fe/relnotes.htm
← →
Eraser © (2006-03-22 16:43) [15]
> Игорь Шевченко © (22.03.06 16:22) [14]
> Виноват, про подпись спутал с чем-то еще.
ну слава Богу.. отлегло! а то я как раз winlogon notification packages в проекте применять буду )
← →
Игорь Шевченко © (2006-03-22 17:13) [16]Eraser © (22.03.06 16:43) [15]
> а то я как раз winlogon notification packages в проекте
> применять буду
Недолго твоему проекту жить :) Ссылку почитай :)
← →
Eraser © (2006-03-22 18:04) [17]
> Игорь Шевченко © (22.03.06 17:13) [16]
Да почитал
Winlogon notification packages are no longer supported. To achieve the functionality formerly provided by notification packages, either create a Group Policy script or create a service.
не скажу, что это меня обрадовало ), но всё таки моё приложение и так сервис, так что выход есть - SERVICE_CONTROL_SESSIONCHANGE + WM_WTSSESSION_CHANGE... вроде бы это то что нужно... на первый взгялд..
но пока остановился на notification packages.
← →
Woolen © (2006-03-23 18:27) [18]
> SERVICE_CONTROL_SESSIONCHANGE + WM_WTSSESSION_CHANGE
К стати, не работает в 2000. Там нету WM_WTSSESSION_CHANGE. На счет SERVICE_CONTROL_SESSIONCHANGE не знаю. В итоге, это все очень печально. Под каждую версию Windows придется писать по-разному.
← →
Eraser © (2006-03-23 18:33) [19]
> Woolen © (23.03.06 18:27) [18]
> Под каждую версию Windows придется писать по-разному.
Winlogon notification packages в 2000 поддерживаются...
Но всё равно то что касается системы безопасности - это кошмар. И действительно чуть ли не для каждой версии надо отдельнцю "технологию" использовать.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c