Short:如何在服務中識別當前是否顯示而不是顯示活動桌面(即已鎖定還是未登錄)?如何識別電腦當前是否已鎖定或未登錄?
長:我試圖構建一個由數據庫,服務和WPF應用程序組成的Win 7-10解決方案。在DB中設置標誌時,服務會向用戶發送自定義消息 - 無論是否已登錄。
如果有人登錄,服務將啓動應用程序,該應用程序顯示消息以及重新啓動/日誌關閉選項。 這工作正常 - 迄今如此好。
如果屏幕鎖定或沒有用戶登錄,則問題是在鎖定屏幕上顯示一條消息。我可以使用「msg.exe *消息」顯示消息,但我不希望這兩個消息。 exe和應用程序啓動,如果用戶是登錄。因此,我需要能夠確定哪個可執行文件是適當的,當標誌從DB讀取。
要清楚:我對事件解僱不感興趣。我有興趣在特定的時間閱讀「當前狀態」。
注意:已經有很多類似於這個問題的問題,但我一直沒能找到一個完全覆蓋我的困境。大部分都與鎖定事件有關,或者不能在服務中工作/沒有用戶登錄。
我曾經有過一些工作,我不得不從服務啓動桌面上的應用程序。爲此,我必須在系統托盤中創建一個圖標才能獲得對桌面的權限。也許如果你設置了一個系統嘗試圖標應用程序在啓動時運行,你可以與它溝通,以確定是否有人登錄它(我認爲這是一個單一登錄情況)。 – juharr
這是一個單一的跡象,是的。我大概可以確定是否有人以這種方式簽名,但它不會告訴我他們是否被鎖定。作爲可能的部分解決方案,我會牢記它,但我真的不希望在服務之上添加一個始終運行的應用程序。我希望儘可能保持簡單,因爲穩定性和佔地面積小是關鍵。它將在10-30k電腦上運行,並將爲用戶提供關鍵信息。 – Nathan
如果控制檯會話在鎖定時顯示爲「斷開連接」,則可以枚舉所有終端服務會話並檢查它們是否都處於斷開連接狀態。我不知道它是否確實如此。 –