Почему бы вам просто не использовать .data()
везде?
Вы также можете объявлять значения по умолчанию inline в HTML, что тоже хорошо.
<span data-code="pony">text</span>
и
$("span").data("code") == "pony" // true
, если вы хотите его изменить, вы просто делаете
$("span").data("code", "not-a-pony");
и, чтобы удалить его вообще, вы могли бы вызвать
$("span").removeData("code");
, вы действительно должны попробовать и не используйте .attr("data-*")
, я не знаю, почему вы все равно хотите сделать это.
Когда Вы обрабатываете Microsoft.Win32.SystemEvents.SessionSwitch
событие (который оно кажется, что Вы уже делаете для обнаружения выхода из системы), проверьте, чтобы видеть, ли эти Reason
SessionSwitchReason
.SessionLock
:
using Microsoft.Win32;
// ...
// Somewhere in your startup, add your event handler:
SystemEvents.SessionSwitch +=
new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
// ...
void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
switch(e.Reason)
{
// ...
case SessionSwitchReason.SessionLock:
// Do whatever you need to do for a lock
// ...
break;
case SessionSwitchReason.SessionUnlock:
// Do whatever you need to do for an unlock
// ...
break;
// ...
}
}
Вам нужно к P/Invoke WTSRegisterSessionNotification
.
Вот что-то от CodeProject.
http://www.codeproject.com/KB/vb/DetectWindowslockunlock.aspx