منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سؤال حول فحص اذا كان برنامج قيد التشغيل او لا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم 
السلام عليكم ورحمة الله وبركاته 
اخوتي الاعزاء اشكركم على جهودكم لي  سؤال ارجو ان اجد اجابته عندكم
كيف يمكنني ان احدد اذا كان احد البرامج قيد التشغيل او انه لا يعمل 
فمثلا اريد ان افحص اذا كان برنامج الوورد قيد التشغيل او لا 
اريد كود يقوم بعملية الفحص ولكم مني جزيل الشكر وبارك الله فيكم جميعاً
هذا الكود شغال معي تمام
كود :
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
(01-01-19, 11:09 PM)ahmadpal كتب : [ -> ]
بسم الله الرحمن الرحيم 
السلام عليكم ورحمة الله وبركاته 
اخوتي الاعزاء اشكركم على جهودكم لي  سؤال ارجو ان اجد اجابته عندكم
كيف يمكنني ان احدد اذا كان احد البرامج قيد التشغيل او انه لا يعمل 
فمثلا اريد ان افحص اذا كان برنامج الوورد قيد التشغيل او لا 
اريد كود يقوم بعملية الفحص ولكم مني جزيل الشكر وبارك الله فيكم جميعاً


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

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

من خصائص المشروع في التبويب Application قم بالتأشير على Make single instance application
شكرا على الاجابات لكن لم تنجح المحاولة معي في الكود الخاص بالاخ  [b]عبدالله الصافي [/b]

اما الاخ الكريم     [b]a.wagdi[/b]     فليس هذا ما اقصد انا اريد برنامج ثانوي ان يفتح مع نفس البرنامج ولكن اذا كان البرنامج الثاني قيد التشغيل فأنا اريد ان لا يعمل مرة اخرى بالنسبه لكود تشغيل البرنامد الثانوي فلا مشكله لدي اما في فحص اذا كان البرنامج الثاني قيد التشغيل او فهذه هي المشكلة
مرحباً اخى 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

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

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