ايران ويج

نسخه‌ی کامل: بستن یه برنامه در حال پردازش
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام بر دوستان عزیز
من یه مشکلی داشتم . من می خواستم یه برنامه درحال اجرا مثل اکسل را ببندم .
مثلا اگه برنامه اکسل را باز کنیم و کلیدهای Ctrl + Alt +Del را بزنیم و وارد سربرگ دوم Processes شویم اگه فایل EXCEL.EXE را end Processes کنیم برنامه اکسل بسته می شود . حال می خواستم بدانم که در ویژوال بیسیک 6 چگونه می توانم این فایل را end Processes کنم و در واقع برنامه اکسل باز را ببندم .
با تشکر از همکاری شما دوست عزیزم
از دوستان کسی نیست که بتونه مشکل من را حل کنه ؟
باید از تابع TerminateProcess استفاده کنید مثال هم که الی ماشااله همه جا هست
دوست عزيز
همونطور كه مبين گفت راه حل براي شما خيلي زياده، از اون بيشتر سورس كد و تابع آماده و ... هست ،‌هم مي شه با

استفاده از توابع API اين كار رو كرد هم با استفاده از دستور كيل پروسس تو محيط داس، اما دستورات API جذابيت بيشتري داره!!

كدهاي زير رو داخل يك ماژول كپي كن :

کد:
Private Const MAX_PATH As Long = 260
Private Const TH32CS_SNAPPROCESS = &H2&
Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Private Const PROCESS_TERMINATE As Long = (&H1)

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.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long


Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpExitCode As Long) As Long


Sub KillProcess(ByVal sExeName As String)
Dim lSnapshot As Long, lNextProcess As Long
Dim tPE As PROCESSENTRY32

    ' Create Snapshot
    lSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
    If lSnapshot <> -1 Then
        tPE.dwSize = LenB(tPE)
        ' Find first process
        lNextProcess = Process32First(lSnapshot, tPE)
        Do While lNextProcess
            ' Find specified process
            If UCase(sExeName) = UCase(Left(tPE.szExeFile, Len(sExeName))) And Len(sExeName) > 0 Then
                Dim lProcess As Long
                Dim lExitCode As Long
                                  
                ' Open Process
                lProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_TERMINATE, False, tPE.th32ProcessID)
                ' Get Exitcode
                GetExitCodeProcess lProcess, lExitCode
                ' Terminate Process
                TerminateProcess lProcess, lExitCode
                ' Close Handle
                CloseHandle (lProcess)
                Exit Do
            End If
            lNextProcess = Process32Next(lSnapshot, tPE)
        Loop
        ' Close Handle
        CloseHandle (lProcess)
    End If
End Sub
خوب حالا كافيه اسم هر پروسسي كه خواستي تو تابع بالا قرار بدي تا بسته بشه

کد:
KillProcess ("EXCEL.exe")
این روش هم جواب میده!
کد:
shell"tskill taskmgr"
بجای taskmgr اسم برنامه ای که قرار هست بسته بشه بنویسید!