Здравствуйте, Аноним, Вы писали:
А>здравствуйте господа !
А> Я пытаюсь применить функцию 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));
}
...