Мога ли да извлека user32.dll getlastinputtime от системна услуга

Опитвам се да напиша системна услуга, която може да открие дали потребителят е активен и след това да стартира процес, ако не е. Използвам услуга, защото искам това да работи, независимо дали потребителят е влязъл или не. Опитвам се да се свържа с 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