Незнаю какое сообщение нужно отлавливать когда пользователь логиниться в системе
Например вот эта константа используется при завершении сеанса пользователя
Код:
const int WM_ENDSESSION = 0x16;
Пишу на C#.NET . Но я думаю что здесь всетаки больше API
http://msdn.microsoft.com/en-us/library/aa383841%28v=VS.85%29.aspx
http://support.microsoft.com/kb/310153#top
В .NET придётся использовать invoke.
Не знаю, можно ли это сделать с помощью WMI. Если будет время и желание, гляну.
http://support.microsoft.com/kb/310153#top
В .NET придётся использовать invoke.
Не знаю, можно ли это сделать с помощью WMI. Если будет время и желание, гляну.
Код:
WTS_SESSION_LOGON
0x5
0x5
Цитата: timur2008
но чето ничего не сработало
Невозможно сказать, что не сработало, не видя код.
Гуглить пробовали? Вот ссылочка, где и как использовать WTSRegisterSessionNotification - http://www.devnewsgroups.net/windowsforms/t42869-computer-locked.aspx
Покопался я в WMI. Не во всём разобрался. Но использовать можно. http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/6375c5aa-aa5e-4982-86d7-1723b67c7381/
Кстати, есть понимание того, что logon нужно ловить в сервисе, а не в обычном приложении?
И напоследок - в ряде случаев можно использовать класс SystemEvents. Во всяком случае, события SessionLock, SessionUnlock ловятся.
Код:
static void Main(string[] args)
{
SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
Console.ReadLine();
}
static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
Console.WriteLine(e.Reason.ToString());
}
{
SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
Console.ReadLine();
}
static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
Console.WriteLine(e.Reason.ToString());
}