HOW TO: Sink จัดการ c# เหตุการณ์ใน Internet Explorer สคริปต์

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 313891 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความที่มีการทีละขั้นตอนนี้แสดงวิธีการจมได้รับการจัดการเหตุการณ์จากไคลเอ็นต์คอมโพเนนต์วัตถุแบบจำลอง (COM) (ไม่มีการจัดการรหัส) เมื่อคุณเขียนตัวควบคุม.NET Windows ตัวอย่างเช่น คุณจมได้รับการจัดการเหตุการณ์จากไคลเอนต์ COM เมื่อคุณเรียกใช้สคริปต์ใน Internet Explorer

สำหรับข้อมูลเกี่ยวกับวิธีการเขียน และ การใช้ชนิดที่ได้รับการจัดการจาก COM ดูเอกสารประกอบนักการต่อไปนี้ Microsoft .NET Framework พัฒนาของรายการแนะนำสำหรับ:
exposing .NET คอมโพเนนต์ของกรอบงานการ COM
.aspx http://msdn2.microsoft.com/en-us/library/zsfww439 (vs.71)

ความต้องการ

รายการต่อไปนี้แสดงฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่คุณต้องการ:
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer (เขียนโปรแกรม) รุ่น 5.5 หรือรุ่นใหม่กว่า

ขั้นตอนในการรับเหตุการณ์ใน Internet Explorer สคริปต์ที่มีจัดการ

  1. สร้างตัวควบคุมฟอร์มของ Windows แบบกำหนดเอง:
    1. เริ่ม Microsoft Visual Studio .NET
    2. ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject.
    3. ในการโครงการใหม่กล่องโต้ตอบ คลิกแสดงโครงการ c#ภายใต้ชนิดโครงการแล้ว คลิกไลบรารีตัวควบคุมของ windowsภายใต้แม่แบบ.
  2. กำหนดอินเทอร์เฟซของแหล่งที่มาสำหรับเหตุการณ์มีการเปิดเผย
  3. เพิ่มคำGuidAttributeคลาไปยังอินเทอร์เฟซของแหล่งที่มา คุณต้องจัดรูปแบบสายอักขระที่คุณส่งไปยังแอตทริบิวต์เป็นอาร์กิวเมนต์ตัวสร้างยอมรับได้สำหรับชนิดของ Guid คุณสามารถใช้แฟ้ม Guidgen.exe สร้าง GUID ที่ไม่ได้ใช้
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. เพิ่มการInterfaceTypeคุณลักษณะอินเทอร์เฟซสำหรับแหล่งการแสดงถึง COM เป็นการIDispatchอินเทอร์เฟซ:
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. เพิ่มคำDispIdAttributeเมื่อต้องการสมาชิกใด ๆ ในอินเทอร์เฟซของแหล่งที่มาจะระบุ COM dispatch รหัส (DISPID) ของวิธีการหรือเขตข้อมูล:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. สร้างชนิดเหตุการณ์ใหม่เพื่อตัดเหตุการณ์ที่ต้องการเปิดเผย
  7. ใช้อินเทอร์เฟซของแหล่งที่มาบนแบบฟอร์ม Windows คอนโทรลแบบกำหนดเอง
  8. เพิ่มคำComSourceInterfacesคุณลักษณะการควบคุมการระบุรายการของอินเทอร์เฟซที่เปิดเผยเป็นแหล่งที่มาของเหตุการณ์ COM:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. การคอมไพล์ตัวควบคุมเป็นแฟ้มไลบรารีการเชื่อมโยง dynamic (DLL)
  10. สร้างบล็อกสคริปต์บนเพจ HTML ไป hook เหตุการณ์ ตัวอย่าง::
    <!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. บนระบบไคลเอนต์ ใช้เครื่องมือการตั้งค่าคอนฟิกกรอบงาน.NET (Mscorcfg.msc) ไปยังแอสเซมบลีที่ให้สิทธิ์สิทธิ์แต่ละที่จำเป็น

รายการของรหัสการทำให้เสร็จสมบูรณ์

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:
การจัดการ และเพิ่มเหตุการณ์
.aspx http://msdn2.microsoft.com/en-us/library/edzehd2t (vs.71)

เครื่องมือตั้งค่าคอนฟิกกรอบงานการ.NET (Mscorcfg.msc)
.aspx http://msdn2.microsoft.com/en-us/library/2bc0cxhc (vs.71)

interoperating ด้วยรหัสที่ไม่มีการจัดการ
.aspx http://msdn2.microsoft.com/en-us/library/sd10k43k (vs.71)

โฮสต์ที่ปลอดภัย การควบคุมไคลเอนต์เอ็นต์ Lightweight ใน Microsoft Internet Explorer
http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx
สำหรับข้อมูลเพิ่มเติม โปรดคลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
316510BUG: ข้อยกความปลอดภัยเว้นเมื่อคุณใช้ตัวจัดการเหตุการณ์ใน Internet Explorer

คุณสมบัติ

หมายเลขบทความ (Article ID): 313891 - รีวิวครั้งสุดท้าย: 10 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbcominterop kbhowto kbhowtomaster kbsample kbmt KB313891 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:313891

ให้ข้อเสนอแนะ

 

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