PDA

Просмотр полной версии : Смена пользователя



LAngel
26.01.2006, 08:53
Господа, не подскажите, как отследить Смену пользователя.
Т.е. когда в WinXP не выходя текущим пользователем заходят под другим.
Ну или получить количество пользователей в системе...

Eugie
26.01.2006, 13:24
Есть спец.сообщение WM_WTSSESSION_CHANGE, но приложение должно предварительно зарегистрироваться, чтобы его получать: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/termserv/wm_wtssession_change.asp
См. также http://msdn.microsoft.com/library/default.asp?url=/library/en-us/policy/policy/fast_user_switching.asp
и http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/winxpfus.asp

LAngel
26.01.2006, 13:28
Eugie, Огромное спасибо.

LAngel
26.01.2006, 14:37
И ещё вопросик в тему:
Установка хуков из сервиса. Если не указывать сервису воркстейшн и дисплей хуки устанавливаются без ошибок, но не ловятся.
Если указывать - ловятся только у текущего пользователя.
Вопрос: Как установить по настоящему глобальный хук. Чтобы он отрабатывал у всех пользователей, который зашли(или зайдут) в систему.

Eugie
26.01.2006, 17:01
IMHO, никак. Хуки ведь привязываются к десктопу: глобальный хук глобален лишь в пределах десктопа, в котором он был установлен. При fast switching юзеры, очевидно, работают в разных десктопах. Служба может, конечно, менять свой десктоп-контекст, но он всегда будет один, и если она в его рамках и навесит глобальный хук, для других десктопов он работать не будет.
См.также http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/about_window_stations_and_desktops.asp (и ниже по ссылкам)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/interactive_services.asp