Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1147687909
Гоша
2006-05-15 14:11
2006.06.25
Одна копия программы


2-1149575281
Perf2k2
2006-06-06 10:28
2006.06.25
Не видит глобальную переменную


15-1149173491
DillerXX
2006-06-01 18:51
2006.06.25
GetMemory в DLL


2-1149684223
UniCode
2006-06-07 16:43
2006.06.25
Помогите разобраться с Captions на Unicode


9-1131538867
VolanD666
2005-11-09 15:21
2006.06.25
Количество теругольников в D3D.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский