<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.utilspec.windows.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'book.com.php',
    1 => 'COM',
    2 => 'COM 和 .Net（Windows）',
  ),
  'up' => 
  array (
    0 => 'refs.utilspec.windows.php',
    1 => 'Windows 专用扩展',
  ),
  'prev' => 
  array (
    0 => 'refs.utilspec.windows.php',
    1 => 'Windows 专用扩展',
  ),
  'next' => 
  array (
    0 => 'com.setup.php',
    1 => '安装/配置',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'reference/com/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.com.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.com" class="book">
 
 <h1 class="title">COM 和 .Net（Windows）</h1>
 

 
 <div id="intro.com" class="preface">
  <h1 class="title">简介</h1>
  <p class="para">
   COM 是 <code class="literal">Component Object Model</code> 的缩写；它是 DCE
   RPC（公开标准）之上的面向对象层（和相关服务），定义了通用的调用转换，任一语言编写的代码都可以与另外的任一语言（前提是这些语言可以
   COM 感知）编写的代码进行互相调用与交互。代码不仅可以用任何语言编写，并且不需要是同一个执行文件的一部分；代码可以从 DLL
   载入，或者从相同机器的另外一个进程中找到，或者使用 DCOM（分布式 COM），或者从远程机器的另外一个进程中找到，所有的这些都不要代码知道组件在哪里。
  </p>
  <p class="para">
   有个 COM 子集叫做 OLE 自动化，包含一组允许松散绑定 COM 对象的 COM
   接口，因此可以在运行是对其自省（introspected）和调用，而无需了解编译时这些对象的工作原理。PHP
   COM 扩展利用 OLE 自动化接口，允许从脚本中创建和调用兼容对象。从技术上，这应该称为“<code class="literal">OLE Automation
   Extension for PHP</code>”（PHP OLE 自动化扩展），因为并非所有的 COM 对象用于 OLE 兼容。
  </p>
  <p class="para">
   现在，为什么以及何时应该使用 COM？COM 是在 Windows 平台上将组件和应用结合在一起的主要方法之一；使用 COM
   可以启动 Microsoft Word，填充文档模板并将结果保存为 Word 文档，然后将其发送给网站的访客。可以使用 COM
   为网络执行管理任务和配置 IIS；这些只是最常见的用途；还可以使用 COM 做更多的事情。
  </p>
  <p class="para">
   此外，支持使用 Microsoft 提供的 COM 互操作层来实例化和创建 .NET 程序集。
  </p>
 </div>
 

 







 






 






 






 





 




 




 




 




 




 








<ul class="chunklist chunklist_book"><li><a href="com.setup.php">安装/配置</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="com.requirements.php">需求</a></li><li><a href="com.installation.php">安装</a></li><li><a href="com.configuration.php">运行时配置</a></li></ul></li><li><a href="com.constants.php">预定义常量</a></li><li><a href="com.error-handling.php">Errors and error handling</a></li><li><a href="com.examples.php">示例</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="com.examples.foreach.php">For Each</a></li><li><a href="com.examples.arrays.php">Arrays and Array-style COM properties</a></li></ul></li><li><a href="class.com.php">com</a> — The com class<ul class="chunklist chunklist_book chunklist_children"><li><a href="com.construct.php">com::__construct</a> — com class constructor</li></ul></li><li><a href="class.dotnet.php">dotnet</a> — The dotnet class<ul class="chunklist chunklist_book chunklist_children"><li><a href="dotnet.construct.php">dotnet::__construct</a> — dotnet class constructor</li></ul></li><li><a href="class.variant.php">variant</a> — variant class<ul class="chunklist chunklist_book chunklist_children"><li><a href="variant.construct.php">variant::__construct</a> — variant class constructor</li></ul></li><li><a href="class.compersisthelper.php">COMPersistHelper</a> — The COMPersistHelper class<ul class="chunklist chunklist_book chunklist_children"><li><a href="compersisthelper.construct.php">COMPersistHelper::__construct</a> — Construct a COMPersistHelper object</li><li><a href="compersisthelper.getcurfilename.php">COMPersistHelper::GetCurFileName</a> — Get current filename</li><li><a href="compersisthelper.getmaxstreamsize.php">COMPersistHelper::GetMaxStreamSize</a> — Get maximum stream size</li><li><a href="compersisthelper.initnew.php">COMPersistHelper::InitNew</a> — Initialize object to default state</li><li><a href="compersisthelper.loadfromfile.php">COMPersistHelper::LoadFromFile</a> — Load object from file</li><li><a href="compersisthelper.loadfromstream.php">COMPersistHelper::LoadFromStream</a> — Load object from stream</li><li><a href="compersisthelper.savetofile.php">COMPersistHelper::SaveToFile</a> — Save object to file</li><li><a href="compersisthelper.savetostream.php">COMPersistHelper::SaveToStream</a> — Save object to stream</li></ul></li><li><a href="class.com-exception.php">com_exception</a> — The com_exception class</li><li><a href="class.com-safearray-proxy.php">com_safearray_proxy</a> — com_safearray_proxy 类</li><li><a href="ref.com.php">COM 函数</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.com-create-guid.php">com_create_guid</a> — Generate a globally unique identifier (GUID)</li><li><a href="function.com-event-sink.php">com_event_sink</a> — Connect events from a COM object to a PHP object</li><li><a href="function.com-get-active-object.php">com_get_active_object</a> — Returns a handle to an already running instance of a COM object</li><li><a href="function.com-load-typelib.php">com_load_typelib</a> — 载入 Typelib</li><li><a href="function.com-message-pump.php">com_message_pump</a> — Process COM messages, sleeping for up to timeoutms milliseconds</li><li><a href="function.com-print-typeinfo.php">com_print_typeinfo</a> — Print out a PHP class definition for a dispatchable interface</li><li><a href="function.variant-abs.php">variant_abs</a> — Returns the absolute value of a variant</li><li><a href="function.variant-add.php">variant_add</a> — &quot;Adds&quot; two variant values together and returns the result</li><li><a href="function.variant-and.php">variant_and</a> — Performs a bitwise AND operation between two variants</li><li><a href="function.variant-cast.php">variant_cast</a> — Convert a variant into a new variant object of another type</li><li><a href="function.variant-cat.php">variant_cat</a> — Concatenates two variant values together and returns the result</li><li><a href="function.variant-cmp.php">variant_cmp</a> — Compares two variants</li><li><a href="function.variant-date-from-timestamp.php">variant_date_from_timestamp</a> — Returns a variant date representation of a Unix timestamp</li><li><a href="function.variant-date-to-timestamp.php">variant_date_to_timestamp</a> — Converts a variant date/time value to Unix timestamp</li><li><a href="function.variant-div.php">variant_div</a> — Returns the result from dividing two variants</li><li><a href="function.variant-eqv.php">variant_eqv</a> — Performs a bitwise equivalence on two variants</li><li><a href="function.variant-fix.php">variant_fix</a> — Returns the integer portion of a variant</li><li><a href="function.variant-get-type.php">variant_get_type</a> — Returns the type of a variant object</li><li><a href="function.variant-idiv.php">variant_idiv</a> — Converts variants to integers and then returns the result from dividing them</li><li><a href="function.variant-imp.php">variant_imp</a> — Performs a bitwise implication on two variants</li><li><a href="function.variant-int.php">variant_int</a> — Returns the integer portion of a variant</li><li><a href="function.variant-mod.php">variant_mod</a> — Divides two variants and returns only the remainder</li><li><a href="function.variant-mul.php">variant_mul</a> — Multiplies the values of the two variants</li><li><a href="function.variant-neg.php">variant_neg</a> — Performs logical negation on a variant</li><li><a href="function.variant-not.php">variant_not</a> — Performs bitwise not negation on a variant</li><li><a href="function.variant-or.php">variant_or</a> — Performs a logical disjunction on two variants</li><li><a href="function.variant-pow.php">variant_pow</a> — Returns the result of performing the power function with two variants</li><li><a href="function.variant-round.php">variant_round</a> — Rounds a variant to the specified number of decimal places</li><li><a href="function.variant-set.php">variant_set</a> — Assigns a new value for a variant object</li><li><a href="function.variant-set-type.php">variant_set_type</a> — Convert a variant into another type &quot;in-place&quot;</li><li><a href="function.variant-sub.php">variant_sub</a> — Subtracts the value of the right variant from the left variant value</li><li><a href="function.variant-xor.php">variant_xor</a> — Performs a logical exclusion on two variants</li></ul></li></ul></div><?php manual_footer($setup); ?>