Re: GetLastInputInfo
От: Львёнок Россия  
Дата: 03.12.09 02:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>здравствуйте господа !


А> Я пытаюсь применить функцию WinApi GetLastInputInfo(LASTINPUTINFO plii)

А> и как показано ниже вызываю ее с проверкой на true и false
А> if (GetLastInputInfo(linput))
А> Компилится все нормально .
А> Однако когда я пытаюсь выполнить это выдается сообщение System.AccessViolationException was unhandled
А> которое описано ниже .
А> Может быть ктото уже на эти грабли наступал ?
А> И как вообще тогда правильно применить GetLastInputInfo для простого обнаружения активности пользователя ?


А>[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]

А> internal static extern bool GetLastInputInfo(LASTINPUTINFO plii);
А> internal struct LASTINPUTINFO
А> {
А> internal long cbSize;
А> internal long dwTime;
А> }


А> LASTINPUTINFO linput;


А>if (GetLastInputInfo(linput))



...
        [DllImport("user32.dll")]
        static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

        [StructLayout(LayoutKind.Sequential)]
        struct LASTINPUTINFO
        {
            public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO));

            [MarshalAs(UnmanagedType.U4)]
            public int cbSize;
            [MarshalAs(UnmanagedType.U4)]
            public UInt32 dwTime;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            LASTINPUTINFO li = new LASTINPUTINFO();
            li.cbSize = Marshal.SizeOf(li);
            GetLastInputInfo(ref li);
            SetBacklight(Convert.ToInt32(Brightness / 200.0 * 100.0));
        }
...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.