Red de conocimiento informático - Material del sitio web - Cómo utilizar dllgetclassobject para exportar la interfaz

Cómo utilizar dllgetclassobject para exportar la interfaz

Cómo usar dllgetclassobject para exportar la interfaz

1 Es más fácil encontrar las DLL que admiten COM. Simplemente cargueLibary una por una y vea si hay un DllRegisterServer.

2 No es fácil encontrar el CLSID de COM en un determinado componente. Solo puedes usar algunos métodos:

(1) Si hay un archivo .tlb, puedes descompilarlo. tlb en un archivo idl y luego agréguelo al archivo idl. Busque CoClass. Hay muchos códigos descompilados en Internet. También puede utilizar directamente la herramienta proporcionada por VC, que parece llamarse TLB*.exe <. /p>

(2) Si no hay .tlb, utilice el mismo método para ver si hay algún tipo de información de biblioteca. Está compilado en el dll.

(3) Si el tipo. No se puede encontrar la información de la biblioteca, no tiene más remedio que buscarla en el registro. Primero registre la DLL (regsvr32 this.dll, o llame directamente a la obtenida anteriormente, DllRegisterServer), y luego vaya al CLSID en el registro para encontrar cuál. CLSID contiene this.dll.

3 Después de encontrar el CLSID, puede crear el componente. Puede CoCreateInstance directamente o puede obtener DllGetClassObject en la DLL.

Luego cree un IUnknown. y luego busque la interfaz que desea.

4 Si ni siquiera sabe qué interfaz o método llamar, entonces no lo haga. No siempre puede pasar NULL al método. .

Debe conocer la interfaz. Eso es lo que define para realizar la función del complemento, todos los dlls implementan la misma interfaz, tlb definitivamente no está allí.

incluso si es así, su método no es factible. Ese es mi propio complemento. Quiero escanear el directorio del complemento cuando se ejecuta

Encontrar todos los archivos DLL y obtener la información del DLL (crear su instancia y llamar a un). determinada función) y mostrarlo en la interfaz de alguna forma.

Cuando el usuario elija esta función, la usaré.

No puedo permitir que el usuario descompile su tlb después de descargar un complemento.

Es muy Es fácil encontrar las interfaces de todos los DLL durante la etapa de programación.

Lo que quiero es el efecto durante el tiempo de ejecución. No entiendo muy bien lo que quieres decir. ¿Es esta la forma de encontrar un dll?

1. Regístrelo.

2. Mire qué elemento tiene este dll y busque el clid

3 Obtenga la instancia según la identificación de la interfaz y el clid.

Parece un gran desvío. Creo que la respuesta correcta definitivamente no es así.