这是我在通用Windows应用程序中所做的事情:
public MainPage()
{
InitializeComponent();
private LockApplicationHost lol=LockApplicationHost.GetForCurrentView();
}
private async void Lol_Unlocking(LockApplicationHost sender, LockScreenUnlockingEventArgs args)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
alarm.Pause();
Status.Text = "lolwtf";
});
}
我想知道用户何时解锁计算机。
EDIT:我不断得到的错误是:委托给实例方法的null不能为'this'。它突出显示:
lol.Unlocking += Lol_Unlocking;
我想知道用户何时解锁计算机。
您可以连接SessionSwitchEventHandler
。显然,您的应用程序将需要运行。 SessionSwitchEventHandler委托,您确定将处理事件的方法。要将事件与事件处理程序关联,请将委托的实例添加到事件。
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLock)
{
//I left my desk
}
else if (e.Reason == SessionSwitchReason.SessionUnlock)
{
//I returned to my desk
}
}
您可以查看SessionSwitchReason Enumeration,以找到有关使用SessionSwitchReason类表示会话切换事件的类型的更多信息。
lol.Unlocking + = Lol_Unlocking;
应该为lol.Unlocking += Lol_Unlocking(EventHandler_Unlocking);
,并且必须在程序中定义EventHandler_Unlocking
。
我对LockApplicationHost.Unlocking
的理解是,它有助于解锁和锁定设备,而确定设备是否已解锁和解锁SessionSwitchEventHandler
将是更好的方法。有关LockApplicationHost.Unlocking check this的更多理解
这个问题解决了吗?有什么方法可以使用LockApplicationHost来了解解锁事件吗?