Aplicación de tecnología NPAPI obsoleta.
Implementado con la tecnología Flash simulada NPAPI, encapsulando NAPI para FF/Chrome y ActiveX para IE.
| Tabla de contenido | ilustrar | Observación |
|---|---|---|
| Mozilla | Código de organización de Firefox, SDK de código abierto | Por favor no modifique |
| npapi | Npapi sdk | Por favor no modifique |
| nplugin | Implementación del complemento NPAPI | El procesamiento automático de la interfaz y la redirección de datos se han implementado, y se puede usar sin modificación de forma predeterminada. |
| regsización | Operaciones de registro, incluidos el procesamiento de seguridad de 32 bits/64 bits, y el procesamiento de seguridad relacionado | Los usuarios generan un CLSID privado basado en el programa y modifican el valor de identificación correspondiente |
| destelzamiento | Código de implementación del complemento de flashness | Los usuarios generan códigos comerciales correspondientes, CLSID y otra información de acuerdo con sus necesidades, y los ejemplos de referencia de implementación de la interfaz |
| liberar | Compile y genere directorio para proteger el lote npflashness.dll y registro generado, la página de prueba, etc. | Los usuarios pueden registrarse y abrir Test.html para una prueba simple |
Creación de proyectos
Use el asistente de Visual Studio para crear una biblioteca de plantillas activas (usando ATL) como punto de partida para comenzar a escribir una biblioteca de enlaces dinámico (DLL).
Descripción del documento
| Nombre del archivo | ilustrar | Observación |
|---|---|---|
| Flashness.vcxproj | El asistente VS genera el archivo principal del proyecto del proyecto VC ++, incluida la información de la versión de VC ++, así como la información sobre las funciones de plataforma, configuración y proyecto. | |
| Flashness.vcxproj.filters | El archivo de filtro de proyecto generado por el asistente contiene el filtro y la información del archivo correspondiente. | |
| Flashness.idl | El compilador MIDL procesa las definiciones IDL de las clases de biblioteca, interfaz y componentes de Tipo definidas por el proyecto para generar definiciones de interfaz C ++ y declaraciones GUID (Flashness.h), Guid Definitions (Flashness_i.c), Type Library (Flashness.tlb) y códigos de mariscal (Flashness_p.c y dlldata.c) | Archivo central del proyecto, definición de interfaz |
| Flashness.h | Contiene la definición de la interfaz C ++ y la declaración GUID del proyecto definido en Flashness.idl, regenerado por MidL durante la compilación. | No es necesario modificarlo, se generará automáticamente después de modificar el archivo IDL. |
| Flashness.cpp | Implementación de la interfaz que contiene mapeo de objetos y exportación de DLL | Funciones centrales e implementación de la lógica empresarial |
| Flashness.rc | Lista de recursos del programa | Puede modificarlo en el explorador, intente no modificarlo manualmente para evitar errores |
| Flashness.def | El archivo de definición proporciona información proporcionada por el enlazador sobre la exportación requerida de la DLL, como querer exportar una determinada interfaz para llamadas externas directas. | Básicamente, no hay necesidad de modificar el complemento. Just Export DllGetClassObject, dllCanUnloadnow, dllRregisterserver, dllunRegisterserver, dllinstall |
| stdafx.h/cpp | Archivos precompilados | No se requiere modificación, la biblioteca básica ya está incluida |
| Resource.h | Definir como ID de botón, ID de imagen, etc. | No se requiere modificación |
Implementación de la interfaz
Análisis NPAPI
¿Cómo desarrollar un nuevo sistema de complemento basado en NPAPI y ActiveX utilizando la demostración como se indicó anteriormente?
Extracción de código
git clone https://github.com/walklang/FlashNess.git
Cree una nueva interfaz ATL usando el asistente
Busque componentes COM para obtener detalles y cree una nueva interfaz
Extensión de la interfaz NPAPI (opcional)
La flashness ha simulado llamadas de interfaz que son compatibles con NPAPI y ActiveX. La búsqueda de ActiveX para agregar funciones de interfaz puede realizar rápidamente la implementación compatible de los navegadores IE y FF/Chrome.
Introducción a nuevos ejemplos de interfaces
Implementos de flashness obtenga métodos de interfaz y establece la interfaz, y se pueden utilizar otros formularios para referirse a la implementación; Los usuarios pueden buscar el formato IDL y los métodos de implementación por sí mismos. Cabe señalar que si se trata de una interfaz GET (como ReadData), entonces el nombre de la función durante la implementación debe agregarse a Get_ (como Get_readData). Los usuarios pueden implementarlo a través de las siguientes dos referencias de archivo.
Abra el archivo Flashness.idl y agregue nuevas funciones a la interfaz IfLashness
interface IFlashNess : IDispatch{
[id(1)] HRESULT WriteData([in] BSTR bstrPath);
[propget, id(2)] HRESULT ReadShort([out, retval] SHORT* pVal);
[propget, id(3)] HRESULT ReadData([out, retval] BSTR* data);
};
Abra el archivo Flashness.h y agregue una nueva interfaz al final del archivo.
STDMETHOD(WriteData)(BSTR bstrPath) {
if (bstrPath == nullptr) return S_FALSE;
ATL::CComBSTR bstr_val = bstrPath;
data_ = bstr_val;
return S_OK;
}
STDMETHOD(get_ReadShort)(SHORT* pVal){
*pVal = 1;
return S_OK;
}
STDMETHOD(get_ReadData)(BSTR* pVal) {
if (!pVal) return S_FALSE;
std::string temp = CT2AEX<>(data_.c_str());
CComBSTR value(temp.c_str());
*pVal = value.Detach();
return S_OK;
}
std::wstring data_;