Using Other COM Interfaces
So far, we have only discussed using
IDispatch (or automation) COM objects from Python
and only via Python helper classes. Although this is the most common
way to use COM objects, more advanced applications often need native
COM interfaces.
To illustrate this contingency, we will demonstrate the use of native interfaces with a little utility to dump statistics from a Microsoft Office application file (e.g., a Word document or Excel spreadsheet).
COM provides a technology known as structured storage . This is a set of functions and interfaces that allows you to store rich, hierarchical streams of data inside a single file, often referred to as a “filesystem within a file.”
Part of this implementation provides for standard properties about the file—the author of the file, for example. Windows Explorer is aware of these interfaces and can display the properties without any knowledge of the application that created the file. Microsoft Office stores its documents in structured storage files, and therefore the Windows Explorer can display rich information about Office documents.
To access these properties, call a COM function to open the
structured storage file. This operation results in a
PyIStorage
object, a Python object that wraps the
COM IStorage interface. If the document has
standard properties, you get these through the COM
IPropertySetStorage
interface, which means you should
perform a
QueryInterface()
on the PyIStorage object to get the needed interface. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access