1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_ole.d) 9 */ 10 module core.sys.windows.ole; 11 version (Windows): 12 @system: 13 pragma(lib, "ole32"); 14 15 import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; 16 17 alias LPCSTR OLE_LPCSTR; 18 19 /+#define LRESULT LONG 20 #define HGLOBAL HANDLE+/ 21 22 enum { 23 OT_LINK = 1, 24 OT_EMBEDDED, 25 OT_STATIC 26 } 27 28 enum OLEVERB_PRIMARY = 0; 29 enum OF_SET = 1; 30 enum OF_GET = 2; 31 enum OF_HANDLER = 4; 32 33 struct OLETARGETDEVICE { 34 USHORT otdDeviceNameOffset; 35 USHORT otdDriverNameOffset; 36 USHORT otdPortNameOffset; 37 USHORT otdExtDevmodeOffset; 38 USHORT otdExtDevmodeSize; 39 USHORT otdEnvironmentOffset; 40 USHORT otdEnvironmentSize; 41 BYTE _otdData; 42 BYTE* otdData() return { return &_otdData; } 43 } 44 alias OLETARGETDEVICE* LPOLETARGETDEVICE; 45 46 enum OLESTATUS { 47 OLE_OK, 48 OLE_WAIT_FOR_RELEASE, 49 OLE_BUSY, 50 OLE_ERROR_PROTECT_ONLY, 51 OLE_ERROR_MEMORY, 52 OLE_ERROR_STREAM, 53 OLE_ERROR_STATIC, 54 OLE_ERROR_BLANK, 55 OLE_ERROR_DRAW, 56 OLE_ERROR_METAFILE, 57 OLE_ERROR_ABORT, 58 OLE_ERROR_CLIPBOARD, 59 OLE_ERROR_FORMAT, 60 OLE_ERROR_OBJECT, 61 OLE_ERROR_OPTION, 62 OLE_ERROR_PROTOCOL, 63 OLE_ERROR_ADDRESS, 64 OLE_ERROR_NOT_EQUAL, 65 OLE_ERROR_HANDLE, 66 OLE_ERROR_GENERIC, 67 OLE_ERROR_CLASS, 68 OLE_ERROR_SYNTAX, 69 OLE_ERROR_DATATYPE, 70 OLE_ERROR_PALETTE, 71 OLE_ERROR_NOT_LINK, 72 OLE_ERROR_NOT_EMPTY, 73 OLE_ERROR_SIZE, 74 OLE_ERROR_DRIVE, 75 OLE_ERROR_NETWORK, 76 OLE_ERROR_NAME, 77 OLE_ERROR_TEMPLATE, 78 OLE_ERROR_NEW, 79 OLE_ERROR_EDIT, 80 OLE_ERROR_OPEN, 81 OLE_ERROR_NOT_OPEN, 82 OLE_ERROR_LAUNCH, 83 OLE_ERROR_COMM, 84 OLE_ERROR_TERMINATE, 85 OLE_ERROR_COMMAND, 86 OLE_ERROR_SHOW, 87 OLE_ERROR_DOVERB, 88 OLE_ERROR_ADVISE_NATIVE, 89 OLE_ERROR_ADVISE_PICT, 90 OLE_ERROR_ADVISE_RENAME, 91 OLE_ERROR_POKE_NATIVE, 92 OLE_ERROR_REQUEST_NATIVE, 93 OLE_ERROR_REQUEST_PICT, 94 OLE_ERROR_SERVER_BLOCKED, 95 OLE_ERROR_REGISTRATION, 96 OLE_ERROR_ALREADY_REGISTERED, 97 OLE_ERROR_TASK, 98 OLE_ERROR_OUTOFDATE, 99 OLE_ERROR_CANT_UPDATE_CLIENT, 100 OLE_ERROR_UPDATE, 101 OLE_ERROR_SETDATA_FORMAT, 102 OLE_ERROR_STATIC_FROM_OTHER_OS, 103 OLE_ERROR_FILE_VER, 104 OLE_WARN_DELETE_DATA = 1000 105 } 106 107 enum OLE_NOTIFICATION { 108 OLE_CHANGED, 109 OLE_SAVED, 110 OLE_CLOSED, 111 OLE_RENAMED, 112 OLE_QUERY_PAINT, 113 OLE_RELEASE, 114 OLE_QUERY_RETRY 115 } 116 117 enum OLE_RELEASE_METHOD { 118 OLE_NONE, 119 OLE_DELETE, 120 OLE_LNKPASTE, 121 OLE_EMBPASTE, 122 OLE_SHOW, 123 OLE_RUN, 124 OLE_ACTIVATE, 125 OLE_UPDATE, 126 OLE_CLOSE, 127 OLE_RECONNECT, 128 OLE_SETUPDATEOPTIONS, 129 OLE_SERVERUNLAUNCH, 130 OLE_LOADFROMSTREAM, 131 OLE_SETDATA, 132 OLE_REQUESTDATA, 133 OLE_OTHER, 134 OLE_CREATE, 135 OLE_CREATEFROMTEMPLATE, 136 OLE_CREATELINKFROMFILE, 137 OLE_COPYFROMLNK, 138 OLE_CREATEFROMFILE, 139 OLE_CREATEINVISIBLE 140 } 141 142 enum OLEOPT_RENDER { 143 olerender_none, 144 olerender_draw, 145 olerender_format 146 } 147 148 alias WORD OLECLIPFORMAT; 149 150 enum OLEOPT_UPDATE { 151 oleupdate_always, 152 oleupdate_onsave, 153 oleupdate_oncall, 154 // #ifdef OLE_INTERNAL 155 oleupdate_onclose 156 // #endif 157 } 158 159 mixin DECLARE_HANDLE!("HOBJECT"); 160 alias LONG_PTR LHSERVER, LHCLIENTDOC, LHSERVERDOC; 161 162 struct OLEOBJECTVTBL { 163 extern (Windows) { 164 void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; 165 OLESTATUS function(LPOLEOBJECT) Release; 166 OLESTATUS function(LPOLEOBJECT, BOOL) Show; 167 OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; 168 OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; 169 OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; 170 OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; 171 OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; 172 OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; 173 OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; 174 //#ifndef SERVERONLY 175 OLESTATUS function(LPOLEOBJECT) Delete; 176 OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; 177 OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; 178 OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, 179 LPOLEOBJECT*) Clone; 180 OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, 181 LPOLEOBJECT*) CopyFromLink; 182 OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; 183 OLESTATUS function(LPOLEOBJECT) CopyToClipboard; 184 OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; 185 OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) 186 Activate; 187 OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; 188 OLESTATUS function(LPOLEOBJECT) Close; 189 OLESTATUS function(LPOLEOBJECT) Update; 190 OLESTATUS function(LPOLEOBJECT) Reconnect; 191 OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, 192 OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; 193 OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; 194 OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; 195 OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; 196 OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; 197 OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; 198 OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; 199 OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; 200 OLESTATUS function(LPOLEOBJECT) QueryOpen; 201 OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; 202 OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; 203 OLESTATUS function(LPOLEOBJECT) QueryReleaseError; 204 OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; 205 OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; 206 OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; 207 OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; 208 //#endif 209 } 210 } 211 alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; 212 213 //#ifndef OLE_INTERNAL 214 struct OLEOBJECT { 215 LPOLEOBJECTVTBL lpvtbl; 216 } 217 alias OLEOBJECT* LPOLEOBJECT; 218 //#endif 219 220 struct OLECLIENTVTBL { 221 extern (Windows) int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; 222 } 223 alias OLECLIENTVTBL* LPOLECLIENTVTBL; 224 225 struct OLECLIENT { 226 LPOLECLIENTVTBL lpvtbl; 227 } 228 alias OLECLIENT* LPOLECLIENT; 229 230 struct OLESTREAMVTBL { 231 extern (Windows): 232 DWORD function(LPOLESTREAM, void*, DWORD) Get; 233 DWORD function(LPOLESTREAM, void*, DWORD) Put; 234 } 235 alias OLESTREAMVTBL* LPOLESTREAMVTBL; 236 237 struct OLESTREAM { 238 LPOLESTREAMVTBL lpstbl; 239 } 240 alias OLESTREAM* LPOLESTREAM; 241 242 enum OLE_SERVER_USE { 243 OLE_SERVER_MULTI, 244 OLE_SERVER_SINGLE 245 } 246 247 struct OLESERVERVTBL { 248 extern (Windows): 249 OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) 250 Open; 251 OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, 252 LPOLESERVERDOC*) Create; 253 OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, 254 OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; 255 OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, 256 LPOLESERVERDOC*) Edit; 257 OLESTATUS function(LPOLESERVER) Exit; 258 OLESTATUS function(LPOLESERVER) Release; 259 OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; 260 } 261 alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; 262 263 struct OLESERVER { 264 LPOLESERVERVTBL lpvtbl; 265 } 266 alias OLESERVER* LPOLESERVER; 267 268 struct OLESERVERDOCVTBL { 269 extern (Windows): 270 OLESTATUS function(LPOLESERVERDOC) Save; 271 OLESTATUS function(LPOLESERVERDOC) Close; 272 OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; 273 OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; 274 OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) 275 GetObject; 276 OLESTATUS function(LPOLESERVERDOC) Release; 277 OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; 278 OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; 279 } 280 alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; 281 282 struct OLESERVERDOC { 283 LPOLESERVERDOCVTBL lpvtbl; 284 } 285 alias OLESERVERDOC* LPOLESERVERDOC; 286 287 extern (Windows) { 288 OLESTATUS OleDelete(LPOLEOBJECT); 289 OLESTATUS OleRelease(LPOLEOBJECT); 290 OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); 291 OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); 292 OLESTATUS OleCopyToClipboard(LPOLEOBJECT); 293 OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); 294 OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); 295 OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); 296 OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); 297 OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); 298 OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); 299 OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); 300 OLESTATUS OleQueryOpen(LPOLEOBJECT); 301 OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); 302 OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); 303 OLESTATUS OleClose(LPOLEOBJECT); 304 OLESTATUS OleUpdate(LPOLEOBJECT); 305 OLESTATUS OleReconnect(LPOLEOBJECT); 306 OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); 307 OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); 308 void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); 309 OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); 310 OLESTATUS OleQueryReleaseError(LPOLEOBJECT); 311 OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); 312 OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); 313 DWORD OleQueryClientVersion(); 314 DWORD OleQueryServerVersion(); 315 OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); 316 OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); 317 OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); 318 OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); 319 OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); 320 OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); 321 OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); 322 OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, 323 LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); 324 OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, 325 LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); 326 OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, 327 LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); 328 OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, 329 LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); 330 OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, 331 LPCSTR, LPOLEOBJECT*); 332 OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, 333 LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); 334 OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, 335 LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); 336 OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, 337 LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); 338 OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, 339 LPOLEOBJECT*); 340 OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, 341 LPCSTR, LPOLEOBJECT*); 342 OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, 343 LPCSTR, LPOLEOBJECT*); 344 OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); 345 OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); 346 OLESTATUS OleRevokeObject(LPOLECLIENT); 347 BOOL OleIsDcMeta(HDC); 348 OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); 349 OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); 350 OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); 351 OLESTATUS OleRevertClientDoc(LHCLIENTDOC); 352 OLESTATUS OleSavedClientDoc(LHCLIENTDOC); 353 OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); 354 OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, 355 OLE_SERVER_USE); 356 OLESTATUS OleRevokeServer(LHSERVER); 357 OLESTATUS OleBlockServer(LHSERVER); 358 OLESTATUS OleUnblockServer(LHSERVER, BOOL*); 359 OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); 360 OLESTATUS OleUnlockServer(LHSERVER); 361 OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, 362 LHSERVERDOC*); 363 OLESTATUS OleRevokeServerDoc(LHSERVERDOC); 364 OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); 365 OLESTATUS OleRevertServerDoc(LHSERVERDOC); 366 OLESTATUS OleSavedServerDoc(LHSERVERDOC); 367 } 368