Здравствуйте, Аноним, Вы писали:
А>[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());
}