PDA

View Full Version : سوال: Minimize شدن برنامه بعد از مدت زمان بیکاری معینی



forodo
یک شنبه 06 بهمن 1392, 10:49 صبح
سلام
من می خوام مثلاً بعد از 60 ثانیه که هیچ کاری در برنامه ام انجام نشد برنامه Minimize شود.
با تابع کتابخانه ای زیر می شود این کار رو انجام داد ولی این کد برای کل سیستم هستش یعنی وقتی که من حتی دارم درون ورد چیزی می نویسم برنامه ام هم از حالت بیکاری در میاد.
مشکل دیگه ای که هست اینه که وقتی مثلاً Power DVD در حال پخش فیلم هستش هر 10 ثانیه نمی دونم چه اتفاقی می افته که سیستم از حالت بیکاری درمیاد به همین دلیل اصلاً نمی تونم از اون تابع کتابخانه ای استفاده کنم.
لطفاً بگید چه کاری می تونم انجام بدم.
این هم کدای تابع کتابخانه ای که به دردم نمی خوره :

struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}


[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
public static uint GetIdleTime()
{
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeO f(lastInPut);
GetLastInputInfo(ref lastInPut);

return ((uint)Environment.TickCount - lastInPut.dwTime);
}

private void timer1_Tick(object sender, EventArgs e)
{
this.Text = (GetIdleTime() / 1000).ToString();
if ((GetIdleTime() / 1000) > 60)
{
this.WindowState = FormWindowState.Minimized;
}
}

Mani_rf
یک شنبه 06 بهمن 1392, 10:54 صبح
مطالعه این تاپیک (http://barnamenevis.org/showthread.php?436760-%D8%A8%D8%B3%D8%AA%D9%87-%D8%B4%D8%AF%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-...) در انجام این کار به شما کمک خواهد کرد.

forodo
یک شنبه 06 بهمن 1392, 12:04 عصر
از اون تاپیک چیزی متوجه نشدم.
این لینک (http://stackoverflow.com/questions/15490915/what-is-the-proper-way-to-programmatically-close-a-winforms-application-after-a) هم پیدا کرده بودم ولی هرچی باهاش کار کردم نشد برای همین تاپیک زدم.

AmiRReZzZzA
یک شنبه 06 بهمن 1392, 13:53 عصر
سلام یکی از راه حل های ساده این کار می تواند استفاده از ایونت فرم Deactivated باشه که مثلا یک تایمر رو استارت کنه و تو ایونت فرم Activated تایمر استاپ بشود

forodo
یک شنبه 06 بهمن 1392, 14:10 عصر
سلام یکی از راه حل های ساده این کار می تواند استفاده از ایونت فرم Deactivated باشه که مثلا یک تایمر رو استارت کنه و تو ایونت فرم Activated تایمر استاپ بشود
یعنی ایول داری.
خفن ساده و مفید و کار راه انداز
خیلی ممنون.

Mani_rf
یک شنبه 06 بهمن 1392, 16:06 عصر
سلام یکی از راه حل های ساده این کار می تواند استفاده از ایونت فرم Deactivated باشه که مثلا یک تایمر رو استارت کنه و تو ایونت فرم Activated تایمر استاپ بشود

آخه مشکل اینجاست که فکر میکنم اگه برنامه چند تا فرم داشته باشه و کاربر از فرم اصلی به یک فرم فرعی هم بره رویداد Deactive فرم اصلی شما فراخوانی میشه در صورتی که کاربر داره با برنامه کار میکنه!

forodo
یک شنبه 06 بهمن 1392, 16:17 عصر
آخه مشکل اینجاست که فکر میکنم اگه برنامه چند تا فرم داشته باشه و کاربر از فرم اصلی به یک فرم فرعی هم بری رویداد Deactive فرم اصلی شما فراخوانی میشه در صورتی که کاربر داره با برنامه کار میکنه!
کاملاً درسته.
ولی من توی این برنامه ای که برای خودم نوشتم و فیلمهام رو براساس ژانر و بازیگر لیست می کنه و می خوام از اونجا فیلمهام رو ببینم و فقط یک فرم دارم خیلی راه خوبی بود.
من می خواستم وقتی که فیلم رو اجرا می کنم بعد از 5 دقیقه اگر به برنامه ام برنگشتم فرمم مینیمایز بشه که با این راه درست شد.
ولی راه شما، البته من عرض کردم که بنده متوجه نشدم باید بهتر باشه.
اگر لطف کنید و یک مثال بذارید خیلی عالی میشه چون تو پستهای قبلی هم یه لینک گذاشتم که چیزی از اون متوجه نشدم.

البته اینم بگم که میشه برای هر فرم اون رویدادهارو صدا کرد ولی من که عمراً همچین کاری نکنم وقتی 50تا فرم هستش. :کف:

AmiRReZzZzA
یک شنبه 06 بهمن 1392, 19:17 عصر
آخه مشکل اینجاست که فکر میکنم اگه برنامه چند تا فرم داشته باشه و کاربر از فرم اصلی به یک فرم فرعی هم بری رویداد Deactive فرم اصلی شما فراخوانی میشه در صورتی که کاربر داره با برنامه کار میکنه!

سلام . مرسی از راهنماییتون ، ولی برای این کار ها می توانیم از روش های ساده دیگه ( البته شاید کد بیشتری لازم باشه) استفاده کرد که مثلا در رویداد deactive فرم بنویسیم اگر بقیه فرم ها اکتیو بودن که هیچ ، وگرنه تایمر استارت شود :ی البته این روش ها بیشتر برای ما هست که فعلا مبتدی هستیم . ولی در حال دوست داریم به بقیه کمک کنیم که کارشون راه بیافته .

forodo
یک شنبه 06 بهمن 1392, 19:45 عصر
مطالعه این تاپیک (http://barnamenevis.org/showthread.php?436760-%D8%A8%D8%B3%D8%AA%D9%87-%D8%B4%D8%AF%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-...) در انجام این کار به شما کمک خواهد کرد.
نمی دونم روشی که شما گفتید به چه شکله ولی بالاخره باید کدا رو درون یک رویداد نوشت.
اون رویداد چه رویدادی است و توی کدام فرم باید نوشته شود.
توی اون تاپیک هم کسی به جواب نرسیده.
لطفاً بیشتر راهنمایی کنید.