Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Conocer Nombre y Ruta de una dll

Un proceso puede conocer su nombre de varias formas. GetModuleFileName nos dá la ruta completa y nombre del proceso en curso, incluso si se ejecuta desde una dll. Pero ¿Como sabe una dll su propio nombre y la ruta donde está?

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 20-10-2008
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 22
droguerman Va por buen camino
Puedes usar EnumProcessModules para recuperar la lista de modulos cargados dentro de un proceso combinadola con GetModuleFileName.

saludos
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 21-10-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Muchas gracias droguerman por tu interés y tu rápida respuesta. La idea que propones es interesante pero me pregunto si existe una forma más directa. Es decir, EnumProcessModules proporciona la lista de dll cargadas, a una dll concreta no le interesan las demás para conocer su nombre y ruta. Claro que es posible que el S.O. (sus APIs) no nos proporcione un método más directo....

Dicho de otra forma, ¿es posible conocer el hModule de una dll sin necesidad de enumerarlas todas?.


Muchas gracias. Saludos.

Última edición por escafandra fecha: 21-10-2008 a las 13:29:12.
Responder Con Cita
  #4  
Antiguo 21-10-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
...Bueno, pues si que es posible. El hModule de nuestra dll es la HINSTANCE con la que se carga... Publico la forma como lo he conseguido.

Código:
char* GetDllFileName(HINSTANCE hinst, char* Buffer, int SizeBuffer)
{
  HANDLE  hProcess;

  hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, GetCurrentProcessId());
  if(hProcess)
    GetModuleFileNameEx(hProcess, hinst, Buffer, SizeBuffer-1);

  CloseHandle(hProcess);
}
Saludos y gracias droguerman por darme la pista.
Responder Con Cita
  #5  
Antiguo 21-10-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Solo por curiosidad escafndra; GetModuleFileName(hinst, Buffer, SizeBuffer-1); o talvez, aunque sea lo mismo; GetModuleFileName(GetModuleHandle(NULL), Buffer, MAX_PATH);
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #6  
Antiguo 21-10-2008
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 22
droguerman Va por buen camino
Las DLL tambien tienen un HInstance con el cual puedes obtener el nombre del modulo. Cuando creas una DLL usando C se crea una función llamada DLLMain, la cual tiene como parámetro la instancia. El problema es que no se cual es el equivalente en delphi de esta función o si se implementa o no
__________________
self.free;
Responder Con Cita
Respuesta



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
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
"nombre de archivo inválido" Error cuando la ruta es muy larga. JuanErasmo Windows 6 21-04-2008 15:36:45
Conocer el nombre del servidor Pablo Carlos Redes 4 07-03-2005 23:08:10
Conocer PrinterIndex a partir del nombre Novás Varios 1 16-07-2004 18:26:14
Ruta y nombre de archivo INI jfranco Varios 2 27-02-2004 16:44:23
Conocer el nombre de la aplicacion que se encuentra activa cso2000 Varios 4 24-10-2003 02:28:14


La franja horaria es GMT +2. Ahora son las 00:28:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi