¹æ¹ý: Internet Explorer ½ºÅ©¸³Æ® °ü¸®µÇ´Â C# À̺¥Æ® ½ÌÅ©

±â¼ú ÀÚ·á: 313891 - ÀÌ ¹®¼­°¡ Àû¿ëµÇ´Â Á¦Ç° º¸±â.
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

ÀÌ ÆäÀÌÁö¿¡¼­

¿ä¾à

±¸¼º ¿ä¼Ò °³Ã¼ ¸ðµ¨(COM) Ŭ¶óÀÌ¾ðÆ® (°ü¸®µÇÁö ¾Ê´Â ÄÚµå) ¿¡¼­ °ü¸®µÇ´Â À̺¥Æ®¸¦ ½ÌÅ©ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù ÀÌ ¹®¼­¿¡¼­´Â .NET Windows ÄÁÆ®·ÑÀ» ÀÛ¼ºÇÒ ¶§. ¿¹¸¦ µé¾î, Internet Explorer¿¡¼­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¶§ COM Ŭ¶óÀÌ¾ðÆ®°¡ °ü¸®µÇ´Â À̺¥Æ®¸¦ ½ÌÅ©ÇÏ´Â.

¾µ COM¿¡¼­ °ü¸®µÇ´Â Çü½ÄÀ» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Microsoft .NET Framework °³¹ßÀÚ °¡ÀÌµå ¼³¸í¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.
.NET Framework ±¸¼º ¿ä¼Ò COM ³ëÃâ
http://msdn2.microsoft.com/en-us/library/zsfww439(vs.71).aspx

¿ä±¸ »çÇ×

´ÙÀ½Àº ±ÇÀåµÇ´Â Çϵå¿þ¾î, ¼ÒÇÁÆ®¿þ¾î, ³×Æ®¿öÅ© ÀÎÇÁ¶ó ¹× ÇÊ¿äÇÑ ¼­ºñ½º ÆÑÀÇ ¸ñ·ÏÀÔ´Ï´Ù.
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer ¹öÀü 5.5 ÀÌ»óÀÌ (ÇÁ·Î±×·¡¹Ö)

Internet Explorer ½ºÅ©¸³Æ® À̺¥Æ® ½ÌÅ© ´Ü°è¸¦ °ü¸®

  1. »ç¿ëÀÚ ÁöÁ¤ Windows Forms ÄÁÆ®·ÑÀ» ¸¸µì´Ï´Ù.
    1. Microsoft Visual Studio .NET ½ÃÀÛÇϽʽÿÀ.
    2. ÆÄÀÏ ¸Þ´º¿¡¼­ »õ·Î ¸¸µé±â¸¦ °¡¸®Å² ´ÙÀ½ ÇÁ·ÎÁ§Æ® ¸¦ Ŭ¸¯ÇϽʽÿÀ.
    3. »õ ÇÁ·ÎÁ§Æ® ´ëÈ­ »óÀÚÀÇ ÇÁ·ÎÁ§Æ® Çü½ÄVisual C# ÇÁ·ÎÁ§Æ® Ŭ¸¯ÇÑ ´ÙÀ½ ÅÛÇø´ ¿¡¼­ Windows ÄÁÆ®·Ñ ¶óÀ̺귯¸® ¸¦ ´©¸¨´Ï´Ù.
  2. ³ëÃâµÇ¾î¾ß À̺¥Æ®¿¡ ´ëÇÑ ¿øº» ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇϽʽÿÀ.
  3. GuidAttribute Ŭ·¡½ºÀÇ ¼Ò½º ÀÎÅÍÆäÀ̽º¸¦ Ãß°¡ÇϽʽÿÀ. Guid À¯Çü¿¡ ÀûÇÕÇÑ »ý¼ºÀÚ Àμö·Î Ư¼º¿¡ Àü´ÞÇÏ´Â ¹®ÀÚ¿­¿¡ ¼­½ÄÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. Guidgen.exe¸¦ ÆÄÀÏÀ» »ç¿ëÇÏÁö ¾Ê´Â GUID¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. ¼Ò½º ÀÎÅÍÆäÀ̽º¸¦ COM IDispatch ÀÎÅÍÆäÀ̽º¿Í ³ëÃâÇÏ´Â InterfaceType Ư¼ºÀ» Ãß°¡ÇÏ¿©:
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. ¸Þ¼­µå ¶Ç´Â Çʵå´Â COM µð½ºÆÐÄ¡ ½Äº°ÀÚ (DISPID) ÁöÁ¤ÇÏ·Á¸é ¸ðµç ±¸¼º¿ø¿¡°Ô ¿øº» ÀÎÅÍÆäÀ̽º¿¡¼­ DispIdAttribute Ãß°¡:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. ¿øÇÏ´Â À̺¥Æ®¸¦ ³ëÃâÇÏ´Â ·¡ÇÎÇÏ´Â »õ À̺¥Æ® Çü½ÄÀ» ¸¸µì´Ï´Ù.
  7. »ç¿ëÀÚ ÁöÁ¤ Windows Forms ÄÁÆ®·ÑÀÇ ¼Ò½º ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϽʽÿÀ.
  8. COM À̺¥Æ® ¼Ò½º·Î ³ëÃâµÇ´Â ÀÎÅÍÆäÀ̽º ¸ñ·ÏÀ» ½Äº°ÇÒ ¼ö ÀÖ´Â ÄÁÆ®·Ñ¿¡ ComSourceInterfaces Ư¼º Ãß°¡:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. ÄÁÆ®·ÑÀ» µ¿Àû ¸µÅ© ¶óÀ̺귯¸®(DLL) ÆÄÀÏ·Î ÄÄÆÄÀÏÇϽʽÿÀ.
  10. À̺¥Æ®¸¦ ÈÄÅ©Çϰí HTML ÆäÀÌÁö¿¡ ½ºÅ©¸³Æ® ºí·ÏÀ» ¸¸µì´Ï´Ù. ¿¹¸¦ µé¾î,:
    <!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. ¸ðµç Ŭ¶óÀÌ¾ðÆ® ½Ã½ºÅÛ¿¡ (Mscorcfg.msc¸¦) .NET Framework ±¸¼º µµ±¸¸¦ »ç¿ëÇÏ¿© ¾î¼Àºí¸®¿¡ ÇÊ¿äÇÑ °³º° »ç¿ë ±ÇÇÑÀ» ºÎ¿©ÇÕ´Ï´Ù.

