这是我在通用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";
});
}
我试图知道用户何时解锁他的电脑。
编辑:我还得到的错误是: 委托实例方法不能为null' this'。它突出显示:
lol.Unlocking += Lol_Unlocking;
答案 0 :(得分:0)
我想知道用户何时解锁他的电脑。
您可以连接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