Comment faire : récepteur d'événements géré C# dans Internet Explorer script

Traductions disponibles Traductions disponibles
Numéro d'article: 313891 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article étape par étape vous explique comment recevoir des événements gérés à partir de clients (Component Object Model) (code non managé) lorsque vous écrivez des contrôles .NET Windows. Par exemple, vous récepteur événements gérés depuis des clients COM et lorsque vous exécutez le script dans Internet Explorer.

Pour savoir comment écrire et utiliser les types managés de COM, reportez-vous à Guide documentation de la suivante développement Microsoft .NET Framework :
Exposition des composants .NET Framework à COM
http://msdn2.microsoft.com/en-us/library/zsfww439(vs.71).aspx

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer version 5.5 ou ultérieure (programmation)

Étapes pour le récepteur géré événement dans Internet Explorer script

  1. Créer un contrôle Windows Forms personnalisé :
    1. Démarrez Microsoft Visual Studio .NET.
    2. Dans le menu Fichier , pointez sur Nouveau , puis cliquez sur projet .
    3. Dans la boîte de dialogue Nouveau projet , cliquez sur projets Visual C# sous types de projet , puis cliquez sur Bibliothèque de contrôles Windows sous modèles .
  2. Définir une interface source pour les événements à être exposé.
  3. Ajouter une classe GuidAttribute à l'interface source. Vous devez mettre en forme la chaîne que vous transmettez à l'attribut comme un argument constructeur acceptable pour le type de GUID. Vous pouvez utiliser le fichier Guidgen.exe pour créer un GUID non utilisé.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. Ajouter un attribut InterfaceType à l'interface source pour exposer COM comme une interface IDispatch :
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. Ajouter un DispIdAttribute à des membres de l'interface source d'indiquer l'identificateur de répartition COM (DISPID) d'une méthode ou d'un champ :
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. Créer un nouveau type événement pour ajuster l'événement souhaité pour exposer.
  7. Implémenter l'interface source sur le contrôle Windows Forms personnalisé.
  8. Ajouter un attribut ComSourceInterfaces au contrôle pour identifier la liste des interfaces qui sont exposés en tant que sources d'événements COM:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. Compiler le contrôle en tant que fichier bibliothèque dynamic-link (DLL).
  10. Créer un bloc de script sur la page HTML pour associer l'événement. Par exemple :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=iso-8859-1' />
    
    <HTML>
    	<HEAD>
    		<TITLE>Sink managed event in Internet Explorer</TITLE>
    		
    		
    	</HEAD>
    	
    	<BODY>
    		
    		<OBJECT id="ctrl" classid="YourDllName.dll#ActiveXSourcing.MyWindowControl">
    		</OBJECT>
    		<SCRIPT LANGUAGE="JScript">
                function ctrl::ClickEvent(a,b)
                {
                    alert("MyWindowControl_ClickEvent");
                }
    		</SCRIPT>
    		
    	</BODY>
    </HTML>
    					
  11. Sur n'importe quel système client, utilisez l'outil de configuration de .NET Framework (Mscorcfg.msc) pour accorder l'assembly les autorisations individuelles qui sont nécessaires.

Terminer la liste de code

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ActiveXSourcing
{
	public delegate void ClickEventHandler(int x, int y); 

	//Source interface for events to be exposed.
	//Add GuidAttribute to the source interface to supply an explicit System.Guid.
	//Add InterfaceTypeAttribute to indicate that interface is IDispatch interface.
	[GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
	[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
	public interface ControlEvents 

		//Add a DisIdAttribute to any members in the source 
		//interface to specify the COM DispId.
	{
		[DispIdAttribute(0x60020000)]
		void ClickEvent(int x, int y);
	}

	//Add a ComSourceInterfaces attribute to the control to 
	//identify the list of interfaces that are exposed as COM event sources. 
	[ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
	public class MyWindowControl : System.Windows.Forms.UserControl 
		//, ComInteropControlInterface
	{
        System.Windows.Forms.TextBox tx = new TextBox();

		private void InitializeComponent()
		{
			
			this.Name = "MyWindowControl";

		}
	
		event ActiveXSourcing.ClickEventHandler ClickEvent;
    	
		public MyWindowControl() : base()
		{				               

			initMyWindowControl();

		}
        
		private void initMyWindowControl() 
		{

			Size = new System.Drawing.Size(300, 50);
			tx.Text = "Click on the TextBox to invoke  'ClickEvent'";
			tx.Size = this.Size;                  
			tx.Click += new System.EventHandler(ClickHandler);
			this.Controls.Add(tx);
			
		}
            
        
		private void ClickHandler(object sender, System.EventArgs e)
		{
			if (ClickEvent != null) 
			{
				ClickEvent(0, 0);
			}
		}
	}
}
				

Références

Pour plus d'informations, reportez-vous aux sites Web Microsoft suivants :
Gestion et la génération des événements
http://msdn2.microsoft.com/en-us/library/edzehd2t(vs.71).aspx

Outil de configuration .NET framework (Mscorcfg.msc)
http://msdn2.microsoft.com/en-us/library/2bc0cxhc(vs.71).aspx

Interopérabilité avec du code non managé
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

Hôte sécurisé, contrôles côté client léger dans Microsoft Internet Explorer
http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx
Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
316510 BOGUE : exception de sécurité lorsque vous utilisez des gestionnaires d'événements dans Internet Explorer

Propriétés

Numéro d'article: 313891 - Dernière mise à jour: jeudi 17 mai 2007 - Version: 3.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Internet Explorer 5.5
Mots-clés : 
kbmt kbcominterop kbhowto kbhowtomaster kbsample KB313891 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 313891
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com