Using COM Objects from Python
When people discuss COM, they are often talking about only one side of COM—using automation objects. Automation objects are objects that expose a programmable interface that can be used by another program or environment. Examples of automation objects are Microsoft Office, the Netscape browser, or programs you write yourself in any language, such as Visual Basic, Python, Delphi, C++, and so forth.
Information about COM objects is stored in the Windows
registry. Details about the
object’s class are stored, so that when that particular object
needs to be created, the correct class is located and used. Although
the term
“class”
doesn’t refer to a Python (or C++) class, the concept is
identical: the class defines the implementation, and the object is an
instance of the class. Classes are registered with a unique (but
complex)
class ID (CLSID) and a
friendly (but not guaranteed unique) program ID (ProgID). The CLSID is a
globally
unique identifier (GUID), as discussed later in this chapter, while
the ProgID for an object is a short string that names the object and
typically creates an instance of the object. For example, Microsoft
Excel defines its ProgID as Excel.Application
,
Microsoft Word defines Word.Application
, and so
forth.
Python programs use the
win32com.client.Dispatch()
method to create COM objects from a
ProgID or CLSID. For example, you could use this code to create an
Excel object:
>>> import win32com.client >>> xl = win32com.client.Dispatch("Excel.Application") ...
Get Python Programming On Win32 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.