2016-04-29 86 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函數

相關問題