2009-06-19 43 views
6

我有一臺應用程序在Windows XP計算機上每小時運行一次。要正常運行,此應用程序需要解鎖當前會話。所以我想知道是否有辦法知道當前的Windows會話是否被鎖定或不與C#和.NET 3.5。如何確定當前的Windows會話是否被鎖定?

更新:應用程序無法偵聽SessionNotification事件。應用程序可隨時啓動並在完成時終止。

謝謝!

+0

它會在會話鎖定時無法運行? – jmucchiello 2013-05-05 07:06:20

回答

1

這些未經我測試,但看起來很有趣。我會給他們一個測試,但我的Visual Studio目前似乎對我並不滿意。

+0

eggheadcafe鏈接404'd – hometoast 2011-03-03 17:26:53

0

我曾用GetForegroundWindow()函數來確定屏幕保護程序是否正在運行的例子。如果返回值爲NULL,則屏幕保護程序(或者大概鎖定的工作站)處於活動狀態。請注意,這是在Windows NT的早期階段,沒有記錄這樣做,並且不能保證它今天仍然會做同樣的事情。

查看Win32 API參考,您可能可以使用類似OpenInputDesktop()的東西來獲取當前活動桌面的HDESK。如果您無法獲得桌面的句柄,或者它與線程桌面不同,那麼您的應用程序將在未處於活動狀態的桌面上運行(並且工作站可能處於屏幕保護狀態或已被鎖定)。不保證此方法可行,但可能值得調查。

0

我回答了類似的問題here。我認爲可以增強方法來檢測鎖定狀態。

相關問題