Problemas con un mataprocesos

Iniciado por Pseudoroot, 20 Enero 2006, 16:33 PM

0 Miembros y 2 Visitantes están viendo este tema.

.Slasher-K.


HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths

Pseudoroot

gracias Slasher, pero que quieres decir con eso.
que hay que leer esa ruta del registro para saber el path completo ?
www.g e d z a c.com

www.espavirus.com/foro

.Slasher-K.

Sí no especifica el path tiene que estar debajo de esa clave, con el siguiente formato:


HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\<appname>


Y lees el valor predeterminado, que es la ruta de acceso completa. Si no existe esa clave, entonces el siguiente paso es buscar en la variable de entorno PATH


Debug.Print Environ("PATH")


Y por último en el directorio de Windows y en el directorio del sistema (GetWindowsDirectory y GetSystemDirectory).

Pseudoroot

Otra opcion, seria con la api GetModuleFileNameExA...o no?
utilizando EnumProcesss y EnumProcessModules..

www.g e d z a c.com

www.espavirus.com/foro

.Slasher-K.

GetModuleFilenameEx no funciona en Win9X, hay una manera mucho más sencilla usando sólo GetModuleFilename.

La manera fácil es obtener el handle del módulo usando sólo el nombre, que es lo que te devuelve Process32First/Next y luego llamar a GetModuleFilename, como en la siguiente función:


Function GetProcessFilename(ByVal ModuleName As String) As String
      Dim sPath$, lPath&
      Dim hModule&, r&

  lPath = MAX_PATH
  sPath = String$(MAX_PATH, 0)
 
  hModule = GetModuleHandle(ModuleName)
 
  r = GetModuleFileName(hModule, sPath, lPath)
 
  If r Then
    GetProcessFilename = Left$(sPath, r)
  End If
End Function


Y te ahorras mucho código.

Saludos.

Pseudoroot

Tengo un pequeño problema, necesito la declaracion completa de la APi GetModuleHandle

www.g e d z a c.com

www.espavirus.com/foro

Pseudoroot

las apis ya las tengo,. aunque quiero .la declaracion completa de las apis. pa el visor que trae el VB. supongo que se podra descargar de internet?

aps..Slasher. probe tu code. pero la funcion luego de pasarle el nombre del proceso como parametro
Ej:   winword.exe
se supone que tendria que devolverme el path completo de ese proceso. pero na. solo me da el path completo de mi proceso, es decir de mi programa que ejecuto..
www.g e d z a c.com

www.espavirus.com/foro

.Slasher-K.

Windows API (Ansi)

Agrega eso como referencia y te olvidas de declarar las APIs.

La función va a devolver el path de tu proceso si el nombre del proceso que le pasaste no se está ejecutando.

Pseudoroot

Disculpa, pero como se supone que debo agregar ese archivo como referencia.??

Aps. por eso entonces no me daba el path. puesto que estaba probando con procesos activos. Entonces no me sirve de mucho esta funcion pues, necesito el path del proceso en ejecucion.
www.g e d z a c.com

www.espavirus.com/foro

.Slasher-K.

Cita de: .Slasher-K. en  6 Marzo 2006, 16:59 PM
Windows API (Ansi)

Agrega eso como referencia y te olvidas de declarar las APIs.

La función va a devolver el path de tu proceso si el nombre del proceso que le pasaste no se está ejecutando.

Eso significa lo que dice xD. La función devuelve el path de un proceso en ejecución.

Y con lo otro, Proyecto -> Referencias -> Examinar -> Win.tlb