<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=IDispatch</id>
	<title>IDispatch - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=IDispatch"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=IDispatch&amp;action=history"/>
	<updated>2026-06-29T06:36:00Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=IDispatch&amp;diff=3324956&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot：​补救4个来源，并将0个来源标记为失效。) #IABot (v2.0.7</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=IDispatch&amp;diff=3324956&amp;oldid=prev"/>
		<updated>2020-12-09T00:07:05Z</updated>

		<summary type="html">&lt;p&gt;补救4个来源，并将0个来源标记为失效。) #IABot (v2.0.7&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|G2=Windows&lt;br /&gt;
|2=zh-hans:组件对象模型; zh-hant:元件物件模型;&lt;br /&gt;
|3=zh-hans:对象链接与嵌入;zh-hant:物件連結與嵌入;&lt;br /&gt;
|4=zh-hans:对象; zh-hant:物件;&lt;br /&gt;
|5=zh-hans:组件; zh-hant:元件;&lt;br /&gt;
|6=zh-hans:链接; zh-hant:連結;&lt;br /&gt;
|7=zh-hans:程序; zh-hant:程式;&lt;br /&gt;
|8=zh-hans:自省; zh-hant:內觀資訊;&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;IDispatch&amp;#039;&amp;#039;&amp;#039;[[介面 (資訊科技)|介面]]是[[组件对象模型]]（COM）中的标准介面，也称&amp;#039;&amp;#039;&amp;#039;自动化&amp;#039;&amp;#039;&amp;#039;（Automation）接口，继承自[[IUnknown]]，用于讓其他函式使用{{tsl|en|OLE Automation|OLE Automation}}协议&amp;lt;ref&amp;gt;Microsoft MSDN: [http://msdn.microsoft.com/en-us/library/ms221608.aspx IDispatch interface] {{Wayback|url=http://msdn.microsoft.com/en-us/library/ms221608.aspx |date=20180223051201 }}&amp;lt;/ref&amp;gt;。COM規格書&amp;lt;ref&amp;gt;{{Cite web |url=http://www.microsoft.com/com/resources/comdocs.asp |title=COM specification |access-date=2016-12-26 |archive-url=https://web.archive.org/web/20161221063614/http://www.microsoft.com/Com/resources/comdocs.asp |archive-date=2016-12-21 |dead-url=yes }}&amp;lt;/ref&amp;gt;規定COM物件应该是三种接口类型中的至少一种：&lt;br /&gt;
*基于虚表（vtable）的[[IUnknown]]的定制接口；&lt;br /&gt;
*分派（dispatch）的IDispatch接口以支持內觀資訊（introspection）。允许客户应用程序在[[运行时]]查出COM组件支持哪些属性与方法，即实现了[[运行期类型信息]]（RTTI）。客户应用程序[[编译时]]不需要知道COM的对象成员。脚本语言如[[VBS]]不能使用指针乃至[[函数指针]]，只能通过IDispatch接口访问COM组件。这是通过执行IDispatch接口中的Invoke方法。这是一种{{tsl|en|Late binding|迟绑定}}。与第一种定制接口相比，增加了內觀資訊与invoke的开销。&amp;lt;ref&amp;gt;Microsoft MSDN: [http://www.microsoft.com/msj/1295/activex1295.aspx ActiveX/COM Q&amp;amp;A December 1995] {{Wayback|url=http://www.microsoft.com/msj/1295/activex1295.aspx |date=20160306062514 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
*dual接口，同时支持上述两种类型的接口 &lt;br /&gt;
==方法==&lt;br /&gt;
支持IDispatch的COM对象实现的每个属性与方法都有自己的Dispatch ID，常缩写为DISPID。用于在&amp;#039;&amp;#039;Invoke&amp;#039;&amp;#039;方法中辨识哪个属性或方法将被调用。 &lt;br /&gt;
&lt;br /&gt;
IDispatch派生自[[IUnknown]]，并且扩展了4个额外的方法：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
interface IDispatch : public IUnknown {&lt;br /&gt;
  virtual HRESULT GetTypeInfoCount(unsigned int * pctinfo) = 0;&lt;br /&gt;
  virtual HRESULT GetTypeInfo(unsigned int iTInfo,&lt;br /&gt;
                              LCID lcid,&lt;br /&gt;
                              ITypeInfo ** ppTInfo&lt;br /&gt;
                             ) = 0;&lt;br /&gt;
  virtual HRESULT GetIDsOfNames(REFIID riid,&lt;br /&gt;
                                OLECHAR ** rgszNames,&lt;br /&gt;
                                unsigned int cNames,&lt;br /&gt;
                                LCID lcid,&lt;br /&gt;
                                DISPID * rgDispId&lt;br /&gt;
                               ) = 0;&lt;br /&gt;
  virtual HRESULT Invoke(DISPID dispIdMember,&lt;br /&gt;
                         REFIID riid,&lt;br /&gt;
                         LCID lcid,&lt;br /&gt;
                         WORD wFlags,&lt;br /&gt;
                         DISPPARAMS * pDispParams,&lt;br /&gt;
                         VARIANT * pVarResult,&lt;br /&gt;
                         EXCEPINFO * pExcepInfo,&lt;br /&gt;
                         unsigned int * puArgErr&lt;br /&gt;
                        ) = 0;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;IDispatch&amp;#039;&amp;#039;&amp;#039;的[[接口标识符]]被定义为[[GUID]]值{00020400-0000-0000-C000-000000000046}。&lt;br /&gt;
==參考資料==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==相關條目==&lt;br /&gt;
*[[IFilter]]&lt;br /&gt;
*[[IInspectable]]&lt;br /&gt;
*[[IObjectWithSite]]&lt;br /&gt;
*[[IOleObject]]&lt;br /&gt;
&lt;br /&gt;
==外部連結==&lt;br /&gt;
* [http://www.codeproject.com/kb/com/com_in_c1.aspx COM in plain C]{{Wayback|url=http://www.codeproject.com/kb/com/com_in_c1.aspx |date=20151105010714 }}&lt;br /&gt;
&lt;br /&gt;
[[Category:面向对象的程序设计]]&lt;br /&gt;
[[Category:微軟API]]&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>