Могу ли я получить getlastinputtime user32.dll из системной службы

Я пытаюсь написать системную службу, которая может определять, активен ли пользователь, а затем запускать процесс, если нет. Я использую службу, потому что хочу, чтобы она работала вне зависимости от того, вошел ли пользователь в систему или нет. Я пытался подключиться к API user32.dll и получить время с момента последнего ввода пользователя. Однако возвращаемое целое число всегда равно 0, поэтому я не думаю, что он работает правильно. Разве это невозможно при работе в качестве системной службы?


person Jarred Masterson    schedule 09.06.2011    source источник


Ответы (1)


Вы можете использовать getlastinputinfo в 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

person Rajeev    schedule 09.06.2011
comment
Спасибо, regexhacks. Это именно то, что я пытался сделать, но, похоже, это не сработало. Мой код немного отличается, но вот что у меня: Private Structure PLASTINPUTINFO Dim cbSize As Integer Dim dwTime As Integer End Structure Private Declare Function GetLastInputInfo Lib "user32.dll" _ (ByRef plii As PLASTINPUTINFO) As Boolean - person Jarred Masterson; 09.06.2011
comment
Извините за плохое форматирование. Я не знаю, как поместить код с разрывами строк в этот формат мини-уценки. Надеюсь, вы сможете сказать, куда они идут? - person Jarred Masterson; 09.06.2011