Contents
Preface
1 Using COM
1.1 Prerequisites
1.2 Including COM in a Lisp application
1.2.1 Loading the modules
1.2.2 Generating FLI definitions from COM definitions
1.2.3 Standard IDL files
1.2.4 Making a COM DLL with LispWorks
1.3 The mapping from COM names to Lisp symbols
1.4 Obtaining the first COM interface pointer
1.5 Reference counting
1.6 Querying for other COM interface pointers
1.7 Calling COM interface methods
1.7.1 Data conversion when calling COM methods
1.7.1.1 In parameters
1.7.1.2 Out parameters
1.7.1.3 In-out parameters
1.7.2 Error handling
1.8 Implementing COM interfaces in Lisp
1.8.1 Steps required to implement COM interfaces
1.8.2 The lifecycle of a COM object
1.8.3 Class factories
1.8.4 Unimplemented methods
1.8.5 Inheritance
1.8.5.1 An example of multiple inheritance
1.8.5.2 A second example of multiple inheritance
1.8.6 Data conversion in define-com-method
1.8.6.1 FLI types
1.8.6.2 In parameters
1.8.6.3 Out parameters
1.8.6.4 In-out parameters
1.9 Calling COM object methods from Lisp
1.9.1 Data conversion when calling COM object methods
1.9.1.1 In parameters
1.9.1.2 Out parameters
1.9.1.3 In-out parameters
2 COM Reference Entries
add-ref
automation-server-command-line-action
automation-server-main
automation-server-top-loop
call-com-interface
call-com-object
check-hresult
co-create-guid
co-initialize
co-task-mem-alloc
co-task-mem-free
co-uninitialize
com-error
com-interface
com-interface-refguid
com-object
com-object-destructor
com-object-from-pointer
com-object-initialize
com-object-query-interface
create-instance
define-com-implementation
define-com-method
find-clsid
get-object
guid-equal
guid-to-string
hresult
hresult-equal
i-unknown
interface-ref
make-factory-entry
make-guid-from-string
midl
midl-default-import-paths
midl-set-import-paths
:midl-file
query-interface
query-object-interface
refguid
refguid-interface-name
refiid
register-class-factory-entry
register-server
release
s_ok
server-can-exit-p
server-in-use-p 74
set-automation-server-exit-delay
set-register-server-error-reporter
standard-i-unknown
start-factories
stop-factories
succeeded
unregister-server
with-com-interface
with-com-object
with-temp-interface
with-query-interface
3 Using Automation
3.1 Including Automation in a Lisp application
3.1.1 Loading the modules
3.1.2 Generating FLI definitions from COM definitions
3.1.3 Reducing the size of the converted library
3.2 Starting a remote Automation server
3.3 Calling Automation methods
3.3.1 Calling Automation methods using a type library
3.3.2 Calling Automation methods without a type library
3.3.3 Data conversion when calling Automation methods
3.3.4 Using collections
3.3.5 Using connection points
3.3.6 Error handling
3.4 Implementing Automation interfaces in Lisp
3.4.1 A complete implementation of an Automation server
3.4.2 A simple implementation of a single Automation interface
3.4.3 Implementing collections
3.4.4 Implementing connection points
3.4.5 Reporting errors
3.4.6 Registering a running object for use by other applications
3.4.7 Automation of a CAPI application
3.5 Examples of using Automation
4 Automation Reference Entries
com-dispatch-invoke-exception-error
com-dispatch-invoke-exception-error-info
call-dispatch-get-property
call-dispatch-method
call-dispatch-put-property
com-object-dispinterface-invoke
create-instance-with-events
create-object
define-automation-collection
define-automation-component
define-dispinterface-method
disconnect-standard-sink
do-collection-items
do-connections
find-component-tlb
find-component-value
get-active-object
get-error-info
get-i-dispatch-name
get-i-dispatch-source-names
i-dispatch
interface-connect
interface-disconnect
lisp-variant
invoke-dispatch-get-property
invoke-dispatch-method
invoke-dispatch-put-property
make-lisp-variant
:midl-type-library-file
print-i-dispatch-methods
query-simple-i-dispatch-interface
register-active-object
revoke-active-object
set-error-info
set-i-dispatch-event-handler
set-variant
simple-i-dispatch
simple-i-dispatch-callback-object
standard-automation-collection
standard-i-connection-point-container
standard-i-dispatch
with-coclass
with-dispatch-interface
5 Tools
5.1 The COM Implementation Browser
5.2 The COM Object Browser
5.3 The COM Interface Browser
5.4 Editor extensions
5.4.1 Inserting GUIDs
5.4.2 Argument lists
6 Self-contained examples
6.1 Argument passing
6.2 Aggregation
6.3 OLE embedding of external components
6.4 Building an ActiveX control
6.5 OLE automation
Index
LispWorks COM/Automation User Guide and Reference Manual - 23 Mar 2017