منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
سؤال حول فحص اذا كان برنامج قيد التشغيل او لا - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : سؤال حول فحص اذا كان برنامج قيد التشغيل او لا (/showthread.php?tid=28103)



سؤال حول فحص اذا كان برنامج قيد التشغيل او لا - ahmadpal - 01-01-19

بسم الله الرحمن الرحيم 
السلام عليكم ورحمة الله وبركاته 
اخوتي الاعزاء اشكركم على جهودكم لي  سؤال ارجو ان اجد اجابته عندكم
كيف يمكنني ان احدد اذا كان احد البرامج قيد التشغيل او انه لا يعمل 
فمثلا اريد ان افحص اذا كان برنامج الوورد قيد التشغيل او لا 
اريد كود يقوم بعملية الفحص ولكم مني جزيل الشكر وبارك الله فيكم جميعاً



RE: سؤال حول فحص اذا كان برنامج قيد التشغيل او لا - عبدالله الصافي - 01-01-19

هذا الكود شغال معي تمام
كود :
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       Dim x_appname As String
       x_appname = "VB6"
       IsApplicationRunning(x_appname)
   End Sub

   Private Sub IsApplicationRunning(ByVal ApplicationName As String)
       Try
           Dim Currentprocess() As Process = Process.GetProcessesByName(ApplicationName)

           If Not Currentprocess Is Nothing Then

               For Each RunningProcess As Process In Currentprocess

                   If RunningProcess.ProcessName = ApplicationName Then
                       MessageBox.Show(ApplicationName & " is already running")
                   End If

               Next

           End If

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

   End Sub



RE: سؤال حول فحص اذا كان برنامج قيد التشغيل او لا - a.wagdi - 01-01-19

(01-01-19, 11:09 PM)ahmadpal كتب :
بسم الله الرحمن الرحيم 
السلام عليكم ورحمة الله وبركاته 
اخوتي الاعزاء اشكركم على جهودكم لي  سؤال ارجو ان اجد اجابته عندكم
كيف يمكنني ان احدد اذا كان احد البرامج قيد التشغيل او انه لا يعمل 
فمثلا اريد ان افحص اذا كان برنامج الوورد قيد التشغيل او لا 
اريد كود يقوم بعملية الفحص ولكم مني جزيل الشكر وبارك الله فيكم جميعاً


وعليكم السلام ورحمة الله وبركاته

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

من خصائص المشروع في التبويب Application قم بالتأشير على Make single instance application



RE: سؤال حول فحص اذا كان برنامج قيد التشغيل او لا - ahmadpal - 06-01-19

شكرا على الاجابات لكن لم تنجح المحاولة معي في الكود الخاص بالاخ  [b]عبدالله الصافي [/b]

اما الاخ الكريم     [b]a.wagdi[/b]     فليس هذا ما اقصد انا اريد برنامج ثانوي ان يفتح مع نفس البرنامج ولكن اذا كان البرنامج الثاني قيد التشغيل فأنا اريد ان لا يعمل مرة اخرى بالنسبه لكود تشغيل البرنامد الثانوي فلا مشكله لدي اما في فحص اذا كان البرنامج الثاني قيد التشغيل او فهذه هي المشكلة


RE: سؤال حول فحص اذا كان برنامج قيد التشغيل او لا - elgokr - 07-01-19

مرحباً اخى ahmadpal

كود الاخ عبدالله الصافي
هو الانسب لك بنائاً على ردك الاخير
ولكن يبدو انك تعاملت مع الكود كا نسخ ولصق فقط

وحتى تكون الامور مبسطة وسلسة بدون اى تعقيدات
تابع معى الكود التالى وطريقة الاستخدام وستكون الامور ابسط من ما يكون

الكود الاول وهو اضافة Sub
كود :
   Private Sub CheckIfRunning(ByVal NProgram As String)
       Dim p() As Process
       p = Process.GetProcessesByName(NProgram)
       If p.Count > 0 Then
           ' ضع الكود المراد التعامل معه فى حالة ان البرنامج يعمل
       Else
           ' وهنا فى حالة انه لا يعمل نفذ الكود المراد تنفيذه
       End If
   End Sub

الان ناتى فى اى حدث وليكن داخل زر ونطبق السطر التالى
كود :
       CheckIfRunning("Notepad")

طيب بداً من اسم او كلمة Notepad كيف يمكننى كتابة الاسم المراد كتابته لاسم البرنامج
لاتمام اامر كل ما عليك فعله التالى قم بفتح Task Manager
من ثم قم بتشغيل البرنامج الذى لديك لمعرفة اسمه ثم حاحظ كما فى الصورة التالية


لاحظ الاسم الذى يدرج فى عمود Name هنا يتم تطبيق الاسم لتوضع بدلاً من المسمى فى الكود
تذكر ان هذا الكود يعمل على البرامج الخارجية وليس على فورم اخر داخل المشروع 

الان يفترض ان يكون الشكل النهائي لديك على سبيل المثال بهذا الشكل الخاص بـ Sub
كود :
   Private Sub CheckIfRunning(ByVal NProgram As String)
       Dim p() As Process
       p = Process.GetProcessesByName(NProgram)
       If p.Count > 0 Then
           ' ضع الكود المراد التعامل معه فى حالة ان البرنامج يعمل
           MsgBox("عفواً البرنامج يعمل مسبقاً الرجاء اغلاقه البرنامج لاتمام العملية")
       Else
           ' وهنا فى حالة انه لا يعمل نفذ الكود المراد تنفيذه
           Process.Start("C:\myprogram.exe")
           ' Or
           ' Process.Start("Notepad")
       End If
   End Sub

اتمنى ان تكون الصورة كاملة ومبسطة لديك الان

تحيات لك
وتمنياتى لك التوفيق