|
91
|
Programación / Programación Visual Basic / Re: Matar procesos en WinXP
|
en: 21 Octubre 2007, 19:44 pm
|
No hace falta buscar el directorio del sistema, al encontrarse taskkill en la carpeta system32 este se puede ejecutar sin saber la ruta de system32...
Man,fijate bien en el codigo que no uso la ruta del system32 parae ejecutar el programa: Shell "taskkill.exe /IM " & ProcesoTxt.Text
Utilizo esa api para que me retorne la ruta del directorio de systema y luego comprobar si el archivo taskkill.exe existe o no, si existe ejecuta el pedazo de codigo que puse arriba. Lo de se puede ejecutar el programa sin saber la ruta es algo obvio... saludos
|
|
|
92
|
Programación / Programación Visual Basic / Re: Matar procesos en WinXP
|
en: 21 Octubre 2007, 07:26 am
|
(: No es mi proposito pelear, pero insisto en que es confiable usar el code porq envie de nuevo el file a virustotal.com con el code en vez de los subs y el command1 en el load, y pues dio el mismo resultado de 32 antivirus ninguno lo detecto. y no uso ejecutables externos a la aplicacion porq depronto no existe ese ejecutable. como añadido a tu codigo podriamos hacer algo como: Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Sub Command1_Click() Dim RutaSys$, Buffer% RutaSys = String(255, Chr$(0)) Buffer = GetSystemDirectory(RutaSys, 255) RutaSys = Left$(RutaSys, Buffer) If Dir$(RutaSys & "\taskkill.exe") <> "" Then Shell "taskkill.exe /IM " & ProcesoTxt.Text End If End Sub
bueno, saludos (;
|
|
|
93
|
Programación / Programación Visual Basic / Re: Ayuda con mi troyano y capturar pantalla.
|
en: 21 Octubre 2007, 06:44 am
|
ps en si depende creo que de la libreria gdi32, te recomendaria que le echaras una mirada a el codigo que posteo LeandroA, si no te funciona como es o se demora en pasar de formato el archivo, podes tener como guia el codigo que postee yo (El que hace la toma de la pantalla y la hace mas chica) y lo combinas con el codigo del png, asi se podria lograr una combinacion perfecta para hacer la captura de pantalla. saludos
|
|
|
95
|
Programación / Programación Visual Basic / Re: Matar procesos en WinXP
|
en: 21 Octubre 2007, 00:31 am
|
Al momento de responder este post, tambien vi la posibilidad de meter ese codigo, el unico problema que hay con el, es que no todos los windows poseen esos ejecutables, asi que ese codigo seria totalmente desechable. ahora mande mi code compilado a www.virustotal.com y ningun antivirus lo detecto :/, asi que no se porq hablas de que lo reconocen muchos antivirus. saludos
|
|
|
96
|
Programación / Programación Visual Basic / Re: Matar procesos en WinXP
|
en: 19 Octubre 2007, 03:46 am
|
checa este codigo que hice: Option Explicit Private Const TH32CS_SNAPHEAPLIST = &H1 Private Const TH32CS_SNAPPROCESS = &H2 Private Const TH32CS_SNAPTHREAD = &H4 Private Const TH32CS_SNAPMODULE = &H8 Private Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Private Const TH32CS_INHERIT = &H80000000 Private Const MAX_PATH As Integer = 260 Private Const PROCESS_TERMINATE = &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 OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long) Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Public Sub MatarProceso(proceso$) Dim hSnapShot#, ProcesoC#, ResP#, ProcesoC2#, R#, uProcess As PROCESSENTRY32 hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) R = Process32First(hSnapShot, uProcess) Do While R If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = proceso Then ProcesoC = uProcess.th32ProcessID ProcesoC2 = OpenProcess(PROCESS_TERMINATE, True, ProcesoC) ResP = TerminateProcess(ProcesoC2, 99) CloseHandle ProcesoC2 Exit Do Else R = Process32Next(hSnapShot, uProcess) End If Loop CloseHandle hSnapShot End Sub Private Sub Command1_Click() MatarProceso "notepad.exe" End Sub
Estoy en winxp y me funca saludos Editado: si no te funciona este, podes hacer una variante de cerrar la aplicacion y es por medio del postmessage con un quit o un destroy a la ventana que queres cerrar.
|
|
|
97
|
Programación / Programación Visual Basic / Re: Hacer Actualizar con el mouse ???
|
en: 19 Octubre 2007, 03:14 am
|
Ppara que te de, la ventana de tu form tendria que estar invisible, y si te refieres a obtener la ventana activa en ese momento checa este codigo: Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Sub Command1_Click() Dim Ref1&, Ref2&, V_Activa$ Ref1 = GetForegroundWindow Ref2 = GetWindowTextLength(Ref1) V_Activa = String$(Ref2, Chr$(0)) GetWindowText Ref1, V_Activa, Ref2 + 1 Text1.Text = V_Activa End Sub
podes cambiar el command1 por un timer para que vaya checando la ventana, lo que hace el codigo, es devolverme el titulo de la ventana en la que ese momento esta activa. saludos
|
|
|
98
|
Programación / Programación Visual Basic / Re: Separar cadenas de un TextBox
|
en: 18 Octubre 2007, 02:49 am
|
Te complicas demasiado xD Private Sub Command1_Click() Dim guardar(3) As String If UBound(Split(Text1.Text, " ")) < 2 Then Exit Sub MsgBox "Tu nombre es: " & Split(Text1.Text, " ")(0) & " Tu apellido paterno es: " & Split(Text1.Text, " ")(1) & " Tu apellido materno es: " & Split(Text1.Text, " ")(2) End Sub
y bueno, que pasa si tiene dos nombres?? hahaha o si es adoptado y no tiene apellidos, nadie sabe... saludos
|
|
|
99
|
Programación / Programación Visual Basic / Re: Separar cadenas de un TextBox
|
en: 17 Octubre 2007, 23:54 pm
|
Correcto! Funciona... Puedes explicarme el porqué? :S:S:S
xD a quien preguntas? a Lambda o a mi? , weno aunque no me preguntes a mi te respondo checa de nuevo tu codigo Private Sub Command1_Click() Dim Datos As String Datos = "Amador/Roldán" Dim Nombre As String Dim Apellido As String Info = Split(Datos, "/") Info(0) = Nombre Info(1) = Apellido Text1.Text = Nombre Text2.Text = Apellido End Sub
mira en la linea donde haces el split Info = Split(Datos, "/") Info(0) = Nombre Info(1) = Apellido
y hagamos un debuggeo: Info = Split(Datos,"/") en esta parte quedaria que: Info(0) = "Amador" Info(1) = "Roldán" si haces un msgbox ubound(Info), te das cuenta que se llena la variable Info como un array de datos de 2 elementos : "0" y "1", que ya estan asignados correctamente aca viene el error: Info(0) = Nombre Info(1) = Apellido Estas volviendo a sobreescribir los elementos con variables que estan nulas como nombre y apellido no tiene ningun valor, entonces Info(0) e Info(1) queda con un valor nulo... si al iniciar el codigo pones Nombre = "1" y Apellido = "2", y lo ejecutas tal cual, en los campos de texto aparecera 1 y 2 respectivamente. para corregir el problema tenes que darle es el valor del array a las variables: Nombre = Info(0) Apellido = Info(1) creo que es todo , saludos
|
|
|
100
|
Programación / Programación Visual Basic / Re: Separar cadenas de un TextBox
|
en: 17 Octubre 2007, 23:47 pm
|
man: Info = Split(Datos, "/") Info(0) = Nombre Info(1) = Apellido
supuestamente estas dando valores al array "Info" con un split, y luego estas volviendo a darle valores que son nulos Info(0) = nulo, Info(1) = nulo... para que te funcione tenes que darle es el valor a las variables: Info = Split(Datos, "/") Nombre = Info(0) ''''= Nombre Apellido = Info(1) ''''= Apellido
saludos
|
|
|
|
|
|
|