PDA

View Full Version : خروج از برنامه در صورت عدم استفاده به مدت 5 دقیقه



cardano7
سه شنبه 10 خرداد 1390, 04:57 صبح
سلام
همان طور که میدونید در برنامه های حساس در صورت عدم استفاده به مدت مثلا 5 دقیقه برنامه دستور خروج را می دهد.
می خواهم بدونم بهینه ترین و کاملترین روش چیه؟ روش هایی را می دونم که کار میدهند. اما دنبال بهینه ترین روش می گردم. آیا تابعی وجود دارد که مستقیما آخرین زمان Interaction کاربر را بدهد؟

cardano7
سه شنبه 10 خرداد 1390, 05:26 صبح
ok
حل شد:


[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;
}

static long GetLastInputTime()
{
long idleTime = 0;
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);
lastInputInfo.dwTime = 0;
int envTicks = Environment.TickCount;
if (GetLastInputInfo(ref lastInputInfo))
{
uint lastInputTick = lastInputInfo.dwTime;
idleTime = envTicks - lastInputTick;
}
return ((idleTime > 0) ? (idleTime / 1000) : 0);
}

saman6384
سه شنبه 10 خرداد 1390, 06:19 صبح
فایل user32 رو از کجا میشه پیدا کرد؟
تو خوده فولدر سیستمه؟

cardano7
سه شنبه 10 خرداد 1390, 06:58 صبح
جزو dll های سیستم ویندوز هست. شما نیازی ندارید که دنبال اون بگردید.

C:\Windows\System32

saman6384
سه شنبه 10 خرداد 1390, 07:41 صبح
جایی سراغ داری که function های user32 gid32 kernel32 رو بشه پیدا کرد؟
با توضیحات البته!

cardano7
سه شنبه 10 خرداد 1390, 07:56 صبح
http://www.pinvoke.net/
پانل سمت چپ را ببینید.