#ifndef _OLE_H #define _OLE_H #if __GNUC__ >=3 #pragma GCC system_header #endif #ifdef __cplusplus extern "C" { #endif #ifdef STRICT #define OLE_LPCSTR LPCSTR #define OLE_CONST const #else #define OLE_LPCSTR LPSTR #define OLE_CONST #endif #define LRESULT LONG #define HGLOBAL HANDLE #define OT_LINK 1L #define OT_EMBEDDED 2L #define OT_STATIC 3L #define OLEVERB_PRIMARY 0 #define OF_SET 1 #define OF_GET 2 #define OF_HANDLER 4 typedef struct _OLETARGETDEVICE { USHORT otdDeviceNameOffset; USHORT otdDriverNameOffset; USHORT otdPortNameOffset; USHORT otdExtDevmodeOffset; USHORT otdExtDevmodeSize; USHORT otdEnvironmentOffset; USHORT otdEnvironmentSize; BYTE otdData[1]; } OLETARGETDEVICE; typedef OLETARGETDEVICE *LPOLETARGETDEVICE; 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 LHSERVER; typedef LONG LHCLIENTDOC; typedef LONG LHSERVERDOC; typedef struct _OLEOBJECT *LPOLEOBJECT; typedef struct _OLESTREAM *LPOLESTREAM; typedef struct _OLECLIENT *LPOLECLIENT; typedef struct _OLEOBJECTVTBL { void *(CALLBACK* QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR); OLESTATUS (CALLBACK* Release)(LPOLEOBJECT); OLESTATUS (CALLBACK* Show)(LPOLEOBJECT,BOOL); OLESTATUS (CALLBACK* DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL); OLESTATUS (CALLBACK* GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*); OLESTATUS (CALLBACK* SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE); OLESTATUS (CALLBACK* SetTargetDevice)(LPOLEOBJECT,HGLOBAL); OLESTATUS (CALLBACK* SetBounds)(LPOLEOBJECT,OLE_CONST RECT*); OLECLIPFORMAT (CALLBACK* EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); OLESTATUS (CALLBACK* SetColorScheme)(LPOLEOBJECT,OLE_CONST LOGPALETTE*); #ifndef SERVERONLY OLESTATUS (CALLBACK* Delete)(LPOLEOBJECT); OLESTATUS (CALLBACK* SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR); OLESTATUS (CALLBACK* SaveToStream)(LPOLEOBJECT,LPOLESTREAM); OLESTATUS (CALLBACK* Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); OLESTATUS (CALLBACK* CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); OLESTATUS (CALLBACK* Equal)(LPOLEOBJECT,LPOLEOBJECT); OLESTATUS (CALLBACK* CopyToClipboard)(LPOLEOBJECT); OLESTATUS (CALLBACK* Draw)(LPOLEOBJECT,HDC,OLE_CONST RECT*,OLE_CONST RECT*,HDC); OLESTATUS (CALLBACK* Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,OLE_CONST RECT*); OLESTATUS (CALLBACK* Execute)(LPOLEOBJECT,HGLOBAL,UINT); OLESTATUS (CALLBACK* Close)(LPOLEOBJECT); OLESTATUS (CALLBACK* Update)(LPOLEOBJECT); OLESTATUS (CALLBACK* Reconnect)(LPOLEOBJECT); OLESTATUS (CALLBACK* ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); OLESTATUS (CALLBACK* GetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE*); OLESTATUS (CALLBACK* SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); OLESTATUS (CALLBACK* Rename)(LPOLEOBJECT,OLE_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,BOOL); #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; typedef struct _OLESTREAMVTBL { DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD); DWORD (CALLBACK* Put)(LPOLESTREAM,OLE_CONST void*,DWORD); } OLESTREAMVTBL; typedef OLESTREAMVTBL *LPOLESTREAMVTBL; typedef struct _OLESTREAM { LPOLESTREAMVTBL lpstbl; } OLESTREAM; typedef enum { OLE_SERVER_MULTI, OLE_SERVER_SINGLE } OLE_SERVER_USE; typedef struct _OLESERVER *LPOLESERVER; typedef struct _OLESERVERDOC *LPOLESERVERDOC; typedef struct _OLESERVERVTBL { OLESTATUS (CALLBACK* Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC*); OLESTATUS (CALLBACK* Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); OLESTATUS (CALLBACK* Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_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,OLE_LPCSTR,OLE_LPCSTR); OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC,OLE_CONST RECT*); OLESTATUS (CALLBACK* GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); OLESTATUS (CALLBACK* Release)(LPOLESERVERDOC); OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC,OLE_CONST LOGPALETTE*); OLESTATUS (CALLBACK* Execute)(LPOLESERVERDOC,HGLOBAL); } OLESERVERDOCVTBL; typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL; typedef struct _OLESERVERDOC { LPOLESERVERDOCVTBL lpvtbl; } OLESERVERDOC; 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,LPCRECT); OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT,const LOGPALETTE*); OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT,RECT*); OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT,DWORD*); OLESTATUS WINAPI OleDraw(LPOLEOBJECT,HDC,LPCRECT,LPCRECT,HDC); OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT); OLESTATUS WINAPI OleActivate(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPCRECT); 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); WINAPI void *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,BOOL); 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); BOOL 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*); OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER*,HINSTANCE,OLE_SERVER_USE); OLESTATUS WINAPI OleRevokeServer(LHSERVER); OLESTATUS WINAPI OleBlockServer(LHSERVER); OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL*); OLESTATUS WINAPI OleLockServer(LPOLEOBJECT,LHSERVER*); OLESTATUS WINAPI OleUnlockServer(LHSERVER); OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC*); OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC); OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC,LPCSTR); OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC); OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC); #ifdef __cplusplus } #endif #endif