border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 16-05-2008, 10:19:58
Un Nuevo Amigo
 
Registrado: may 2008
Posts: 3
zzarcon Aun no valorado
Predeterminado Pequeña duda de sintaxis

Buenas a todos perdonar si mi cuestión es un poco banal pero esque no logro resolver un problema que tengo con la "shell" en VB 6, el problema es el siguiente:

Cuando intento matar un proceso mediante el objeto shell y escribo lo siguiente;

shell (Taskkill /f /fi "USERNAME eq %username%" /im proceso.exe)

Y me da error de compilación y me dice que "se esperaba separador de listas o ( "

Segun mis conceptos e probado a modificarlo pero no e tenido exito ninguno, pienso que el problema esta en las omillas del filtro del comando taskkill, pero esque si no introduzco las comillas el filtro no surge efecto, y sin el filtro mi finalidad no tiene sentido alguno, por ello hos pido que si alguien sabe como arreglar este error, o como poder hacer lo mismo pero de otra manera porfavor que me responda.

Atentamente:Héctor Zarco García
Postdata: Grácias de antemano
Responder Con Cita
  #2 (permalink)  
Antiguo 16-05-2008, 11:29:51
Avatar de Alella
Moderador
 
Registrado: mar 2004
Ubicación: BARCELONA - ESPAÑA
Posts: 968
Alella Valoración +2
Predeterminado Re: Pequeña duda de sintaxis

Hola, que tal.

Revisa esta página: Managing Windows XP Programs from the Command Line: Taskkill and Tskill

Ya nos contarás.
__________________
Un saludo.

Alfredo
Barcelona-España
_________________
Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 16-05-2008, 13:12:20
Avatar de seba123neo
Moderador
 
Registrado: nov 2007
Ubicación: Argentina
Posts: 349
seba123neo Valoración +2
Predeterminado Re: Pequeña duda de sintaxis

Hola,lo que estas haciendo vos es usando Shell...te digo la verdad no me gusta...porque eso no es programacion de visual basic,eso es como si lo estuvieras escribiendo en la consola de ms-dos...para matar procesos tenes dunciones api's que lo hacen...algo como esto:

Código:
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

Private Sub Form_Load()
Killapp "CALC.exe"
End Sub
saludos.
__________________
Todos somos ignorantes; lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein
Responder Con Cita
  #4 (permalink)  
Antiguo 17-05-2008, 19:55:09
Un Nuevo Amigo
 
Registrado: may 2008
Posts: 3
zzarcon Aun no valorado
Predeterminado Re: Pequeña duda de sintaxis

Gracias por interesarte y por dejar tu post, me paree muy interesante tu aporte sobre la api lo que pasa que aun no las comprendo entiendes, por eso usaba la shell jejeje mas adelante ya provare con ella. Graciás por el aporte
Responder Con Cita
  #5 (permalink)  
Antiguo 17-05-2008, 20:01:04
Un Nuevo Amigo
 
Registrado: may 2008
Posts: 3
zzarcon Aun no valorado
Predeterminado Re: Pequeña duda de sintaxis

Gracias por interesarte lo aunque no me ha servido para muxo porque lo que es la sintaxis del taskkill si la conozco bien, pero el problema era a la hora de introducirla en visual, pero ya da igual, encontre la solución. Fué mucho más fácil de lo que pensaba jajajaja simplemente tube que ponerle dos comillas mas a cada lado del filtro jejeje que simple. Bueno grácias por interesarte
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT. Ahora son las 14:33:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right