Re: GetLastInputInfo
От: Мизантроп  
Дата: 29.11.09 13:56
Оценка:
Здравствуйте, Аноним, Вы писали:

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

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

Эта функция принимает указатель на структуру — нужен ref. Её поля должны быть размером по 4 байта, идти последовательно, и необходимо перед вызовом проинициализировать поле cbSize размером структуры.
Вот так вроде работает:

        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        internal static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
        [StructLayout(LayoutKind.Sequential)]
        internal struct LASTINPUTINFO
        {
            internal uint cbSize;
            internal UInt32 dwTime;
        }

        private void button8_Click(object sender, EventArgs e)
        {
            LASTINPUTINFO lif = default(LASTINPUTINFO);
            lif.cbSize = (uint)Marshal.SizeOf(lif);
            if (GetLastInputInfo(ref lif)) MessageBox.Show(lif.dwTime.ToString());
        }
"Нормальные герои всегда идут в обход!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.