2011-06-09 41 views
0

我正在嘗試編寫一個系統服務,可以檢測用戶是否處於活動狀態,如果不是,則啓動進程。我正在使用服務,因爲如果用戶登錄或不登錄,我希望這可以工作。我一直試圖掛鉤user32.dll API並檢索自上次用戶輸入以來的時間。但是,返回的整數總是0,所以我不認爲它工作正常。作爲系統服務運行時,這是不可能的嗎?我可以從系統服務中檢索user32.dll getlastinputtime

回答

0

你可能會喜歡上user32.dll中

<DllImport("user32.dll")> _ 
Shared Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Boolean 
End Function 

<StructLayout(LayoutKind.Sequential)> _ 
    Structure LASTINPUTINFO 
    <MarshalAs(UnmanagedType.U4)> _ 
    Public cbSize As Integer 
    <MarshalAs(UnmanagedType.U4)> _ 
    Public dwTime As Integer 
End Structure 

LASTINPUTINFO MSDN上

+0

http://www.pinvoke.net/default.aspx/user32/GetLastInputInfo.html上pinvoke.net使用getlastinputinfo CodeWrite 2011-06-09 08:39:08

+0

謝謝regexhacks。這正是我想要做的,但似乎並不奏效。我的代碼略有不同,但這裏是我有:'私人結構PLASTINPUTINFO昏暗cbSize作爲整數昏暗dwTime作爲整數結束結構私人聲明函數GetLastInputInfo Lib「user32.dll」_(ByRef plii作爲PLASTINPUTINFO)作爲布爾' – 2011-06-09 15:07:16

+0

對不起差的格式。我不知道如何用這種迷你markdown格式換行符。希望你能告訴他們去哪裏? – 2011-06-09 15:19:20

相關問題