יום שני, 20 ביוני 2011

מניעת הרצת תוכנה ביותר מעותק אחד

ע"י חיפוש בין כל ה-Proccess שרצים במערכת נדע אם התוכנה כבר רצה
וכך נמנע מלהריץ אותה שוב -



חלק זה יהיה בראש הקובץ הראשי (במקרה של תוכנות windows - בראש הקובץ Program.cs).
חלק זה מחייב הוספה של ;using System.Diagnostics
public static Process PriorProcess() { // Returns a System.Diagnostics.Process pointing to // a pre-existing process with the same name as the // current one, if any; or null if the current process // is unique. Process curr = Process.GetCurrentProcess(); Process[] procs = Process.GetProcessesByName(curr.ProcessName); foreach (Process p in procs) { if ((p.Id != curr.Id) && (p.MainModule.FileName == curr.MainModule.FileName)) return p; } return null; }
הקוד מחזיר System.Diagnostics.Process שמצביע על תהליך מערכת קודם שכבר רץ, עם אותו השם של התהליך שאנו מנסים להריץ עכשיו. 
אחרת הקוד מחזיר null ואז מתאפשרת ריצה של התוכנה, ע"פ הקוד הבא.
יש להציב את הקוד הבא במיקום המתואר:
static void Main()
{ if (PriorProcess() != null) { MessageBox.Show(".עותק של התוכנה כבר עובד");   return;
} Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new main()); }

אין תגובות:

הוסף רשומת תגובה