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/_ddeml.d) 9 */ 10 /// Automatically imported and edited from the druntime module 11 /// core.sys.windows.ddeml for the auto-generated win32 package. 12 module win32.ddeml; 13 //version (Windows): 14 @system: 15 16 version (ANSI) {} else version = Unicode; 17 version (Win32_UseLib) pragma(lib, "user32"); 18 19 import win32.basetsd, win32.windef, win32.winnt; 20 21 mixin DECLARE_HANDLE!("HCONVLIST"); 22 mixin DECLARE_HANDLE!("HCONV"); 23 mixin DECLARE_HANDLE!("HSZ"); 24 mixin DECLARE_HANDLE!("HDDEDATA"); 25 26 enum : int { 27 CP_WINANSI = 1004, 28 CP_WINUNICODE = 1200 29 } 30 31 enum : UINT { 32 XTYPF_NOBLOCK = 2, 33 XTYPF_NODATA = 4, 34 XTYPF_ACKREQ = 8 35 } 36 37 enum : UINT { 38 XCLASS_MASK = 0xFC00, 39 XCLASS_BOOL = 0x1000, 40 XCLASS_DATA = 0x2000, 41 XCLASS_FLAGS = 0x4000, 42 XCLASS_NOTIFICATION = 0x8000 43 } 44 45 enum : UINT { 46 XST_NULL, 47 XST_INCOMPLETE, 48 XST_CONNECTED, 49 XST_INIT1, 50 XST_INIT2, 51 XST_REQSENT, 52 XST_DATARCVD, 53 XST_POKESENT, 54 XST_POKEACKRCVD, 55 XST_EXECSENT, 56 XST_EXECACKRCVD, 57 XST_ADVSENT, 58 XST_UNADVSENT, 59 XST_ADVACKRCVD, 60 XST_UNADVACKRCVD, 61 XST_ADVDATASENT, 62 XST_ADVDATAACKRCVD // = 16 63 } 64 65 enum : UINT { 66 XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, 67 XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, 68 XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, 69 XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, 70 XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, 71 XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, 72 XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, 73 XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, 74 XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, 75 XTYP_POKE = 0x0090 | XCLASS_FLAGS, 76 XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, 77 XTYP_REQUEST = 0x00B0 | XCLASS_DATA, 78 XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, 79 XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, 80 XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, 81 XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, 82 XTYP_MASK = 0x00F0, 83 XTYP_SHIFT = 4 84 } 85 86 enum : UINT { 87 TIMEOUT_ASYNC = 0xFFFFFFFF 88 } 89 90 enum : UINT { 91 QID_SYNC = 0xFFFFFFFF 92 } 93 94 enum : UINT { 95 ST_CONNECTED = 1, 96 ST_ADVISE = 2, 97 ST_ISLOCAL = 4, 98 ST_BLOCKED = 8, 99 ST_CLIENT = 16, 100 ST_TERMINATED = 32, 101 ST_INLIST = 64, 102 ST_BLOCKNEXT = 128, 103 ST_ISSELF = 256 104 } 105 106 enum : UINT { 107 CADV_LATEACK = 0xFFFF 108 } 109 110 enum : UINT { 111 DMLERR_NO_ERROR = 0, 112 DMLERR_FIRST = 0x4000, 113 DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, 114 DMLERR_BUSY, 115 DMLERR_DATAACKTIMEOUT, 116 DMLERR_DLL_NOT_INITIALIZED, 117 DMLERR_DLL_USAGE, 118 DMLERR_EXECACKTIMEOUT, 119 DMLERR_INVALIDPARAMETER, 120 DMLERR_LOW_MEMORY, 121 DMLERR_MEMORY_ERROR, 122 DMLERR_NOTPROCESSED, 123 DMLERR_NO_CONV_ESTABLISHED, 124 DMLERR_POKEACKTIMEOUT, 125 DMLERR_POSTMSG_FAILED, 126 DMLERR_REENTRANCY, 127 DMLERR_SERVER_DIED, 128 DMLERR_SYS_ERROR, 129 DMLERR_UNADVACKTIMEOUT, 130 DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 131 DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID 132 } 133 134 enum : UINT { 135 DDE_FACK = 0x8000, 136 DDE_FBUSY = 0x4000, 137 DDE_FDEFERUPD = 0x4000, 138 DDE_FACKREQ = 0x8000, 139 DDE_FRELEASE = 0x2000, 140 DDE_FREQUESTED = 0x1000, 141 DDE_FAPPSTATUS = 0x00ff, 142 DDE_FNOTPROCESSED = 0, 143 DDE_FACKRESERVED = (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)), 144 DDE_FADVRESERVED = (~(DDE_FACKREQ|DDE_FDEFERUPD)), 145 DDE_FDATRESERVED = (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)), 146 DDE_FPOKRESERVED = (~DDE_FRELEASE) 147 } 148 149 enum : UINT { 150 MSGF_DDEMGR = 0x8001 151 } 152 153 enum CBR_BLOCK = cast(HDDEDATA)-1; 154 155 enum DWORD 156 APPCLASS_STANDARD = 0, 157 APPCLASS_MONITOR = 0x00000001, 158 APPCLASS_MASK = 0x0000000F, 159 APPCMD_CLIENTONLY = 0x00000010, 160 APPCMD_FILTERINITS = 0x00000020, 161 APPCMD_MASK = 0x00000FF0, 162 CBF_FAIL_SELFCONNECTIONS = 0x00001000, 163 CBF_FAIL_CONNECTIONS = 0x00002000, 164 CBF_FAIL_ADVISES = 0x00004000, 165 CBF_FAIL_EXECUTES = 0x00008000, 166 CBF_FAIL_POKES = 0x00010000, 167 CBF_FAIL_REQUESTS = 0x00020000, 168 CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, 169 CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, 170 CBF_SKIP_REGISTRATIONS = 0x00080000, 171 CBF_SKIP_UNREGISTRATIONS = 0x00100000, 172 CBF_SKIP_DISCONNECTS = 0x00200000, 173 CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, 174 MF_HSZ_INFO = 0x01000000, 175 MF_SENDMSGS = 0x02000000, 176 MF_POSTMSGS = 0x04000000, 177 MF_CALLBACKS = 0x08000000, 178 MF_ERRORS = 0x10000000, 179 MF_LINKS = 0x20000000, 180 MF_CONV = 0x40000000, 181 MF_MASK = 0xFF000000; 182 183 enum : UINT { 184 EC_ENABLEALL = 0, 185 EC_ENABLEONE = ST_BLOCKNEXT, 186 EC_DISABLE = ST_BLOCKED, 187 EC_QUERYWAITING = 2 188 } 189 190 enum : UINT { 191 DNS_REGISTER = 1, 192 DNS_UNREGISTER = 2, 193 DNS_FILTERON = 4, 194 DNS_FILTEROFF = 8 195 } 196 197 enum : UINT { 198 HDATA_APPOWNED = 1 199 } 200 201 enum : UINT { 202 MAX_MONITORS = 4 203 } 204 205 enum : int { 206 MH_CREATE = 1, 207 MH_KEEP = 2, 208 MH_DELETE = 3, 209 MH_CLEANUP = 4 210 } 211 212 extern (Windows) alias HDDEDATA 213 function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, ULONG_PTR, ULONG_PTR) PFNCALLBACK; 214 215 struct HSZPAIR { 216 HSZ hszSvc; 217 HSZ hszTopic; 218 } 219 alias HSZPAIR* PHSZPAIR; 220 221 struct CONVCONTEXT { 222 UINT cb = CONVCONTEXT.sizeof; 223 UINT wFlags; 224 UINT wCountryID; 225 int iCodePage; 226 DWORD dwLangID; 227 DWORD dwSecurity; 228 SECURITY_QUALITY_OF_SERVICE qos; 229 } 230 alias CONVCONTEXT* PCONVCONTEXT; 231 232 struct CONVINFO { 233 DWORD cb = CONVINFO.sizeof; 234 DWORD_PTR hUser; 235 HCONV hConvPartner; 236 HSZ hszSvcPartner; 237 HSZ hszServiceReq; 238 HSZ hszTopic; 239 HSZ hszItem; 240 UINT wFmt; 241 UINT wType; 242 UINT wStatus; 243 UINT wConvst; 244 UINT wLastError; 245 HCONVLIST hConvList; 246 CONVCONTEXT ConvCtxt; 247 HWND hwnd; 248 HWND hwndPartner; 249 } 250 alias CONVINFO* PCONVINFO; 251 252 struct DDEML_MSG_HOOK_DATA { 253 UINT_PTR uiLo; 254 UINT_PTR uiHi; 255 DWORD cbData; 256 DWORD[8] Data; 257 } 258 259 struct MONHSZSTRUCT { 260 UINT cb = MONHSZSTRUCT.sizeof; 261 int fsAction; 262 DWORD dwTime; 263 HSZ hsz; 264 HANDLE hTask; 265 TCHAR[1] _str = 0; 266 267 TCHAR* str() return { return _str.ptr; } 268 } 269 alias MONHSZSTRUCT* PMONHSZSTRUCT; 270 271 struct MONLINKSTRUCT { 272 UINT cb = MONLINKSTRUCT.sizeof; 273 DWORD dwTime; 274 HANDLE hTask; 275 BOOL fEstablished; 276 BOOL fNoData; 277 HSZ hszSvc; 278 HSZ hszTopic; 279 HSZ hszItem; 280 UINT wFmt; 281 BOOL fServer; 282 HCONV hConvServer; 283 HCONV hConvClient; 284 } 285 alias MONLINKSTRUCT* PMONLINKSTRUCT; 286 287 struct MONCONVSTRUCT { 288 UINT cb = MONCONVSTRUCT.sizeof; 289 BOOL fConnect; 290 DWORD dwTime; 291 HANDLE hTask; 292 HSZ hszSvc; 293 HSZ hszTopic; 294 HCONV hConvClient; 295 HCONV hConvServer; 296 } 297 alias MONCONVSTRUCT* PMONCONVSTRUCT; 298 299 struct MONCBSTRUCT { 300 UINT cb = MONCBSTRUCT.sizeof; 301 DWORD dwTime; 302 HANDLE hTask; 303 DWORD dwRet; 304 UINT wType; 305 UINT wFmt; 306 HCONV hConv; 307 HSZ hsz1; 308 HSZ hsz2; 309 HDDEDATA hData; 310 ULONG_PTR dwData1; 311 ULONG_PTR dwData2; 312 CONVCONTEXT cc; 313 DWORD cbData; 314 DWORD[8] Data; 315 } 316 alias MONCBSTRUCT* PMONCBSTRUCT; 317 318 struct MONERRSTRUCT { 319 UINT cb = MONERRSTRUCT.sizeof; 320 UINT wLastError; 321 DWORD dwTime; 322 HANDLE hTask; 323 } 324 alias MONERRSTRUCT* PMONERRSTRUCT; 325 326 struct MONMSGSTRUCT { 327 UINT cb = MONMSGSTRUCT.sizeof; 328 HWND hwndTo; 329 DWORD dwTime; 330 HANDLE hTask; 331 UINT wMsg; 332 WPARAM wParam; 333 LPARAM lParam; 334 DDEML_MSG_HOOK_DATA dmhd; 335 } 336 alias MONMSGSTRUCT* PMONMSGSTRUCT; 337 338 extern (Windows) { 339 BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); 340 PBYTE DdeAccessData(HDDEDATA, PDWORD); 341 HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); 342 HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, 343 DWORD, PDWORD); 344 int DdeCmpStringHandles(HSZ, HSZ); 345 HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); 346 HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); 347 HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, 348 UINT); 349 HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); 350 HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); 351 BOOL DdeDisconnect(HCONV); 352 BOOL DdeDisconnectList(HCONVLIST); 353 BOOL DdeEnableCallback(DWORD, HCONV, UINT); 354 BOOL DdeFreeDataHandle(HDDEDATA); 355 BOOL DdeFreeStringHandle(DWORD, HSZ); 356 DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); 357 UINT DdeGetLastError(DWORD); 358 BOOL DdeImpersonateClient(HCONV); 359 UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); 360 UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); 361 BOOL DdeKeepStringHandle(DWORD, HSZ); 362 HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); 363 BOOL DdePostAdvise(DWORD, HSZ, HSZ); 364 UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); 365 HCONV DdeQueryNextServer(HCONVLIST, HCONV); 366 DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); 367 DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); 368 HCONV DdeReconnect(HCONV); 369 BOOL DdeSetUserHandle(HCONV, DWORD, DWORD_PTR); 370 BOOL DdeUnaccessData(HDDEDATA); 371 BOOL DdeUninitialize(DWORD); 372 } 373 374 const TCHAR[] 375 SZDDESYS_TOPIC = "System", 376 SZDDESYS_ITEM_TOPICS = "Topics", 377 SZDDESYS_ITEM_SYSITEMS = "SysItems", 378 SZDDESYS_ITEM_RTNMSG = "ReturnMessage", 379 SZDDESYS_ITEM_STATUS = "Status", 380 SZDDESYS_ITEM_FORMATS = "Formats", 381 SZDDESYS_ITEM_HELP = "Help", 382 SZDDE_ITEM_ITEMLIST = "TopicItemList"; 383 384 version (Unicode) { 385 alias DdeCreateStringHandleW DdeCreateStringHandle; 386 alias DdeInitializeW DdeInitialize; 387 alias DdeQueryStringW DdeQueryString; 388 } else { 389 alias DdeCreateStringHandleA DdeCreateStringHandle; 390 alias DdeInitializeA DdeInitialize; 391 alias DdeQueryStringA DdeQueryString; 392 }