PDA

View Full Version : end procces از طریق برنامه vb



soheil-vb6
پنج شنبه 19 مهر 1386, 00:21 صبح
من میخوام ببینم میشه مثل تسک منیجر یک برنامه را end procces کنیم
برای کاره خیر میخوام (ساخت انتی ویروس)
لطفا حرفهای حرف نزنید من زیاد بلد نیستم
اگه که سروس بذارید واقا ممنون میشم
مرســــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــی

Payman62
پنج شنبه 19 مهر 1386, 11:25 صبح
سلام.
برای بار چندم میذارم.


Option Explicit

'EndProcess
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
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 Const TH32CS_SNAPALL = &HF
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
'EndProcess

Private Sub EndProcess(strProcessName As String)
Dim strEXEName As String
Dim hSnapshot As Long, lngNextProcess As Long, lngProcessHandle As Long
Dim ProcessInfo As PROCESSENTRY32
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
ProcessInfo.dwSize = Len(ProcessInfo)
lngNextProcess = Process32First(hSnapshot, ProcessInfo)
While lngNextProcess <> 0
strEXEName = Left(ProcessInfo.szExeFile, InStr(ProcessInfo.szExeFile, vbNullChar) - 1)
If UCase(strEXEName) = UCase(strProcessName) Then
'If ProcessInfo.th32ProcessID = GetCurrentProcessId Then ProcessInfo.th32ProcessID = 0
lngProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, 0&, ProcessInfo.th32ProcessID)
TerminateProcess lngProcessHandle, 0&
DoEvents
End If
lngNextProcess = Process32Next(hSnapshot, ProcessInfo)
Wend
CloseHandle (hSnapshot)
End Sub

Private Sub Command1_Click()
EndProcess Text1.Text
End Sub

اون دستور IF که غیر فعالش کردم جلوی بسته شدن پروسه برنامه خودتو میگیره.


از دستورات داس هم میتونی استفاده کنی. پارامتر هم میتونی اضافه کنی.

Shell "Taskkill " & Proc Name

مبین رنجبر
پنج شنبه 19 مهر 1386, 11:44 صبح
از طریق داس :



Shell "Taskkill /F /IM " & ProcessName,vbHide

محمد زارع
سه شنبه 19 آذر 1387, 21:02 عصر
از طریق داس :



Shell "Taskkill /F /IM " & ProcessName,vbHide



سلام.

من روش شما رو امتحان کردم، خوبه ولی یه اشکال مهم داره.:لبخندساده:
من روی سیستمم آنتی ویروس Kaspersky دارم و هر بار که می خواهم یه پراسس رو Taskkill کنم یه صفحه میاد و از کاربر برای Taskkill کردن Allow یا Block می خواهد. اگه کاربر بلاک رو بزنه خود آنتی ویروس از بسته شدن برنامه مورد نظر جلوگیری می کنه.:عصبانی++:
در این زمینه باید چه کار کرد.:متفکر:
جواب رو تقریباً فوری می خوام، عجله ایه. اگه دوستان کمک کنن خیلی ممنون می شم.

زارع