Título: No me funciona el comando TASKKILL en windows XP...
Publicado por: Xephiro en 3 Agosto 2006, 05:05 am
Buenas, e tratado de usar el comando taskkill, es problema es que en 2 de los 3 pc que tengo no me funciona, y me dice que no existe ese comand, alguien sabe que puedo hacer para agregarle eso a mi PC porque lo nesesito gracias...
Título: Re: No me funciona el comando TASKKILL en windows XP...
Publicado por: rubeng en 3 Agosto 2006, 08:20 am
ese es un comando de dos o bat se puede usar en vb poniendo shell antes o si no podes usar esto en un modulo pone esto Option Explicit Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) 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 GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer 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 Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Private Const PROCESS_ALL_ACCESS = 0 Private Const TH32CS_SNAPPROCESS As Long = 2& Private Const WINNT As Integer = 2 Private Const WIN98 As Integer = 1 Public KillAppReturn As Boolean Public Function getVersion() As Integer Dim udtOSInfo As OSVERSIONINFO Dim intRetVal As Integer With udtOSInfo .dwOSVersionInfoSize = 148 .szCSDVersion = Space$(128) End With
intRetVal = GetVersionExA(udtOSInfo)
getVersion = udtOSInfo.dwPlatformId End Function
Public Function Killapp(myName As String) Select Case getVersion() Case WIN98 Killapp9X (myName) Case WINNT KillappNT (myName) End Select End Function
Private Function KillappNT(myName As String) Dim uProcess As PROCESSENTRY32 Dim rProcessFound As Long Dim hSnapshot As Long Dim szExename As String Dim exitCode As Long Dim myProcess As Long Dim AppKill As Boolean Dim appCount As Integer Dim I As Integer On Local Error GoTo Finish appCount = 0 uProcess.dwSize = Len(uProcess) hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) rProcessFound = ProcessFirst(hSnapshot, uProcess) Do While rProcessFound I = InStr(1, uProcess.szExeFile, Chr(0)) szExename = LCase$(Left$(uProcess.szExeFile, I - 1)) If Right$(szExename, Len(myName)) = LCase$(myName) Then KillAppReturn = True appCount = appCount + 1 myProcess = OpenProcess(1&, -1&, uProcess.th32ProcessID) AppKill = TerminateProcess(myProcess, 0&) Call CloseHandle(myProcess) End If rProcessFound = ProcessNext(hSnapshot, uProcess) Loop Call CloseHandle(hSnapshot) Finish: KillAppReturn = False End Function
Private Function Killapp9X(myName As String) Dim uProcess As PROCESSENTRY32 Dim rProcessFound As Long Dim hSnapshot As Long Dim szExename As String Dim exitCode As Long Dim myProcess As Long Dim AppKill As Boolean Dim appCount As Integer Dim I As Integer On Local Error GoTo Finish appCount = 0 uProcess.dwSize = Len(uProcess) hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) rProcessFound = ProcessFirst(hSnapshot, uProcess) Do While rProcessFound I = InStr(1, uProcess.szExeFile, Chr(0)) szExename = LCase$(Left$(uProcess.szExeFile, I - 1)) If Right$(szExename, Len(myName)) = LCase$(myName) Then KillAppReturn = True appCount = appCount + 1 myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID) AppKill = TerminateProcess(myProcess, exitCode) Call CloseHandle(myProcess) End If rProcessFound = ProcessNext(hSnapshot, uProcess) Loop Call CloseHandle(hSnapshot) Finish: KillAppReturn = False End Function
y en el form lo llamas asi suponete que quieras matar el winamp en un button pones Private Sub Command1_Click() Killapp winamp.exe End Sub salu2
Título: Re: No me funciona el comando TASKKILL en windows XP...
Publicado por: Mad Antrax en 3 Agosto 2006, 11:06 am
el comando taskkill solo existe en Windows XP y creo que tambien en Windows 2000. Para Windows 9x tendrás k usar otro método
Título: Re: No me funciona el comando TASKKILL en windows XP...
Publicado por: Xephiro en 4 Agosto 2006, 02:45 am
No me funciona el modulo que me diste rubeng No hay alguna otra forma de reinstalar el taskkill, ya que yo tengo el Xp pero no aparece entre mis archivos el taskkill
Título: Re: No me funciona el comando TASKKILL en windows XP...
Publicado por: Xephiro en 4 Agosto 2006, 03:27 am
Ahora si me funciono Gracias XD me equivoque y borre por error una lineaXD
Título: Re: No me funciona el comando TASKKILL en windows XP...
Publicado por: Robokop en 4 Agosto 2006, 04:23 am
Esque taskkill no existe en windows XP HOMe en el pro si existe es por eso mejor usar apis salu2
Título: Re: No me funciona el comando TASKKILL en windows XP...
Publicado por: Xephiro en 4 Agosto 2006, 04:36 am
XD .... raro porque es pro ademas es el mismo que e instalado en los 3 PC ... pero bueno ya me funciono el programa...
|