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

ماهو كود التأكد من تشغيل برنامج ما في إدارة المهام بارك الله فيكم

بدأه M.555 في 12 مارس 2008 · 7 رد · 1,317 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أخواني أريد كود التأكد من تشغيل برنامج ما في التاسك منجر

لو نفرض أن البرنامج في التاسك منجر أسمة Test.exe

طبعا لاأقصد أسم النافذة لأن البرنامج لايظهر في Applications بل موجود فقط في Processes

أثابكم الله وحفظكم من كل مكروه

#2

? UP????????????????????????????

#3

If App.PrevInstance = True Then

MsgBox "لايمكن تشغيل اكثر من نسخة من البرنامج"

Unload Me

Exit Sub

End If

#4

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

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

والأكواد موجودة بكثرة لجلب البرامج المشغلة في الذاكرة

فقط يبقى علينا التأكد من أن البرنامج موجود في القائمة

يمكننا انشاء دالة تقوم بهذا العمل ببساطة

دوال الAPI المستعملة

Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
 Const TH32CS_SNAPMODULE = &H8
 Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
 Const TH32CS_INHERIT = &H80000000
 Const MAX_PATH As Integer = 260
 Private Type PROCESSENTRY32
	 dwSize As Long
	 cntUsage As Long
	 th32ProcessID As Long
	 th32DefaultHeapID As Long
	 th32ModuleID As Long
	 cntThreads As Long
	 th32ParentProcessID As Long
	 pcPriClassBase As Long
	 dwFlags As Long
	 szExeFile As String * MAX_PATH
 End Type
 Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
 Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
 Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
 Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)

الدالة

 Private Function IsRunning(ByVal mProcess As String) As Boolean
	 IsRunning = False
	 Dim hSnapShot As Long, uProcess As PROCESSENTRY32
	 hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
	 uProcess.dwSize = Len(uProcess)
	 r = Process32First(hSnapShot, uProcess)
	 Do While r
	  aPr = Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, _
	  InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))
	  If aPr = mProcess Then
	   IsRunning = True
	   Exit Do
	  End If
	 r = Process32Next(hSnapShot, uProcess)
	 Loop
	 CloseHandle hSnapShot
 End Function

طبعا هنا للتأكد من أن البرنامج Test.exe مشغل

نستعمل الكالة التي أنشأناها ونمرر لها اسم البرنامج

بالتوفيق

تم تعديل هذه المشاركة بواسطة DreamNet في 15 مارس 2008 في 14:11

#5

أخواني ياسر و دريم نت بارك الله فيكم ويسر أمركم ورزقكم الذرية الصالحة

وفقكم الله فيما يحب ويرضى

تم تعديل هذه المشاركة بواسطة M.555 في 15 مارس 2008 في 14:07

#7

ممكن أخواني توضحون لي الكود الموضح في رد الاخ

dreamNet

لأني مبتدئ فما فهمت الاكواد ....

والمطلوب أخواني تغيير أو تعديل الكود السابق للتأكد من وجود برنامج مثلا: sqlmangr في الـ process ..

وفي حالة وجوده تظهر رسالة "البرنامج يعمل الان" ...

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

#8

يمكنك استعمال الدالة المنشئة IsRunning للتأكد من أن البرنامج يعمل

قم باضافة الاكواد الموضوعة سابقا وفي زر أمر أكتب الكود التالي:

If IsRunning("sqlmangr.exe") Then
MsgBox "البرنامج يعمل الان"
End If

بالتوفيق

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…