PDA

View Full Version : سوال: بستن برنامه ای از داخل برنامه



albalooband
سه شنبه 11 فروردین 1388, 15:56 عصر
سلام
چطور میتونم برنامه ای رو از داخل برنامم ببندم؟
مثلا من برنامه ای دارم که در حال اجراست و در process با نام test.exe نمایش داده میشه
چطور از تو برنامم اونو ببندم؟

xxxxx_xxxxx
چهارشنبه 12 فروردین 1388, 05:01 صبح
سلام
دوست عزيز قبل از ايجاد تاپيك جستجو كنيد:
بستن يك برنامه ديگر از داخل برنامه (http://barnamenevis.org/forum/showthread.php?t=147831)
روشي كه تو اين تاپيك گفته شده نياز به هندل اون برنامه داره و درواقع پيغامي به برنامه مذكور فرستاده ميشه كه بسته شو. ولي اگر منظور شما kill كردن پروسس هست باز هم جستجو كنيد موارد زيادي پيدا مي كنيد.

albalooband
چهارشنبه 12 فروردین 1388, 12:27 عصر
اگر بخوام واسه برنامم شرط بزارم که اگر test.exe در حال اجرا بود پیغام بده
باید چیکار کنم؟

xxxxx_xxxxx
جمعه 14 فروردین 1388, 02:53 صبح
يك ماژول و يك ليست باكس به برنامه اضافه كنيد و كدهاي زير رو توش كپي كنيد:


Private Const TH32CS_SNAPPROCESS = &H2
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 * 260
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Const SYNCHRONIZE As Long = &H100000
Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
Public Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Sub GetProcess()
Dim hSnapshot As Long
Dim processInfo As PROCESSENTRY32
Dim success As Long
Dim exeName As String
Dim retval As Long
'Me.AutoRedraw = True
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
processInfo.dwSize = Len(processInfo)
success = Process32First(hSnapshot, processInfo)
If hSnapshot = -1 Then
Fmain.lstTask.AddItem "Unable to take snapshot of process list!"
Exit Sub
End If
While success <> 0
exeName = Left(processInfo.szExeFile, InStr(processInfo.szExeFile, vbNullChar) - 1)
Form1.List1.AddItem exeName
processInfo.dwSize = Len(processInfo)
success = Process32Next(hSnapshot, processInfo)
Wend
retval = CloseHandle(hSnapshot)
End Sub

حالا آيتم هاي ليست رو چك كنيد.
موفق باشيد/