我有一臺應用程序在Windows XP計算機上每小時運行一次。要正常運行,此應用程序需要解鎖當前會話。所以我想知道是否有辦法知道當前的Windows會話是否被鎖定或不與C#和.NET 3.5。如何確定當前的Windows會話是否被鎖定?
更新:應用程序無法偵聽SessionNotification事件。應用程序可隨時啓動並在完成時終止。
謝謝!
我有一臺應用程序在Windows XP計算機上每小時運行一次。要正常運行,此應用程序需要解鎖當前會話。所以我想知道是否有辦法知道當前的Windows會話是否被鎖定或不與C#和.NET 3.5。如何確定當前的Windows會話是否被鎖定?
更新:應用程序無法偵聽SessionNotification事件。應用程序可隨時啓動並在完成時終止。
謝謝!
這些未經我測試,但看起來很有趣。我會給他們一個測試,但我的Visual Studio目前似乎對我並不滿意。
eggheadcafe鏈接404'd – hometoast 2011-03-03 17:26:53
我曾用GetForegroundWindow()
函數來確定屏幕保護程序是否正在運行的例子。如果返回值爲NULL
,則屏幕保護程序(或者大概鎖定的工作站)處於活動狀態。請注意,這是在Windows NT的早期階段,沒有記錄這樣做,並且不能保證它今天仍然會做同樣的事情。
查看Win32 API參考,您可能可以使用類似OpenInputDesktop()
的東西來獲取當前活動桌面的HDESK
。如果您無法獲得桌面的句柄,或者它與線程桌面不同,那麼您的應用程序將在未處於活動狀態的桌面上運行(並且工作站可能處於屏幕保護狀態或已被鎖定)。不保證此方法可行,但可能值得調查。
我回答了類似的問題here。我認爲可以增強方法來檢測鎖定狀態。
它會在會話鎖定時無法運行? – jmucchiello 2013-05-05 07:06:20