racket/collects/mysterx/scribblings/methprop.scrbl

179 lines
6.1 KiB
Racket

#lang scribble/doc
@(require "common.ss")
@title[#:tag "methprop"]{COM Methods and Properties}
MysterX allows scripting of most COM components from Scheme. A COM
component can be scripted in MysterX if it supports OLE Automation
via the @tt{IDispatch} interface, and if it publishes type
information using the @tt{ITypeInfo} interface.
@defproc[(com-all-coclasses) (listof string?)]{
Returns a list of strings for all COM classes
registered on a system.}
@defproc[(com-all-controls) (listof string?)]{
Returns a list of strings for all COM classes
registered on a system that have the @scheme["Control"]
subkey.}
@deftogether[(
@defproc[(cocreate-instance-from-coclass [coclass string?]
[where (or/c (one-of/c 'local 'remote) string?) 'local])
com-object?]
@defproc[(cci/coclass [coclass string?]
[where (or/c (one-of/c 'local 'remote) string?) 'local])
com-object?]
)]{
Returns an instance of @scheme[coclass]. This is useful for COM
classes without a visual representation, or when a visual
representation is not needed.
The optional argument @scheme[where] indicates a for running the
instance, and may be @scheme['local], @scheme['remote], or a string
indicating a machine name. See @secref["remote"] for more
information.}
@deftogether[(
@defproc[(cocreate-instance-from-progid [progid string?]
[where (or/c (one-of/c 'local 'remote) string?) 'local])
com-object?]
@defproc[(cci/progid [progid string?]
[where (or/c (one-of/c 'local 'remote) string?) 'local])
com-object?]
)]{
Like @scheme[cocreate-instance-from-coclass], but using a ProgID.}
@deftogether[(
@defproc[(com-get-active-object-from-coclass [coclass string?])
com-object?]
@defproc[(gao/coclass [coclass string?])
com-object?]
)]{
Like @scheme[cocreate-instance-from-coclass], but gets an existing
active object (always local) instead of creating a new one.}
@defproc[(coclass [obj com-object?]) string?]{
Returns a string that is the name of the COM class instantiated by
@scheme[obj], or raises an error if the COM class is not known.}
@defproc[(progid [obj com-object?]) string?]{
Returns a string that is the name of the ProgID instantiated by
@scheme[obj], or raises an error if the COM class is not known.}
@defproc[(set-coclass! [obj com-object?] [coclass string?]) void?]{
Sets the COM class for @scheme[obj] to @scheme[coclass]. This is
useful when MysterX COM event-handling procedures can obtain only
ambiguous information about the object's COM class.}
@defproc[(set-coclass-from-progid! [obj com-object?] [progid string?]) void?]{
Like @scheme[set-coclass!], but using a ProgID.}
@defproc[(com-methods [obj/type (or/c com-object? com-type?)])
(listof string?)]{
Returns a list of strings indicating the names of methods on
@scheme[obj/type].}
@defproc[(com-method-type [obj/type (or/c com-object? com-type?)]
[method-name string?])
(listof symbol?)]{
Returns a list of symbols indicating the type of the specified
method in @scheme[obj/type]. See @secref["com-types"] for
information on the symbols.}
@defproc[(com-invoke [obj com-object?] [method-name string?] [v any/c])
any/c]{
Invokes @scheme[method-name] on @scheme[obj] with @scheme[v]s as the
arguments. The special value @scheme[com-omit] may be used for
optional arguments, which useful when values are supplied for
arguments after the omitted argument(s).}
@defproc[(com-get-properties [obj/type (or/c com-object? com-type?)])
(listof string?)]{
Returns a list of strings indicating the names of readable
properties in @scheme[obj/type].}
@defproc[(com-get-property-type [obj/type (or/c com-object? com-type?)]
[property-name string?])
(listof symbol?)]{
Returns a list of symbols indicating the type of the specified
property in @scheme[obj/type]. See @secref["com-types"] for
information on the symbols.}
@defproc[(com-get-property [obj com-object?] [property string?] ...+)
any/c]{
Returns the value of the final property by following the indicated
path of @scheme[property]s, where each intermediate property is a
COM object.}
@defproc[(com-set-properties [obj/type (or/c com-object? com-type?)])
(listof string?)]{
Returns a list of strings indicating the names of writeable
properties in @scheme[obj/type].}
@defproc[(com-set-property-type [obj/type (or/c com-object? com-type?)]
[property-name strig?])
(listof symbol?)]{
Returns a list of symbols indicating the type of the specified
property in @scheme[obj/type]. See @secref["com-types"] for
information on the symbols.}
@defproc[(com-set-property! [obj com-object?]
[string? property] ...+
[v any/c])
void?]{
Sets the value of the final property in @scheme[obj] to @scheme[v]
by following the @scheme[property]s, where the value of each
intermediate property is a COM object.}
@defproc[(com-help [obj/type (or/c com-object? com-type?)]
[topic string? ""])
void?]{
Starts the Window Help system with help about the COM object or COM
type. The optional @scheme[topic] is typically a method or property
name.}
@defproc[(com-object-eq? [obj1 com-object?] [obj2 com-object?])
boolean?]{
Returns @scheme[#t] if the two COM objects are the same,
@scheme[#f] otherwise.}
@defproc[(com-object? [obj com-object?]) boolean?]{
Returns @scheme[#t] if the argument is a COM object, @scheme[#f]
otherwise.}
@defproc[(com-add-ref [obj com-object?]) void?]{
Increments the reference count for @scheme[obj].
This procedure should only be called when system-level
errors occur due to a mismanaged COM object. Ordinarily,
MysterX handles all COM reference-counting automatically.}
@defproc[(com-ref-count [obj com-object?]) exact-nonnegative-integer?]{
Returns a number indicating the current reference count
for a COM object.}