السلام عليكم
عند أستدعاء برنامج خارجي(عن طريق الامر shell) لعمل وظيفة معينة. كيف اعرف انه أنهى عمله ليبدأ برنامجي العمل مرة أخرى.
شكرا
السلام عليكم
عند أستدعاء برنامج خارجي(عن طريق الامر shell) لعمل وظيفة معينة. كيف اعرف انه أنهى عمله ليبدأ برنامجي العمل مرة أخرى.
شكرا
حسب مافهمت فانت تريد معرفة مااذا كان ال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بالتوفيق للجميع
والله يا أخي إنك داهية
وش هذه الروعة
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…