Я пытаюсь написать системную службу, которая может определять, активен ли пользователь, а затем запускать процесс, если нет. Я использую службу, потому что хочу, чтобы она работала вне зависимости от того, вошел ли пользователь в систему или нет. Я пытался подключиться к API user32.dll и получить время с момента последнего ввода пользователя. Однако возвращаемое целое число всегда равно 0, поэтому я не думаю, что он работает правильно. Разве это невозможно при работе в качестве системной службы?
Могу ли я получить getlastinputtime user32.dll из системной службы
Ответы (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
Спасибо, 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
Извините за плохое форматирование. Я не знаю, как поместить код с разрывами строк в этот формат мини-уценки. Надеюсь, вы сможете сказать, куда они идут?
- person Jarred Masterson; 09.06.2011