ÄÚµå ¸ñ·Ï ¿Ï·á

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

ÂüÁ¶

ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Microsoft À¥ »çÀÌÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.
ó¸® ¹× À̺¥Æ® ¹ß»ý
http://msdn2.microsoft.com/en-us/library/edzehd2t(vs.71).aspx

.NET Framework ±¸¼º µµ±¸ (Mscorcfg.msc)
http://msdn2.microsoft.com/en-us/library/2bc0cxhc(vs.71).aspx

ºñ°ü¸® ÄÚµå¿ÍÀÇ »óÈ£ ¿î¿ë
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

Microsoft Internet Explorer¿¡¼­ °¡º­¿î Ŭ¶óÀ̾ðÆ®Ãø ÄÁÆ®·Ñ È£½ºÆ® º¸¾È
http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx
ÀÚ¼¼ÇÑ ³»¿ëÀº ¾Æ·¡ ¹®¼­ ¹øÈ£¸¦ ´­·¯ Microsoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¹®¼­¸¦ Ŭ¸¯ÇϽʽÿÀ.
316510BUG: Internet Explorer¿¡¼­ À̺¥Æ® 󸮱⠻ç¿ëÇÏ¸é º¸¾È ¿¹¿Ü

¼Ó¼º

±â¼ú ÀÚ·á: 313891 - ¸¶Áö¸· °ËÅä: 2007³â 5¿ù 17ÀÏ ¸ñ¿äÀÏ - ¼öÁ¤: 3.4
º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Explorer 5.5
Ű¿öµå:?
kbmt kbcominterop kbhowto kbhowtomaster kbsample KB313891 KbMtko
±â°è ¹ø¿ªµÈ ¹®¼­
Áß¿ä: º» ¹®¼­´Â Àü¹® ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ °ÍÀÌ ¾Æ´Ï¶ó Microsoft ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î·Î ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. Microsoft´Â ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ ¹®¼­ ¹× ±â°è ¹ø¿ªµÈ ¹®¼­¸¦ ¸ðµÎ Á¦°øÇϹǷΠMicrosoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¸ðµç ¹®¼­¸¦ Çѱ۷ΠÁ¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±â°è ¹ø¿ª ¹®¼­°¡ Ç×»ó ¿Ïº®ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼­ ±â°è ¹ø¿ª ¹®¼­¿¡´Â ¸¶Ä¡ ¿Ü±¹ÀÎÀÌ Çѱ¹¾î·Î ¸»ÇÒ ¶§ ½Ç¼ö¸¦ ÇÏ´Â °Íó·³ ¾îÈÖ, ±¸¹® ¶Ç´Â ¹®¹ý¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Microsoft´Â ³»¿ë»óÀÇ ¿À¿ª ¶Ç´Â Microsoft °í°´ÀÌ ÀÌ·¯ÇÑ ¿À¿ªÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ºÎ Á¤È®¼º, ¿À·ù ¶Ç´Â ¼ÕÇØ¿¡ ´ëÇØ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. Microsoft´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù.

Çǵå¹é º¸³»±â