How to determine that the computer is locked?
От: Lade  
Дата: 10.10.06 06:27
Оценка:
Всем здрасте.

Хотелось бы еще раз затронуть вопрос о том, как определить заблокирован ли компьютер.

Мне нужно чтобы мой код работал на Windows 2000, Windows XP.

Недокументированное событие WinSta0_DesktopSwitch не подходит, так как не известно, что будет с ним в будущем.
Действительно ли необходимо создавать собственную *.dll в случае использования winlogon notification package? Наверняка есть какая-нибудь функция или событие, которое можно использовать для этой цели и чтобы работало на обоих операционных системах.

Я пробовал использовать сообщение WM_WTSSESSION_CHANGE, но при запуске программы под Windows 2000 говорит, что не знает функции ::WTSRegisterSessionNotification, которая нужна для получения окном WM_WTSSESSION_CHANGE.
В MSDN, Winlogon Notification Package ничего подохдящего не нашел, либо не туда смотрел.

Подскажите решение проблемы.

Заранее спасибо.
Re: How to determine that the computer is locked?
От: FoolS.Top Армения  
Дата: 10.10.06 06:54
Оценка:
Здравствуйте, Lade, Вы писали:

L>Всем здрасте.


L>Хотелось бы еще раз затронуть вопрос о том, как определить заблокирован ли компьютер.


L>Мне нужно чтобы мой код работал на Windows 2000, Windows XP.


L>Недокументированное событие WinSta0_DesktopSwitch не подходит, так как не известно, что будет с ним в будущем.

L>Действительно ли необходимо создавать собственную *.dll в случае использования winlogon notification package? Наверняка есть какая-нибудь функция или событие, которое можно использовать для этой цели и чтобы работало на обоих операционных системах.

L>Я пробовал использовать сообщение WM_WTSSESSION_CHANGE, но при запуске программы под Windows 2000 говорит, что не знает функции ::WTSRegisterSessionNotification, которая нужна для получения окном WM_WTSSESSION_CHANGE.

L>В MSDN, Winlogon Notification Package ничего подохдящего не нашел, либо не туда смотрел.

L>Подскажите решение проблемы.


Есть такая нотификация (см. MSDN)

Winlogon Notification Events

Winlogon can inform your notification package of the following events:

Lock
This event occurs when the user locks the workstation.

Feierlich, misterioso
Re[2]: How to determine that the computer is locked?
От: Lade  
Дата: 10.10.06 07:01
Оценка:
Здравствуйте, FoolS.Top, Вы писали:

FT>Есть такая нотификация (см. MSDN)


FT>

FT>Winlogon Notification Events

FT>Winlogon can inform your notification package of the following events:

FT>Lock
FT>This event occurs when the user locks the workstation.


Да, я читал об этом, но честно говоря, не понял как их использовать. Подскажи пожалуйста!
Re[3]: How to determine that the computer is locked?
От: Lade  
Дата: 10.10.06 07:23
Оценка:
L>Да, я читал об этом, но честно говоря, не понял как их использовать. Подскажи пожалуйста!

P.S.
Дело в том, что писать собственную *.dll только для того, чтобы узнать заблокирован ли компьютер, на мой взгляд не совсем оправдано.
Поэтому хотелось бы узнать какой-либо другой вариант решения данной проблемы.
Re[4]: How to determine that the computer is locked?
От: FoolS.Top Армения  
Дата: 10.10.06 07:33
Оценка:
Здравствуйте, Lade, Вы писали:

L>>Да, я читал об этом, но честно говоря, не понял как их использовать. Подскажи пожалуйста!


L>P.S.

L>Дело в том, что писать собственную *.dll только для того, чтобы узнать заблокирован ли компьютер, на мой взгляд не совсем оправдано.
L>Поэтому хотелось бы узнать какой-либо другой вариант решения данной проблемы.

Если тебя интересует только событие lock, то dll может содержать только одну функцию (естественно кроме DllMain). Остальные реализовать необязательно.
Feierlich, misterioso
Re: How to determine that the computer is locked?
От: Аноним  
Дата: 10.10.06 07:37
Оценка:
OpenInputDesktop вернет ACCESS_DENIED
Хотя теоретически такое может быть не только с локом десктопа, но на практике нигде больше кроме своих экспериментов я такого не встречал
Re[5]: How to determine that the computer is locked?
От: Аноним  
Дата: 10.10.06 13:43
Оценка:
Здравствуйте, FoolS.Top, Вы писали:

FT>Здравствуйте, Lade, Вы писали:


L>>>Да, я читал об этом, но честно говоря, не понял как их использовать. Подскажи пожалуйста!


L>>P.S.

L>>Дело в том, что писать собственную *.dll только для того, чтобы узнать заблокирован ли компьютер, на мой взгляд не совсем оправдано.
L>>Поэтому хотелось бы узнать какой-либо другой вариант решения данной проблемы.

FT>Если тебя интересует только событие lock, то dll может содержать только одну функцию (естественно кроме DllMain). Остальные реализовать необязательно.


То есть необходимо создавать *.dll.
А другими средствами как-нибудь можно обойтись, исключая недокументированные?
Re[6]: How to determine that the computer is locked?
От: Аноним  
Дата: 12.10.06 07:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>То есть необходимо создавать *.dll.

А>А другими средствами как-нибудь можно обойтись, исключая недокументированные?

Да, DLL документированный способ. Как правильно уже сказали в вашем случае всё сводится к написанию одной функции. Чем вам не нравится этот способ ? С глобальными хуками по-моему и то плясок больше, и ничего пишут dll.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.