PDA

View Full Version : سوال: همون قصه ی Run شدن یک نسخه از نرم افزار



Alt+F4
دوشنبه 12 مرداد 1388, 14:32 عصر
من از این کد برای run شدن فقط یک نسخه از نرم افزار استفاده میکنم؛ میخواستم بپرسم که به نظر برنامه نویسای محترم این قطعه کد اشکالی ایجاد نکنه.!(تو این کد من همه ی پروسس های در حال ران رو چک میکنم و اگه پروسسی همنام با برنامه ی من وجود نداشت به اون اجازه ی اجرا میدم)
و اینکه آیا این کد در همه ی سیستم عامل ها جواب میده؟ (من تو ویندوز تستش کردم. مشکلی نداشت)



using System.Diagnostics;

using System.Runtime.InteropServices;

static

void Main()

{
Process[] parr = Process.GetProcesses();
int counter = 0;
if (parr.Length > 0)
{
int num2 = parr.Length - 1;
for (int num1 = 0; num1 <= num2; num1++)
if (parr[num1].ProcessName.ToString().ToLower() == "test8")
counter++;
}
//
if (counter <= 1)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(newForm1());
}
}

tdkhakpur
دوشنبه 12 مرداد 1388, 14:45 عصر
سلام
چرا این برنامه ایجاد اشکال خواهد کرد. شما برای اینکه کارتان رو به راه بشه از Atoms استفاده کنید .

Alt+F4
دوشنبه 12 مرداد 1388, 14:56 عصر
چرا؟

و در موردAtoms خواهشأ بیشتر توضیح بدین

hozouri
دوشنبه 12 مرداد 1388, 15:58 عصر
دوست عزیز اگر با این راه هم آشنایی ندارید می تونید از رجیستری استفاده کنید...

البته یک سری از نرم افزار های ساخت Setup هم در خودشون همچین امکانی را ارائه می نمایند ...

Amir Oveisi
دوشنبه 12 مرداد 1388, 19:39 عصر
میتونین از کلاس Mutex استفاده کنید.
http://barnamenevis.org/forum/showthread.php?t=155178&highlight=Mutex

موفق باشید

Alt+F4
دوشنبه 12 مرداد 1388, 22:11 عصر
آقا مرسی با این mutex نوشتم حل شد
. ولی میشه یکی بگه اشکال کدی که من نوشته بودم کجا بود؟:بوس:
و اینکه این دو چه تفاوتی از لحاظ کارکرد با هم دارن؟:متفکر:

tdkhakpur
دوشنبه 12 مرداد 1388, 22:24 عصر
سلام


int identifierNo;
identifierNo = GlobalFindAtom("اسم برنامه شما");
if( identifierNo !=0 ) exit(0);
else
identifierNo = GlobalAddAtom("اسم برنامه شما");

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

Amir Oveisi
سه شنبه 13 مرداد 1388, 19:18 عصر
مشکلات کد شما:
1- سربار زمانی بیهوده داره
2-اگر process دیگه ای با اسم برنامه شما در حال اجرا باشه برنامه شما هیچ وقت اجرا نمیشه.

برای آشنایی با Mutex میتونین در مورد semaphore ها مطالعه کنید.

tdkhakpur
سه شنبه 13 مرداد 1388, 20:33 عصر
مشکلات کد شما:
1- سربار زمانی بیهوده داره
2-اگر process دیگه ای با اسم برنامه شما در حال اجرا باشه برنامه شما هیچ وقت اجرا نمیشه.

برای آشنایی با Mutex میتونین در مورد semaphore ها مطالعه کنید.
خوب این کدها را من نساختم همانطور که mutex ساخته شما نیست عزیز اگر کاربر زیرک باشد میتواند از مشکلات نه چندان باارزشی که شما ذکرش را کردید بگذرد.

1- سربار زمانی بیهوده داره
خاک توی سر اون زمانی که به خاطر یک بررسی از دست بره.:لبخندساده:

Amir Oveisi
سه شنبه 13 مرداد 1388, 20:50 عصر
خوب این کدها را من نساختم همانطور که mutex ساخته شما نیست عزیز اگر کاربر زیرک باشد میتواند از مشکلات نه چندان باارزشی که شما ذکرش را کردید بگذرد.

خاک توی سر اون زمانی که به خاطر یک بررسی از دست بره.:لبخندساده:

دوست گرامی پست بنده در جواب پست Alt + F4 بود و به پست شما ارتباطی نداره اصلا.

در ضمن با این تفکر که چون کاربر زیرکه پس میتونه روش غیر اصولی رو برای یه کاری استفاده کنه خیلی منطقی نیست.

موفق باشید