NASıL YAPıLıR: Internet Explorer komut yönetilen C# olay havuzu

Makale çevirileri Makale çevirileri
Makale numarası: 313891 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, Bileşen Nesne Modeli (COM) istemcilerinden (yönetilmeyen kod) yönetilen olayları batar gösterilmiştir .NET Windows denetimleri yazdığınızda. Örneğin, ınternet Explorer'da komut dosyası çalıştırdığınızda, yönetilen olayları COM istemcilerinden batar.

Yazma ve COM tarafından yönetilen türleri'ni kullanma hakkında daha fazla bilgi için aşağıdaki Microsoft .NET Framework Geliştirici Kılavuzu belgelerine başvurun:
.NET Framework bileşenleri COM açıklamanızı
http://msdn2.microsoft.com/en-us/library/zsfww439(vs.71).aspx

Gereksinimler

Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Microsoft Visual Studio. NET'i
  • Microsoft ınternet Explorer 5.5 veya sonraki bir sürümü (programı)

Internet Explorer komut olay havuzu adımları yönetilen

  1. Özel bir Windows Forms denetimi oluşturun:
    1. Microsoft Visual Studio .NET'i başlatın.
    2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
    3. Yeni proje) iletişim kutusunda, Project Types altında Visual C# Projects ' ı tıklatın ve sonra Windows Denetim Kitaplığışablonları altında'ı tıklatın.
  2. Bir kaynak arabirimi olayları eline tanımlayın.
  3. Bir GuidAttribute sınıfı kaynak arabirime ekleyin. GUID türü için kabul edilebilir bir kurucu bağımsız değişken olarak özniteliğe geçmesi dize biçimlendirmeniz gerekir. Guidgen.exe dosyasının kullanılmayan bir GUID oluşturmak için kullanabileceğiniz.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. ınterfacetype öznitelik COM arabirim ıdispatch olarak göstermek için kaynak arabirimi ekleyin:
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. COM gönderme tanımlayıcısını (DISPID) bir yöntem veya alan belirtmek için tüm üyelere <a0>Kaynak</a0> arabirimindeki bir DispIdAttribute ekleyin:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. Sergilemek istediğiniz olay kaydırmak için yeni bir olay türünü oluşturun.
  7. Kaynak arabirim özel Windows Forms denetimi uygular.
  8. COM olay kaynağı olarak sunulan arabirimlerin listesini tanımlamak için denetimi ComSourceInterfaces bir öznitelik eklemek için:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. Denetim, bir dinamik bağlantı kitaplığı (DLL) dosyası olarak derleyin.
  10. Bir komut dosyası bloğu HTML sayfasında olay kanca oluşturun. Örneğin:
    <!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. Herhangi bir istemci sisteminde, .NET Framework Yapılandırma Aracı (Mscorcfg.msc) derleme gerekli tek tek izinler vermek için kullanın.

Kod dökümü tamamlayın.

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

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Web sitelerine bakın:
Işleme ve olayları yükseltme
http://msdn2.microsoft.com/en-us/library/edzehd2t(vs.71).aspx

.NET framework Yapılandırma Aracı'nı (Mscorcfg.msc)
http://msdn2.microsoft.com/en-us/library/2bc0cxhc(vs.71).aspx

Yönetilmeyen kod ile birlikte çalışma
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

Ana bilgisayar güvenli, Microsoft ınternet Explorer'ın basit bir istemci tarafı denetimleri
http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
316510Hata: Olay işleyicileri ınternet Explorer'da kullanıldığında güvenlik özel durumu

Özellikler

Makale numarası: 313891 - Last Review: 17 Mayıs 2007 Perşembe - Gözden geçirme: 3.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Explorer 5.5
Anahtar Kelimeler: 
kbmt kbcominterop kbhowto kbhowtomaster kbsample KB313891 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:313891

Geri Bildirim Ver

 

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