¿Qué es COM?

Según la Wikipedia:

Component Object Model (COM) es una plataforma de Microsoft para componentes de software introducida por dicha empresa en 1993. Esta plataforma es utilizada para permitir la comunicación entre procesos y la creación dinámica de objetos, en cualquier lenguaje de programación que soporte dicha tecnología. El término COM es a menudo usado en el mundo del desarrollo de software como un término que abarca las tecnologías OLE, OLE Automation, ActiveX, COM+ y DCOM.

Ejemplos de creación de objetos COM:

PHP

$obj = new COM("nombre-objeto");
$obj->metodonombre();
$obj->atributo = "atributo";

VBScript

Dim obj
Set obj = CreateObject(“nombreObjeto”)
obj.metodo()

Jscript

var obj;
obj = new ActiveXObject("nombreObjeto");

Ruby

Require ‘win32ole’
obj = WIN32OLE.new(‘nombreObjeto’)

Perl

use Win32::OLE;
$my obj = Win32::OLE->new(“nombreObjeto”);

Pascal

Var
objeto: variant;
Objeto := CreateOleObject(“nombreObjeto”);

Ejemplo

El siguiente ejemplo es un validador de documentos XML en PHP (también se puede hacer gracias a COM en otros lenguajes)

if($argc> 1)
{

    if($xmlDOM = new COM("Microsoft.XMLDOM"))
    {
   
        $xmlDOM->async = "false";
        $xmlDOM->validateOnParse = "true";
        $xmlDOM->load($argv[1]);
       
        echo "\n[-] Archivo XML cargado\n";
        echo "[-] validando...\n";
           
        if($xmlDOM->parseError->errorCode == 0)
        {
            echo "[-] No se encontraron errores\n";
            echo "[-] Documento XML valido (congratulations)\n";
        }
        else
        {

            echo "[*] Error: \n";
            echo "\n  Codigo de error: ".$xmlDOM->parseError->errorCode;
            echo "\n  Descripcion del error: ".$xmlDOM->parseError->reason;
            echo "\n  Linea: ".$xmlDOM->parseError->line."\n";

        }   
    }   
    else
    {
        exit("[*] Error... objeto com no creado.\n");
    }

}
else
{

    echo "XML Validator Coded by Amir Canto  | http://www.algoritmatica.com\n";
    echo "Usage: $argv[0] archivo.xml\n";
    exit(0);
}

Un saludo!.

Si alguien conoce alguno más! Que no dude en hacérnoslo saber! Ayudanos a completar la lista =).