PDA

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



rerzaz
یک شنبه 03 اردیبهشت 1396, 08:46 صبح
سلام خسته نباشید
چطور می تونم از باز شدن بیش از یک بار ، نرم افزار جلوگیری کنم؟

sadeghpa80
یک شنبه 03 اردیبهشت 1396, 09:52 صبح
بنظر من میتونید یه چیزی حالا مثلا تیبل تو دیتابیس داشته باشید که هر زمان برنامه اجرا شد true بشه
و تو اجرای برنامه اونو چک کنید اگه true بود پیغام بده که برنامه درحال اجرا شده هست
هر زمان هم اون برنامه اول رو بست false بشه

مشکلی که هست اینه اگه وسط کار که برنامه بازه برق بره یا برنامه error بده و بسته بشه اون همون true میمونه
ولی شاید بشه یه تایمری بزارید که یه جوری بره چک کنه ببینه که برنامه بازه یا نه

یا مثلا تو همون تیبل دیتابیس یه تایم هم بزارید
و برنامه شما هر 5 دقیقه بره state = true کنه
بعد تو باز کردن برنامه چک کنید زمان فعلی سیستم رو با اون آخرین زمانی که دیتابیس ثبت کرده ( قرار بود هر 5 دقیقه باشه ) اگه بیشتر از 5 دقیقه بود یعنی برنامه بصورت غیر طبیعی بسته شده و میتونید کنترلش کنید


بازم اساتید هستند و میتونن بهتر کمک کنن
من به عقل ناقصم این رسید

group45
یک شنبه 03 اردیبهشت 1396, 09:56 صبح
همینجا قبلا یادمه دیدمش جوابتونو
یه سرچ کنید پیدا میکنید
کارشم این بود توی سروسه های در حال اجرا می گشت دنبال برنامه در زمان اجرای برنامه و اگر دید پروسه ای رو برنامه رو اجرا نکنه

rerzaz
یک شنبه 03 اردیبهشت 1396, 10:08 صبح
همینجا قبلا یادمه دیدمش جوابتونو
یه سرچ کنید پیدا میکنید
کارشم این بود توی سروسه های در حال اجرا می گشت دنبال برنامه در زمان اجرای برنامه و اگر دید پروسه ای رو برنامه رو اجرا نکنه
من جستجوکردمنبود

Mahmoud.Afrad
یک شنبه 03 اردیبهشت 1396, 14:30 عصر
http://barnamenevis.org/showthread.php?403108-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%AA%D9%86%D9%87%D8%A7-%DB%8C%DA%A9-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D8%A7%D8%AC%D8%B1%D8%A7
http://barnamenevis.org/showthread.php?380600-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D8%B5%D9%88%D8%B1%D8%AA-%D8%A7%D8%AC%D8%B1%D8%A7
http://barnamenevis.org/showthread.php?329720-%D8%B9%D8%AF%D9%85-%D8%A8%D8%A7%D8%B2-%D8%B4%D8%AF%D9%86-%D9%85%D8%AC%D8%AF%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87

samiasoft
یک شنبه 03 اردیبهشت 1396, 21:25 عصر
نیاز به هیچ دستور یا....نیست

خود ماکروسافت این تنظیم رو برای ویژوال قرار داده...کافیه تیک زیر رو فعال کنید :

http://s9.picofile.com/file/8292926526/2017_04_23_215422.jpg

samiasoft
جمعه 12 خرداد 1396, 19:28 عصر
اجرای فقط یک نسخه از برنامه سی شارپ به روش mutex


در پروژه ویندوفرم سی شارپ خود از بخش Solution فایل program.cs را باز کنید و کد را بصورت زیر تغییر دهید

static void Main()
{

bool runed;

System.Threading.Mutex mtx = new System.Threading.Mutex(true,"ApplicationName",out runed);

if (!runed)

{

MessageBox.Show("برنامه در حال اجرا است");

}

else

{

Application.Run(new Form1());

}

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(fals e);



}



گفتنی است در عبارت mutext پارامتر اول مقداری true میگیرد و مقدار دوم یک رشته با مقدار اختیاری که معمولا نام برنامه می باشد و مقدار سوم یک متغیر با مقدار خارجی از نوع bool
میگیرد
بعد از اجرا mutex حالا bool تعریف شده در اول دارای مقدار است (چون از نوع out داخل تابع میباشد)
با برسی درست یا اشتباه بودن مقدار runed میتوان وضعیت برنامه را تشخیص داد که اگر در حال اجرا است با اجرا مجدد یک پیام به کاربر نشان دهد
در غیر این صورت برنامه اجرا گردد

گفتنی است در عبارت mutext پارامتر اول مقداری true میگیرد و مقدار دوم یک رشته با مقدار اختیاری که معمولا نام برنامه می باشد و مقدار سوم یک متغیر با مقدار خارجی از نوع bool

میگیرد

بعد از اجرا mutex حالا bool تعریف شده در اول دارای مقدار است (چون از نوع out داخل تابع میباشد)

با برسی درست یا اشتباه بودن مقدار runed میتوان وضعیت برنامه را تشخیص داد که اگر در حال اجرا است با اجرا مجدد یک پیام به کاربر نشان دهد

در غیر این صورت برنامه اجرا گردد