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

استدعاء برنامج خارجي بأمر(shell) لعمل وظيفو معينة

بدأه elshorbagy في 2 مايو 2008 · 2 رد · 644 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عند أستدعاء برنامج خارجي(عن طريق الامر shell) لعمل وظيفة معينة. كيف اعرف انه أنهى عمله ليبدأ برنامجي العمل مرة أخرى.

شكرا

#2

حسب مافهمت فانت تريد معرفة مااذا كان الProcessus المنشئ من الأمر Shell قد انتهى عمله

طبعا الأمر Shell يرجع لنا قيمة تعبر عن الPID او معرف البروسيسوس المنشئ

بعدها يمكن جلب مقبض هذا الPID باستعمال الدالة OpenProcess

ثم نستعمل الدالة WaitForSingleObject

مع المقبض المتحصل عليه من أجل انتظار تغير حالة هذا البروسيوس (حتى يتم غلقه) سترجع لنا قيمة وبذلك نقول أن الShell قد انتهى تنفيذه

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

Private Declare Function OpenProcess Lib "kernel32" ( _
	  ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
	  ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" ( _
	  ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
	  ByVal hObject As Long) As Long

الكود

 Dim lPid As Long
 Dim hWnd As Long
 Dim lRet As Long
 lPid = Shell("CMD", vbNormalFocus)
 If lPid <> 0 Then
 hWnd = OpenProcess(&H100000, 0, lPid)
 If hWnd <> 0 Then
   lRet = WaitForSingleObject(hWnd, &HFFFF)
   CloseHandle (hWnd)
 End If
   MsgBox "Shell Terminated"
 End If

بالتوفيق للجميع

#3

والله يا أخي إنك داهية

وش هذه الروعة

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

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

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

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

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