الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

درس : تشغيل البرنامج مرة واحدة فقط

مغلق
بدأه baghdadi في 4 أغسطس 2005 · 6 رد · 708 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في إطار خطة إيصال المعلومات إلى غاية عندكم و تماشيا مع إقتراحي السابق أقدم لكم هذا الكود الذي أعجبني كثيرا و لم أرد

تفويت الفرصة عليكم .

هذا الكود يمنع البرنامج من أن يشتغل مرتين في نفس الوقت .

ملاحظة : هذا الموضوع قمت بنسخه من موقع و هو للكاتب محمد حلبي جازاه الله خيرا .

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
class AppMain
{
      [DllImport("user32.dll")] private static extern 
      bool SetForegroundWindow(IntPtr hWnd);
      [DllImport("user32.dll")] private static extern 
      bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
      [DllImport("user32.dll")] private static extern 
      bool IsIconic(IntPtr hWnd);

      private const int SW_HIDE = 0;
      private const int SW_SHOWNORMAL = 1;
      private const int SW_SHOWMINIMIZED = 2;
      private const int SW_SHOWMAXIMIZED = 3;
      private const int SW_SHOWNOACTIVATE = 4;
      private const int SW_RESTORE = 9;
      private const int SW_SHOWDEFAULT = 10;

      static void Main()
      {
            // جلب اسم البرنامج
            string proc=Process.GetCurrentProcess().ProcessName;
            // جلب كل البرامج التي تعمل الان
            Process[] processes=Process.GetProcessesByName(proc);
            // اذا كان هنالك اكثر من برنامح واحد يعمل...
            if (processes.Length > 1)
            {
                  // جلب اسم البرنامج
                  Process p=Process.GetCurrentProcess();
                  int n=0; // assume the other process is at index 0
                  // اذا كان معرف البرنامج هو معرف برنامجنا...
                  if (processes[0].Id==p.Id)
                  {
                        n=1;
                  }
                  // جلب قابض "handle" النافذة
                  IntPtr hWnd=processes[n].MainWindowHandle;

                  if (IsIconic(hWnd))
                  {
                        ShowWindowAsync(hWnd, SW_RESTORE);
                  }
                  // عرض النسخة الاولى وجلبها للامام
                  SetForegroundWindow(hWnd);
                  // الخروج من النسخة الحالية
                  return;
            }
            // اكتب باقي شيفرة برنامجك........
      }
}

أتمنى أني قد أفدتكم ، والله ولي التوفيق

سبب ضياع العباد أنهم مسلمون بالوراثة ــ هل فكرت في علة خلقك ؟

شاركني بأفكارك -

على موقعي

#2

جزاك الله خيراً اخي , فعل الكود فيه الكثير من الافكار

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#3

أتمنى فقط أن تفيدوني بما لكم من ملاحظات ، أو تحسينات على الكود .

و جازاكم الله خيرا

سبب ضياع العباد أنهم مسلمون بالوراثة ــ هل فكرت في علة خلقك ؟

شاركني بأفكارك -

على موقعي

#4

يمكنك مراجعة هذا الرابط

/index.php?showtopic=68762

و فوق كل ذي علم عليم

#6

رجاء أخي baghdadi البحث عما تريد في المنتدى قبل اضافة موضوع جديد لاجل عدم التكرار

و فوق كل ذي علم عليم

#7

و الله أفدتنا يا أخ baghdadi واصل فنحن معك

هذا الموضوع مغلق.

مواضيع مشابهة