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

كود اليوم 16 : في انتظار الانتهاء من امر shell....

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

تستطيع ان تشغل البرامج بأستخدام الامر shell . ولكن....

كيف تعرف ان البرنامج الذي شغلته باستخدام هذا الامر قد انتهى من تنفيذ مهمته او ان المستخدم قد انهاه لتقوم انت بأستئناف عملك بناء على ما حدث؟؟

يمكنك ذلك باستخدام القيمه التي يرجعها الامر shell في دوال API بسيطه .

المثال التالي يحتاج الى فورم و زر عند الضغط عليه سيفتح الNotepad و عند انهاءها سيعرض البرنامج رساله تخبرك بذلك.

Option Explicit



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



Private Const SYNCHRONIZE = &H100000

Private Const INFINITE = -1&

و في الزر:

Dim process_id As Long

Dim process_handle As Long

Dim s

    ' Start the program, 'shell' will give us 'task ID '   

 On Error GoTo ShellError

    process_id = Shell("notepad", vbNormalFocus)



    On Error GoTo 0

    DoEvents



    ' Wait for the program to finish.

    ' Get the process handle by converting 'task ID' to process handle    

process_handle = OpenProcess(SYNCHRONIZE, 0, process_id)

    If process_handle <> 0 Then

        WaitForSingleObject process_handle, INFINITE

        CloseHandle process_handle

    End If

    

    'when finished show msgbox    

MsgBox "Program ended!"

    Exit Sub



ShellError:

    MsgBox "Error starting task " & vbCrLf & Err.Description

run_and_wait.zip

#2

شكرا لك أخي على جهودك ننتظر منك المزيد .

أخوك : سعد (f)

هذا الموضوع مغلق.

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