Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - HaDeS, -

#91
Cita de: nhaalclkiemr en 21 Octubre 2007, 15:33 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:
Código (vb) [Seleccionar]

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
(: 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:
Código (vb) [Seleccionar]

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
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 ;)
#94
Checate este post donde se discutia acerca de la velocidad de ese modulo al convertir la imagen de un bmp a jpg.
http://foro.elhacker.net/index.php/topic,179087.0.html
por ahi anda un post donde podes variar el tamaño de la pantalla para que el modulo se demore menos.
que te sirva.

saludso ;)
#95
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
checa este codigo que hice:
Código (vb) [Seleccionar]

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 :P
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
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:
Código (vb) [Seleccionar]


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
Te complicas demasiado xD

Código (vb) [Seleccionar]

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
Cita de: HJZR4 en 17 Octubre 2007, 23:47 PM
Correcto! Funciona... Puedes explicarme el porqué? :S:S:S
xD a quien preguntas? a Lambda o a mi?  :-X, weno aunque no me preguntes a mi te respondo :P

checa de nuevo tu codigo
Código (vb) [Seleccionar]

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
Código (vb) [Seleccionar]


    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 :P, saludos ;)
#100
man:
Código (vb) [Seleccionar]

    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:
Código (vb) [Seleccionar]

    Info = Split(Datos, "/")
        Nombre = Info(0) ''''= Nombre
        Apellido = Info(1) ''''= Apellido


saludos ;)