294 lines
13 KiB
C
294 lines
13 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the w64 mingw-runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER within this package.
|
|
*/
|
|
#ifndef _OLE_H_
|
|
#define _OLE_H_
|
|
|
|
#ifdef _OLE2_H_
|
|
#error You can't use ole.h and ole2.h together.
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef WINAPI
|
|
#define WINAPI __stdcall
|
|
#define CALLBACK __stdcall
|
|
#define LPCSTR LPSTR
|
|
#define LRESULT LONG_PTR
|
|
#define HGLOBAL HANDLE
|
|
#endif
|
|
|
|
#define OLE_LPCSTR LPCSTR
|
|
#define OLE_CONST const
|
|
|
|
#define LRESULT LONG_PTR
|
|
#define HGLOBAL HANDLE
|
|
|
|
#define OT_LINK 1L
|
|
#define OT_EMBEDDED 2L
|
|
#define OT_STATIC 3L
|
|
|
|
#define OLEVERB_PRIMARY 0
|
|
|
|
typedef struct _OLETARGETDEVICE {
|
|
USHORT otdDeviceNameOffset;
|
|
USHORT otdDriverNameOffset;
|
|
USHORT otdPortNameOffset;
|
|
USHORT otdExtDevmodeOffset;
|
|
USHORT otdExtDevmodeSize;
|
|
USHORT otdEnvironmentOffset;
|
|
USHORT otdEnvironmentSize;
|
|
BYTE otdData[1];
|
|
} OLETARGETDEVICE;
|
|
|
|
typedef OLETARGETDEVICE *LPOLETARGETDEVICE;
|
|
|
|
#define OF_SET 0x0001
|
|
#define OF_GET 0x0002
|
|
#define OF_HANDLER 0x0004
|
|
|
|
typedef enum {
|
|
OLE_OK,OLE_WAIT_FOR_RELEASE,OLE_BUSY,OLE_ERROR_PROTECT_ONLY,OLE_ERROR_MEMORY,OLE_ERROR_STREAM,OLE_ERROR_STATIC,OLE_ERROR_BLANK,
|
|
OLE_ERROR_DRAW,OLE_ERROR_METAFILE,OLE_ERROR_ABORT,OLE_ERROR_CLIPBOARD,OLE_ERROR_FORMAT,OLE_ERROR_OBJECT,OLE_ERROR_OPTION,OLE_ERROR_PROTOCOL,
|
|
OLE_ERROR_ADDRESS,OLE_ERROR_NOT_EQUAL,OLE_ERROR_HANDLE,OLE_ERROR_GENERIC,OLE_ERROR_CLASS,OLE_ERROR_SYNTAX,OLE_ERROR_DATATYPE,OLE_ERROR_PALETTE,
|
|
OLE_ERROR_NOT_LINK,OLE_ERROR_NOT_EMPTY,OLE_ERROR_SIZE,OLE_ERROR_DRIVE,OLE_ERROR_NETWORK,OLE_ERROR_NAME,OLE_ERROR_TEMPLATE,OLE_ERROR_NEW,
|
|
OLE_ERROR_EDIT,OLE_ERROR_OPEN,OLE_ERROR_NOT_OPEN,OLE_ERROR_LAUNCH,OLE_ERROR_COMM,OLE_ERROR_TERMINATE,OLE_ERROR_COMMAND,OLE_ERROR_SHOW,
|
|
OLE_ERROR_DOVERB,OLE_ERROR_ADVISE_NATIVE,OLE_ERROR_ADVISE_PICT,OLE_ERROR_ADVISE_RENAME,OLE_ERROR_POKE_NATIVE,OLE_ERROR_REQUEST_NATIVE,
|
|
OLE_ERROR_REQUEST_PICT,OLE_ERROR_SERVER_BLOCKED,OLE_ERROR_REGISTRATION,OLE_ERROR_ALREADY_REGISTERED,OLE_ERROR_TASK,OLE_ERROR_OUTOFDATE,
|
|
OLE_ERROR_CANT_UPDATE_CLIENT,OLE_ERROR_UPDATE,OLE_ERROR_SETDATA_FORMAT,OLE_ERROR_STATIC_FROM_OTHER_OS,OLE_ERROR_FILE_VER,OLE_WARN_DELETE_DATA = 1000
|
|
} OLESTATUS;
|
|
|
|
typedef enum {
|
|
OLE_CHANGED,OLE_SAVED,OLE_CLOSED,OLE_RENAMED,OLE_QUERY_PAINT,OLE_RELEASE,OLE_QUERY_RETRY
|
|
} OLE_NOTIFICATION;
|
|
|
|
typedef enum {
|
|
OLE_NONE,OLE_DELETE,OLE_LNKPASTE,OLE_EMBPASTE,OLE_SHOW,OLE_RUN,OLE_ACTIVATE,OLE_UPDATE,OLE_CLOSE,OLE_RECONNECT,OLE_SETUPDATEOPTIONS,
|
|
OLE_SERVERUNLAUNCH,OLE_LOADFROMSTREAM,OLE_SETDATA,OLE_REQUESTDATA,OLE_OTHER,OLE_CREATE,OLE_CREATEFROMTEMPLATE,OLE_CREATELINKFROMFILE,
|
|
OLE_COPYFROMLNK,OLE_CREATEFROMFILE,OLE_CREATEINVISIBLE
|
|
} OLE_RELEASE_METHOD;
|
|
|
|
typedef enum {
|
|
olerender_none,olerender_draw,olerender_format
|
|
} OLEOPT_RENDER;
|
|
|
|
typedef WORD OLECLIPFORMAT;
|
|
|
|
typedef enum {
|
|
oleupdate_always,oleupdate_onsave,
|
|
#ifdef OLE_INTERNAL
|
|
oleupdate_oncall,oleupdate_onclose
|
|
#else
|
|
oleupdate_oncall
|
|
#endif
|
|
} OLEOPT_UPDATE;
|
|
|
|
typedef HANDLE HOBJECT;
|
|
typedef LONG_PTR LHSERVER;
|
|
typedef LONG_PTR LHCLIENTDOC;
|
|
typedef LONG_PTR LHSERVERDOC;
|
|
#ifndef _LPOLEOBJECT_DEFINED
|
|
#define _LPOLEOBJECT_DEFINED
|
|
typedef struct _OLEOBJECT *LPOLEOBJECT;
|
|
#endif
|
|
typedef struct _OLESTREAM *LPOLESTREAM;
|
|
typedef struct _OLECLIENT *LPOLECLIENT;
|
|
|
|
typedef struct _OLEOBJECTVTBL {
|
|
void *(CALLBACK *QueryProtocol) (LPOLEOBJECT,LPCSTR);
|
|
OLESTATUS (CALLBACK *Release) (LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *Show) (LPOLEOBJECT,WINBOOL);
|
|
OLESTATUS (CALLBACK *DoVerb) (LPOLEOBJECT,UINT,WINBOOL,WINBOOL);
|
|
OLESTATUS (CALLBACK *GetData) (LPOLEOBJECT,OLECLIPFORMAT,HANDLE *);
|
|
OLESTATUS (CALLBACK *SetData) (LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
|
|
OLESTATUS (CALLBACK *SetTargetDevice) (LPOLEOBJECT,HGLOBAL);
|
|
OLESTATUS (CALLBACK *SetBounds) (LPOLEOBJECT,const RECT *);
|
|
OLECLIPFORMAT (CALLBACK *EnumFormats) (LPOLEOBJECT,OLECLIPFORMAT);
|
|
OLESTATUS (CALLBACK *SetColorScheme) (LPOLEOBJECT,const LOGPALETTE *);
|
|
#ifndef SERVERONLY
|
|
OLESTATUS (CALLBACK *Delete) (LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *SetHostNames) (LPOLEOBJECT,LPCSTR,LPCSTR);
|
|
OLESTATUS (CALLBACK *SaveToStream) (LPOLEOBJECT,LPOLESTREAM);
|
|
OLESTATUS (CALLBACK *Clone) (LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS (CALLBACK *CopyFromLink) (LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *CopyToClipboard)(LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC,const RECT *,const RECT *,HDC);
|
|
OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT,WINBOOL,WINBOOL,HWND,const RECT *);
|
|
OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL,UINT);
|
|
OLESTATUS (CALLBACK *Close)(LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *Update)(LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *Reconnect) (LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *ObjectConvert) (LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS (CALLBACK *GetLinkUpdateOptions) (LPOLEOBJECT,OLEOPT_UPDATE *);
|
|
OLESTATUS (CALLBACK *SetLinkUpdateOptions) (LPOLEOBJECT,OLEOPT_UPDATE);
|
|
OLESTATUS (CALLBACK *Rename) (LPOLEOBJECT,LPCSTR);
|
|
OLESTATUS (CALLBACK *QueryName) (LPOLEOBJECT,LPSTR,UINT *);
|
|
OLESTATUS (CALLBACK *QueryType) (LPOLEOBJECT,LONG *);
|
|
OLESTATUS (CALLBACK *QueryBounds) (LPOLEOBJECT,RECT *);
|
|
OLESTATUS (CALLBACK *QuerySize) (LPOLEOBJECT,DWORD *);
|
|
OLESTATUS (CALLBACK *QueryOpen) (LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *QueryOutOfDate) (LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *QueryReleaseStatus) (LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *QueryReleaseError) (LPOLEOBJECT);
|
|
OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT);
|
|
OLESTATUS (CALLBACK *RequestData) (LPOLEOBJECT,OLECLIPFORMAT);
|
|
OLESTATUS (CALLBACK *ObjectLong) (LPOLEOBJECT,UINT,LONG *);
|
|
OLESTATUS (CALLBACK *ChangeData) (LPOLEOBJECT,HANDLE,LPOLECLIENT,WINBOOL);
|
|
#endif
|
|
} OLEOBJECTVTBL;
|
|
|
|
typedef OLEOBJECTVTBL *LPOLEOBJECTVTBL;
|
|
|
|
#ifndef OLE_INTERNAL
|
|
typedef struct _OLEOBJECT {
|
|
LPOLEOBJECTVTBL lpvtbl;
|
|
} OLEOBJECT;
|
|
#endif
|
|
|
|
typedef struct _OLECLIENTVTBL {
|
|
int (CALLBACK *CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
|
|
} OLECLIENTVTBL;
|
|
|
|
typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
|
|
|
|
typedef struct _OLECLIENT {
|
|
LPOLECLIENTVTBL lpvtbl;
|
|
} OLECLIENT;
|
|
|
|
#ifndef _DEFINED_OLESTREAMVRBL
|
|
#define _DEFINED_OLESTREAMVRBL
|
|
typedef struct _OLESTREAMVTBL {
|
|
DWORD (CALLBACK *Get)(LPOLESTREAM,void *,DWORD);
|
|
DWORD (CALLBACK *Put)(LPOLESTREAM,const void *,DWORD);
|
|
} OLESTREAMVTBL;
|
|
typedef OLESTREAMVTBL *LPOLESTREAMVTBL;
|
|
#endif
|
|
|
|
#ifndef _DEFINED_OLESTREAM
|
|
#define _DEFINED_OLESTREAM
|
|
typedef struct _OLESTREAM {
|
|
LPOLESTREAMVTBL lpstbl;
|
|
} OLESTREAM;
|
|
#endif
|
|
|
|
OLESTATUS WINAPI OleDelete(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleRelease(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleSaveToStream(LPOLEOBJECT,LPOLESTREAM);
|
|
OLESTATUS WINAPI OleEqual(LPOLEOBJECT,LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleCopyToClipboard(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT,LPCSTR,LPCSTR);
|
|
OLESTATUS WINAPI OleSetTargetDevice(LPOLEOBJECT,HGLOBAL);
|
|
OLESTATUS WINAPI OleSetBounds(LPOLEOBJECT,const RECT *);
|
|
OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT,const LOGPALETTE *);
|
|
OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT,RECT *);
|
|
OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT,DWORD *);
|
|
OLESTATUS WINAPI OleDraw(LPOLEOBJECT,HDC,const RECT *,const RECT *,HDC);
|
|
OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleActivate(LPOLEOBJECT,UINT,WINBOOL,WINBOOL,HWND,const RECT *);
|
|
OLESTATUS WINAPI OleExecute(LPOLEOBJECT,HGLOBAL,UINT);
|
|
OLESTATUS WINAPI OleClose(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleUpdate(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleReconnect(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleGetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE *);
|
|
OLESTATUS WINAPI OleSetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE);
|
|
void *WINAPI OleQueryProtocol(LPOLEOBJECT,LPCSTR);
|
|
OLESTATUS WINAPI OleQueryReleaseStatus(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleQueryReleaseError(LPOLEOBJECT);
|
|
OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleQueryType(LPOLEOBJECT,LONG *);
|
|
DWORD WINAPI OleQueryClientVersion(void);
|
|
DWORD WINAPI OleQueryServerVersion(void);
|
|
OLECLIPFORMAT WINAPI OleEnumFormats(LPOLEOBJECT,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleGetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE *);
|
|
OLESTATUS WINAPI OleSetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
|
|
OLESTATUS WINAPI OleQueryOutOfDate(LPOLEOBJECT);
|
|
OLESTATUS WINAPI OleRequestData(LPOLEOBJECT,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleQueryLinkFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleQueryCreateFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleCreateFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleCreateLinkFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleCreateFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleCreateLinkFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleLoadFromStream(LPOLESTREAM,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS WINAPI OleCreate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleCreateInvisible(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT,WINBOOL);
|
|
OLESTATUS WINAPI OleCreateFromTemplate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *,OLEOPT_RENDER,OLECLIPFORMAT);
|
|
OLESTATUS WINAPI OleClone(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS WINAPI OleCopyFromLink(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS WINAPI OleObjectConvert(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT *);
|
|
OLESTATUS WINAPI OleRename(LPOLEOBJECT,LPCSTR);
|
|
OLESTATUS WINAPI OleQueryName(LPOLEOBJECT,LPSTR,UINT *);
|
|
OLESTATUS WINAPI OleRevokeObject(LPOLECLIENT);
|
|
WINBOOL WINAPI OleIsDcMeta(HDC);
|
|
OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
|
|
OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
|
|
OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
|
|
OLESTATUS WINAPI OleRevertClientDoc(LHCLIENTDOC);
|
|
OLESTATUS WINAPI OleSavedClientDoc(LHCLIENTDOC);
|
|
OLESTATUS WINAPI OleEnumObjects(LHCLIENTDOC,LPOLEOBJECT *);
|
|
|
|
typedef enum {
|
|
OLE_SERVER_MULTI,OLE_SERVER_SINGLE
|
|
} OLE_SERVER_USE;
|
|
|
|
typedef struct _OLESERVER *LPOLESERVER;
|
|
|
|
OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE,OLE_SERVER_USE);
|
|
OLESTATUS WINAPI OleRevokeServer(LHSERVER);
|
|
OLESTATUS WINAPI OleBlockServer(LHSERVER);
|
|
OLESTATUS WINAPI OleUnblockServer(LHSERVER,WINBOOL *);
|
|
OLESTATUS WINAPI OleLockServer(LPOLEOBJECT,LHSERVER *);
|
|
OLESTATUS WINAPI OleUnlockServer(LHSERVER);
|
|
|
|
typedef struct _OLESERVERDOC *LPOLESERVERDOC;
|
|
|
|
OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
|
|
OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
|
|
OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC,LPCSTR);
|
|
OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC);
|
|
OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC);
|
|
|
|
typedef struct _OLESERVERVTBL {
|
|
OLESTATUS (CALLBACK *Open)(LPOLESERVER,LHSERVERDOC,LPCSTR,LPOLESERVERDOC *);
|
|
OLESTATUS (CALLBACK *Create)(LPOLESERVER,LHSERVERDOC,LPCSTR,LPCSTR,LPOLESERVERDOC *);
|
|
OLESTATUS (CALLBACK *CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,LPCSTR,LPCSTR,LPCSTR,LPOLESERVERDOC *);
|
|
OLESTATUS (CALLBACK *Edit)(LPOLESERVER,LHSERVERDOC,LPCSTR,LPCSTR,LPOLESERVERDOC *);
|
|
OLESTATUS (CALLBACK *Exit)(LPOLESERVER);
|
|
OLESTATUS (CALLBACK *Release)(LPOLESERVER);
|
|
OLESTATUS (CALLBACK *Execute)(LPOLESERVER,HGLOBAL);
|
|
} OLESERVERVTBL;
|
|
|
|
typedef OLESERVERVTBL *LPOLESERVERVTBL;
|
|
|
|
typedef struct _OLESERVER {
|
|
LPOLESERVERVTBL lpvtbl;
|
|
} OLESERVER;
|
|
|
|
typedef struct _OLESERVERDOCVTBL {
|
|
OLESTATUS (CALLBACK *Save)(LPOLESERVERDOC);
|
|
OLESTATUS (CALLBACK *Close)(LPOLESERVERDOC);
|
|
OLESTATUS (CALLBACK *SetHostNames)(LPOLESERVERDOC,LPCSTR,LPCSTR);
|
|
OLESTATUS (CALLBACK *SetDocDimensions)(LPOLESERVERDOC,const RECT *);
|
|
OLESTATUS (CALLBACK *GetObject)(LPOLESERVERDOC,LPCSTR,LPOLEOBJECT *,LPOLECLIENT);
|
|
OLESTATUS (CALLBACK *Release)(LPOLESERVERDOC);
|
|
OLESTATUS (CALLBACK *SetColorScheme)(LPOLESERVERDOC,const LOGPALETTE *);
|
|
OLESTATUS (CALLBACK *Execute)(LPOLESERVERDOC,HGLOBAL);
|
|
} OLESERVERDOCVTBL;
|
|
|
|
typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL;
|
|
|
|
typedef struct _OLESERVERDOC {
|
|
LPOLESERVERDOCVTBL lpvtbl;
|
|
} OLESERVERDOC;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _OLE_H_ */
|