Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Ultra-Xandre en 24 Mayo 2008, 17:43 pm



Título: Una pregunta importante
Publicado por: Ultra-Xandre en 24 Mayo 2008, 17:43 pm
Hola. Bueno, pues os cuento. Tengo dos preguntas y me hacen mucha falta. Vereis, son las siguientes:

1- ¿Cómo hago para añadir un programa que he creado al registro? Es decir, cuando se inicie le PC se inicie el programa.

2- ¿Cómo hago para que al cerrar un proceso con Shell "TaskKills /f /im proceso.exe" no aparezcan abajo las ventanas de CMD cerrando proceso?

Por favor, me hacen mucha falta. Ayudadme rapido.
Gracias de antemano. ;)


Título: Re: Una pregunta importante
Publicado por: cassiani en 24 Mayo 2008, 18:00 pm
Para la primera, podrias hacer algo como esto:

Código
  1.  'creamos el objeto
  2.    Set Objeto = CreateObject("WScript.Shell")
  3.  
  4.    'leemos el registro
  5.    Resultado = Objeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName)
  6.  
  7.  
  8. 'comparamos los resultados de la lectura
  9.    If Resultado = "" Then
  10.        'si no hay registro lo creamos
  11.        Objeto.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe" 'lo mismo con nombrejecutable
  12.    End If
  13.  
  14.    'liberamos el objeto
  15.    Set Objeto = Nothing

Hay varias formas, los puedes hacer diretamente con la shell, para la segunda, prueba a usar el vbHide


Título: Re: Una pregunta importante
Publicado por: xavierote en 24 Mayo 2008, 18:04 pm
EDITO: Ya ha contestado Cassiani.


Título: Re: Una pregunta importante
Publicado por: naderST en 24 Mayo 2008, 20:09 pm
Hola. Bueno, pues os cuento. Tengo dos preguntas y me hacen mucha falta. Vereis, son las siguientes:

1- ¿Cómo hago para añadir un programa que he creado al registro? Es decir, cuando se inicie le PC se inicie el programa.

2- ¿Cómo hago para que al cerrar un proceso con Shell "TaskKills /f /im proceso.exe" no aparezcan abajo las ventanas de CMD cerrando proceso?

Por favor, me hacen mucha falta. Ayudadme rapido.
Gracias de antemano. ;)

Lo de iniciar tu programa con Windows lo hubieses conseguido en 1 segundo buscando en Google pero bueno... y lo otro pues haslo asi:

Código:
Private Sub Command1_Click()
    Shell "taskkill /F /IM notepad.exe", vbHide
End Sub


Título: Re: Una pregunta importante
Publicado por: Ultra-Xandre en 24 Mayo 2008, 21:22 pm
No entendí bien lo de añadir al registro. :S ¿Me poneis el code? Es que no sé cual es el que tengo que poner, Cassianime has puesto 5...


Título: Re: Una pregunta importante
Publicado por: naderST en 24 Mayo 2008, 21:41 pm
No entendí bien lo de añadir al registro. :S ¿Me poneis el code? Es que no sé cual es el que tengo que poner, Cassianime has puesto 5...

 :¬¬ http://www.recursosvisualbasic.com.ar/htm/listado-api/155-registrar-programa-para-iniciar-con-windows.htm (http://www.recursosvisualbasic.com.ar/htm/listado-api/155-registrar-programa-para-iniciar-con-windows.htm)


Título: Re: Una pregunta importante
Publicado por: cassiani en 25 Mayo 2008, 00:56 am
claro, claro, pero no te lo coloque para que adornara a los demás, lee los comentarios y verás que cada linea hace algo, se crea el objeto, se verifica el registro, se crea si no existe, se libera el objeto, pero bueno... mejor hazlo con una shell.



Título: Re: Una pregunta importante
Publicado por: juancho77 en 25 Mayo 2008, 16:55 pm
Código:
' consulta al registro si existe la clave, la abre
If RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\Currentversion\Run", llave) = ERROR_SUCCCESS Then
    If RegQueryValueEx(llave, 'nombreapp', 0&, valuetype, ByVal 0&, buffersize) = ERROR_SUCCESS Then
        If valuetype = REG_SZ Then
        stringb = String(buffersize, " ")
            If RegQueryValueEx(llave, 'nombreapp', 0&, 0&, ByVal stringb, buffersize) = ERROR_SUCCESS Then
            RegQueryStringValue = True
            Strdata = Left(stringb, buffersize - 1)
            End If
        End If
' si no la encuentra la copia al run para que se autoinicie, y hace una copia del ejecutable en el disco C
    Else
        Dim ruta As String
        route66 = route66 & "\" & 'nombreapp'
        Label2.Caption = route66
        If RegSetValueEx(llave, 'nombreapp'", 0&, REG_SZ, ByVal route66, Len(route66) + 1) = ERROR_SUCCESS Then
        copy 'aca llama a la funcion copy y se copia a la carpeta que escribimos en el registro
        End If
    End If
End If

Bueno, como para sumar algo, ese lo tenia en un programa viejito. Consulta primero si existe y luego en caso negativo hace una copia, utilizando error_success porque recien empezaba. Que memorias  :P

PD:tenes que declarar las apis.