2017-04-11 2 views
0

J'ai examiné la bibliothèque d'objets Microsoft Forms 2.0 (FM20.DLL) et les contrôles communs Microsoft Windows (comctl32.dll), car tous deux existent (je pense) en tant que fournisseurs OLE sur mon système. (Je le fais en les ouvrant dans VBA dans Excel pour regarder les bibliothèques avec leurs membres) et en jouant avec eux dans VBA.Comment puis-je construire et interagir avec une boîte de dialogue dynamique (ActiveX) utilisant OLE sous Windows?

Mon plus gros problème est que je ne comprends pas la relation entre les bibliothèques elles-mêmes et ActiveX - comment puis-je savoir quels membres peuvent être créés en tant qu'objets ActiveX? (Par exemple, vous pouvez créer "Excel.Application", mais pas "MSForms.UserForm"). Je veux être en mesure de scripter (en utilisant OLE) un formulaire en utilisant une bibliothèque, l'afficher, répondre à des événements, etc. Je préférerais utiliser quelque chose qui est déjà disponible (comme les bibliothèques mentionnées ci-dessus, si possible) pour éviter d'avoir à installer un logiciel supplémentaire.

Si vous pouvez donner un exemple (dans n'importe quelle langue) pour me lancer, ce serait très utile et très apprécié.

+0

Les contrôles ActiveX sont ceux qui apparaissent dans la boîte à outils du concepteur visuel. Oui, Forms 2.0 en a un et il est intégré dans Excel et vous permet de faire tout ce que vous voulez faire. On dirait que vous ne l'avez pas encore trouvé. –

+0

@HansPassant Merci, basé sur votre commentaire et un outil appelé ActiveXHelper, j'ai réussi à trouver par exemple. "Forms.Frame.1" en tant qu'objet ActiveX que je peux créer. Comment est-ce que je saurais, cependant, que c'est le nom de l'objet, par opposition à "MSForms.Frame" ou quelque chose d'autre? Je suppose que vous avez besoin d'accéder au registre ActiveX pour vous dire ces choses? – mydoghasworms

Répondre

0

Selon le commentaire de HansPassant, ce qui fonctionnait est l'utilisation de MS Forms 2.0, qui a un objet ActiveX, "Forms.Frame.1", qui peut être créé et utilisé dans mon programme.

J'ai trouvé un programme appelé ActiveXHelper, qui permet de voir tous les objets ActiveX enregistrés sur le système. Difficile de donner un sens à cette question, ce n'est jamais un problème pratique.