Estoy aprendiendo a escribir un control ActiveX programable. Mi objetivo es tener un pequeño control que pueda verificar si hay algo instalado en el sistema. Lo que he hecho hasta ahora es:Escribir un control ActiveX simple para IE que tiene un método
- Crear un proyecto de control ActiveX de MFC en VS2008
- añadir un poco de 'seguros para secuencias de comandos' bits que he encontrado here.
- Amplíe el IDL para proporcionar mi método "IsInstalled", que por ahora devuelve TRUE incondicionalmente (pero luego leerá algunas claves del registro).
- Genere el control y ejecute regsvr32 en él. Verifiqué que aparece en HKEY_CLASSES_ROOT, y cuando instalé el objeto, el panel "Locales" de IE Developer Tools muestra que el objeto es de tipo _D [mi nombre de complemento]. No solo eso, sino que mi método IsInstalled() aparece debajo de ese objeto.
Sin embargo, cuando llamo IsInstalled(), simplemente no puedo conseguir que funcione:
Estoy en una pérdida. También intenté hacer de IsInstalled una propiedad en lugar de un método, utilizando VARIANT_BOOL en lugar de boolean en lugar de BOOL en IDL, lo que sea.
Aquí están los extractos relevantes del código.
La cabecera:
afx_msg VARIANT_BOOL IsInstalled();
La aplicación:
afx_msg VARIANT_BOOL
CMyAXCtrl::IsInstalled()
{
return TRUE;
}
El mapa de envíos:
BEGIN_DISPATCH_MAP(CMyAXCtrl, COleControl)
DISP_FUNCTION_ID(CMyAXCtrl, "IsInstalled", dispidIsInstalled, IsInstalled, VT_BOOL, VTS_NONE)
END_DISPATCH_MAP()
La parte de la expedición IDL:
[ uuid(6B662202-CF13-4144-AA33-C3FEE9C2C962),
helpstring("Dispatch interface for My Control")]
dispinterface _Daxplugin
{
properties:
methods:
[id(1)] VARIANT_BOOL IsInstalled();
};
Si hay algún otro fragmento relevante de código que deba proporcionar, házmelo saber. Pero estoy perplejo aquí. ¡Gracias de antemano!
¿Cuál es el error de tiempo de ejecución de JScript que está obteniendo? Tu imagen solo muestra "(n", que no es muy útil. –
Eso es exactamente lo que es. No puedo entender cómo mostrar el error de tiempo de ejecución completo. De todos modos, mira mi comentario a continuación: es un punto discutible ahora. –