Gewusst wie: Auffangen verwaltetem C#-Ereignissen in Internet Explorer-Skript

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 313891 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser detaillierte Artikel beschreibt, wie Sie verwaltete Ereignisse von COM-Clients (nicht verwalteten Code) Auffangen beim Schreiben von .NET Windows-Steuerelemente. Beispielsweise Channelsenkenkette Sie verwaltete Ereignisse von com-Clients, beim Ausführen von Skripts in Internet Explorer.

Informationen, schreiben und verwaltete Typen aus COM zu verwenden finden Sie in der folgenden Microsoft .NET Framework Developer's Guide Dokumentation:
Verfügbarmachen von .NET Framework-Komponenten in COM
http://msdn2.microsoft.com/en-us/library/zsfww439(vs.71).aspx

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer (Programmierung), Version 5.5 oder höher

Schritte zum Empfänger verwalteten Ereignisses in Internet Explorer-Skript

  1. Erstellen Sie ein benutzerdefiniertes Steuerelement für Windows Forms:
    1. Starten Sie Microsoft Visual Studio .NET.
    2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
    3. Klicken Sie im Dialogfeld Neues Projekt klicken Sie unter Projekttypen auf Visual C#-Projekte , und klicken Sie dann unter Vorlagen auf Windows-Steuerelementbibliothek .
  2. Definieren Sie eine Quellschnittstelle für die Ereignisse verfügbar gemacht werden.
  3. Fügen Sie eine GuidAttribute -Klasse, auf die Quellschnittstelle. Sie müssen die Zeichenfolge formatieren, die Sie auf das Attribut als einem zulässigen Konstruktorargument für den Typ GUID übergeben. Können Sie die Datei Guidgen.exe eine nicht verwendete GUID erstellen.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. Der Quellschnittstelle COM als eine IDispatch -Schnittstelle offen legen ein InterfaceType -Attribut hinzufügen:
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. Alle Elemente in der Quellschnittstelle an den COM-Dispatchbezeichner (DISPID) einer Methode oder ein Feld einer DispIdAttribute hinzugefügt:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. Erstellen Sie einen neuen Ereignis Typ um das gewünschte Ereignis verfügbar machen einzuschließen.
  7. Implementieren Sie die Quellschnittstelle auf dem benutzerdefinierten Steuerelement für Windows Forms.
  8. Dem Steuerelement um die Liste der Schnittstellen zu identifizieren, die als COM-Ereignisquellen verfügbar gemacht werden ComSourceInterfaces- Attribut hinzufügen:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. Kompilieren Sie das Steuerelement als DLL-Datei (DLL = Dynamic-Link Library).
  10. Erstellen Sie auf der HTML-Seite einen Skriptblock, um das Ereignis anzuhängen. Zum Beispiel:
    <!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. Verwenden Sie die .NET Framework-Konfigurationstool (Mscorcfg.msc) der Assembly die einzelnen Berechtigungen gewährt, die erforderlich sind, auf jedem Clientsystem.

Vollständige Codeauflistung

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);
			}
		}
	}
}
				

Informationsquellen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:
Behandeln und Auslösen von Ereignissen
http://msdn2.microsoft.com/en-us/library/edzehd2t(vs.71).aspx

.NET Framework-Konfigurationstool (Mscorcfg.msc)
http://msdn2.microsoft.com/en-us/library/2bc0cxhc(vs.71).aspx

Interoperabilität mit nicht verwaltetem Code
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

Host Secure Lightweight clientseitigen Steuerelementen in Microsoft Internet Explorer
http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx
Weitere Informationen finden Sie die Artikel der Microsoft Knowledge Base:
316510Fehler: SecurityException beim Verwenden von Ereignishandlern in Internet Explorer

Eigenschaften

Artikel-ID: 313891 - Geändert am: Donnerstag, 17. Mai 2007 - Version: 3.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Explorer 5.5
Keywords: 
kbmt kbcominterop kbhowto kbhowtomaster kbsample KB313891 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 313891
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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