PDA

View Full Version : لاگین مجدد در صورت کار نکردن کاربر با برنامه



code_project
شنبه 17 آذر 1397, 10:03 صبح
سلام دوستان
من یه برنامه ویندوزی دارم. میخوام کاری کنم که اگه کاربر لاگین کرد و به مدت 5 دقیقه از زمان لاگینش گذشت و در برنامه کاری انجام نداد، برنامه بسته بشه و نیاز به لاگین مجدد باشه. ممنون میشم کمکم کنید.

alexmcse
شنبه 17 آذر 1397, 12:08 عصر
تست کنید
private void Form3_Load(object sender, EventArgs e) {
minute = DateTime.Now.Minute;
total =minute +5;
timer1.Enabled = true;


}


private int minute;
private int total;


private void timer1_Tick(object sender, EventArgs e)
{
minute = DateTime.Now.Minute;

if (minute ==(total) )
{
timer1.Enabled = false;

MessageBox.Show("ّFail");
//یا
Application.ExitThread();
//یا
//دستورات مورد نظر شما

}
}

code_project
شنبه 17 آذر 1397, 15:37 عصر
ممنون دوست گلم
این کد شما فقط یه تایمره که به 5 دقیقه که میرسه برنامه را میبنده. من این را نمیخوام. من میخوام اگر بعد از لاگین موفق کاربر، 5 دقیقه از آخرین حرکت موس یا کلیک کیبورد گذشته بود و کاربر اقدامی نکرده بود، برنامه به صفحه لاگین مجدد برگرده.

alexmcse
یک شنبه 18 آذر 1397, 13:01 عصر
دوست عزیز تست کنید
private int minute; private int total;


private void timer1_Tick(object sender, EventArgs e)
{
minute = DateTime.Now.Minute;

if (minute == total & MousePosition.X == px & MousePosition.Y == py&cValue ==cTotal )
{

timer1.Enabled = false;
Application.ExitThread();






}
else if (MousePosition.X != px & MousePosition.Y != py)
{
timer1.Enabled = false;

}
}





private void Form3_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ' ')
{
cValue = '0';
}else
cValue= e.KeyChar;

}


private int px;
private int py;
private char cValue;
private char cTotal;






private void Form3_MouseMove(object sender, MouseEventArgs e)
{
if (minute >= total)
timer1.Enabled = false;
Application.ExitThread();
}


private void btnLogin_Click(object sender, EventArgs e)
{
//کدهای مربوط به لوگین نوشته شود اگر لوگین شود کدهای زیر اجرا شوند در غیر این صورت کدهای مربوط به شما اجرا شوند
px = MousePosition.X;
py = MousePosition.Y;
cTotal = cValue;
minute = DateTime.Now.Minute;
total = minute +5;
timer1.Enabled = true;
}

Mahmoud.Afrad
یک شنبه 18 آذر 1397, 20:11 عصر
http://barnamenevis.org/showthread.php?536039-%D8%A8%D8%B3%D8%AA%D9%87-%D8%B4%D8%AF%D9%86-Login-%D9%85%D8%AC%D8%AF%D8%AF-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%B5%D9%88%D8%B1%D8%AA-%DA%A9%D8%A7%D8%B1-%D9%86%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%A7-%D8%A2%D9%86-Idleness

mrbm_2007
یک شنبه 18 آذر 1397, 20:47 عصر
با این کد می تونی زمان اخرین ورودی (input) کاربر رو تعیین کنی، یعنی چند ثانیه از اخرین کلیک، حرکت موس یا دکمه صفحه کلید گذشته
بعد توی تایمر چک کن، اگر بیشتر از 5 دقیقه (یعنی 300 ثانیه) بود، خودت می دونی چیکار کنی

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


[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO
{
public uint cbSize;
public int dwTime;
}
/// <summary>
/// Idle Time in seconds
/// </summary>
/// <returns></returns>
internal static double GetIdleTime()
{
var lii = new LASTINPUTINFO() { cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)) };
GetLastInputInfo(ref lii);
var res2 = (Environment.TickCount - lii.dwTime) / 1000.0;
return res2;
}


این رو هم یادت نره

using System;
using System.Runtime.InteropServices;

alexmcse
دوشنبه 19 آذر 1397, 17:46 عصر
با تشکر از کاربر mrbm_2007

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

[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO
{
public uint cbSize;
public readonly int dwTime;
}

internal static double GetIdleTime()
{
var lii = new LASTINPUTINFO() { cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)) };
GetLastInputInfo(ref lii);
var res2 = (Environment.TickCount - lii.dwTime) / 1000.0;
return res2;
}
private void timer1_Tick(object sender, EventArgs e)
{
var d = GetIdleTime();
Text =d.ToString(CultureInfo.InvariantCulture);
if (!(d >= 60)) return;
timer1.Enabled = false;
Application.ExitThread();
}

private void btnLogin_Click(object sender, EventArgs e)
{
//کدهای مربوط به لوگین نوشته شود اگر لوگین شود کدهای زیر اجرا شوند در غیر این صورت کدهای مربوط به شما اجرا شوند

timer1.Enabled = true;
}

code_project
چهارشنبه 29 اسفند 1397, 19:41 عصر
راستش من از کدهای آخر هیچی سر در نیاوردم
یه چیز دیگه. من eventهای mousemove و keypress ی که توش کدهای ریست تایمر را قرار دادم اصلا عمل نمیکنه. یعنی وقتی موس تکون میخوره یا کلیدی زده میشه، اصلا سراغ این رویدادها نمیره که تایمر را ریست کنه

رامین مرادی
چهارشنبه 07 فروردین 1398, 09:32 صبح
راستش من از کدهای آخر هیچی سر در نیاوردم
یه چیز دیگه. من eventهای mousemove و keypress ی که توش کدهای ریست تایمر را قرار دادم اصلا عمل نمیکنه. یعنی وقتی موس تکون میخوره یا کلیدی زده میشه، اصلا سراغ این رویدادها نمیره که تایمر را ریست کنه

باید خاصیت keypreview مربوط به فرم رو true کنید.