2016-06-14 4 views
2

J'ai développé un .ocx en utilisant Delphi. Rad Studio a généré automatiquement un fichier .ridl pour moi.Expose fonction à Javascript d'un .ocx ActiveX

J'ai créé une page html qui charge le .ocx activeX, et cela fonctionne sans aucun problème.

Maintenant, je dois appeler une fonction à l'intérieur du fichier .ocx de Javascript à l'intérieur de la page Html, je sais que c'est possible mais je ne peux pas comprendre comment. Je pense que je dois en quelque sorte configurer le fichier .ridl mais je ne trouve aucune documentation à ce sujet.

En ce moment, je déclare une fonction publique dans la forme i créé, comme ceci:

procedure WriteText(const text: string); safecall; 

et, de Javascript, je l'appelle comme ceci:

document.forms[0].MyProjectName.WriteText('foo'); 

mais je m'y suis la erreur variable type invalid (je soupçonne un peu son erreur de type EOleSysError). Donc, je peux voir la fonction WriteText mais je ne peux pas l'utiliser.

J'ai également essayé de remplacer le type string dans ma fonction avec WideString et PWideChar, avec toujours la même erreur.

Comment puis-je résoudre ce problème?

+0

Gardez à l'esprit que Microsoft a abandonné la prise en charge d'ActiveX dans les pages Web il y a de nombreuses années. Seulement travaillé dans IE, et ils ne l'ont même pas porté à Edge. –

+3

Un voyageur du temps de la fin du 20ème siècle! Bienvenue! –

+0

ahahah bien, je comprends c'est une technologie obsolète mais .. je dois y faire face! – HypeZ

Répondre

1

Je l'ai fait en donnant à l'un ID à l'élément <OBJECT>, et appelant la méthode via javascript comme ceci:

<script language="javascript"> 
    someID.WriteText('Hello!'); 
</script> 

Et quelque part dans la page:

<OBJECT ID="someID" 
     CLASSID="clsid:12345678-90AB-CDEF-1234-56789ABCDEF1" 
     CODEBASE="/my.ocx" 
     WIDTH="100" 
     HEIGHT="25">