2016-04-29 87 views
1

我编写了一个桌面警报应用程序,向当前登录的所有客户端发送各种通知。该应用程序位于系统托盘中,并具有右键单击菜单以选择警报。发送警报时,会在每个客户端桌面上显示警报类型的弹出窗口。弹出是一个简单的窗口类:WPF是否可以在Windows锁定屏幕上显示对话框()?

alertWindow.showDialog(); 

我们的电脑对他们有政策,闲置10分钟后自动锁定屏幕。我想知道的是,如果有任何方法可以在屏幕锁定时显示警报。任何帮助,将不胜感激。

回答

1

您可以将所需信息放入图像中,然后使用Windows运行时API中的Windows.System.UserProfile.Lockscreen类更改锁定屏幕背景。

Windows.System.UserProfile.LockScreen.SetImageFileAsync(file); 
+0

的Windows 7这是不可用?这似乎只适用于Windows 8/10。 – Eckert

0

锁屏本身实际上是一个以winlogon权限运行的不同用户会话。

不久前我在窗口7下做了这样的事情,但现在不能回忆细节。

的一般方法是:

  • 开放winlogon进程从工艺处理
  • 副本访问令牌
  • 创建一个新的进程与刚才复制的访问令牌
  • 在锁定屏幕上
  • 创建窗口

这是一个非常hacky的方法,使用许多API调用,但唯一的作品。

只要我回到我的家庭电脑,我可以看到我是否能找到一些细节,我是如何做到的。

[编辑]

我现在必须重新审视代码的机会,我不得不说i'ts有点复杂得多概述。

关键要素是,您需要一个以系统权限运行的服务(我用C++编写)。 此服务必须从winlogon进程中复制模拟令牌,然后使用该新令牌启动新进程。参考

  • GetTokenInformation
  • OpenProcessToken
  • DuplicateTokenEx
  • AdjustTokenPrivileges

[/编辑] API函数

相关问题