COMO: Coletor de eventos translation from VPE for Csharp gerenciado no script do Internet Explorer

Traduções deste artigo Traduções deste artigo
ID do artigo: 313891 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo passo a passo mostra como coletar eventos gerenciados de clientes COM (Component Object Model) (código não gerenciado) quando você escrever controles .NET Windows. Por exemplo, você coletar eventos gerenciados de clientes COM ao executar o script no Internet Explorer.

Para obter informações adicionais sobre como gravar e usar tipos gerenciados a partir COM, consulte a documentação do guia do seguinte Microsoft .NET Framework Developer:
Expondo componentes .NET Framework para COM
http://msdn2.microsoft.com/en-us/library/zsfww439(vs.71).aspx

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer versão 5.5 ou posterior (programação)

Etapas para recepção gerenciado a eventos no script do Internet Explorer

  1. Crie um controle Windows Forms personalizado:
    1. Inicie o Microsoft Visual Studio NET..
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Na caixa de diálogo New Project , clique em projetos do Visual translation from VPE for Csharp em Tipos de projeto e, em seguida, clique em Windows Control Library em modelos .
  2. Defina uma interface de origem para os eventos a serem expostos.
  3. Adicione uma classe GuidAttribute à interface de origem. Você deve formatar a seqüência que você passar para o atributo como um argumento de construtor aceitável para o tipo de GUID. Você pode usar o arquivo Guidgen.exe para criar um GUID não utilizado.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. Adicionar um atributo InterfaceType à interface de origem para expor COM como uma interface IDispatch :
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. Adicionar um DispIdAttribute a quaisquer membros na interface de origem para especificar o identificador de expedição de COM (DISPID) de um método ou um campo:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. Crie um novo tipo de evento para encapsular o evento desejado para expor.
  7. Implemente a interface fonte no controle Windows Forms personalizado.
  8. Adicionar um atributo ComSourceInterfaces para o controle para identificar a lista de interfaces que são expostos como COM fontes de evento:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. Compile o controle como um arquivo de biblioteca de vínculo dinâmico (DLL).
  10. Crie um bloco de script na página HTML para ligar o evento. Por exemplo:
    <!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. Em qualquer sistema cliente, usar a ferramenta Configuração do .NET Framework (Mscorcfg.msc) para conceder as permissões individuais que são necessárias o conjunto.

Concluir a listagem de código

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

Referências

Para obter mais informações, consulte os seguintes sites da Microsoft:
Manipulando e aumentando eventos
http://msdn2.microsoft.com/en-us/library/edzehd2t(vs.71).aspx

Ferramenta de configuração do .NET framework (Mscorcfg.msc)
http://msdn2.microsoft.com/en-us/library/2bc0cxhc(vs.71).aspx

Interoperar com código não gerenciado
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

Host de segurança, leve controles do lado do cliente no Microsoft Internet Explorer
http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
316510Erro: Exceção de segurança quando você usa manipuladores de eventos no Internet Explorer

Propriedades

ID do artigo: 313891 - Última revisão: quinta-feira, 17 de maio de 2007 - Revisão: 3.4
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Explorer 5.5
Palavras-chave: 
kbmt kbcominterop kbhowto kbhowtomaster kbsample KB313891 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313891

Submeter comentários

 

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