Differences From Artifact [cc5f44d13c1d8af5]:
- File
src/win32/ddeml.d
- 2011-02-23 12:53:16 - part of checkin [c2b7a98c21] on branch trunk - Initial import (user: kinaba) [annotate]
To Artifact [80302d7833fbc86f]:
- File
src/win32/ddeml.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
1 +/***********************************************************************\
2 +* ddeml.d *
3 +* *
4 +* Windows API header module *
5 +* *
6 +* Translated from MinGW Windows headers *
7 +* by Stewart Gordon *
8 +* *
9 +* Placed into public domain *
10 +\***********************************************************************/
1 11 module win32.ddeml;
2 -
3 -// Translated from Microsoft Platform SDK August 2001 Edition
4 -// by Y.Tomino
5 -
6 -import win32.windef;
7 -
8 -// #ifndef _INC_DDEMLH
9 -// #define _INC_DDEMLH
10 -
11 -// #ifdef __cplusplus
12 -// extern "C" {
13 -// #endif /* __cplusplus */
14 -
15 -alias void* HCONVLIST;
16 -alias void* HCONV;
17 -alias void* HSZ;
18 -alias void* HDDEDATA;
19 -// #define EXPENTRY CALLBACK
20 -
21 -struct tagHSZPAIR {
22 - HSZ hszSvc;
23 - HSZ hszTopic;
24 -}
25 -alias tagHSZPAIR HSZPAIR;
26 -
12 +pragma(lib, "user32.lib");
13 +
14 +private import win32.basetsd, win32.windef, win32.winnt;
15 +
16 +enum : int {
17 + CP_WINANSI = 1004,
18 + CP_WINUNICODE = 1200
19 +}
20 +
21 +enum : UINT {
22 + XTYPF_NOBLOCK = 2,
23 + XTYPF_NODATA = 4,
24 + XTYPF_ACKREQ = 8
25 +}
26 +
27 +enum : UINT {
28 + XCLASS_MASK = 0xFC00,
29 + XCLASS_BOOL = 0x1000,
30 + XCLASS_DATA = 0x2000,
31 + XCLASS_FLAGS = 0x4000,
32 + XCLASS_NOTIFICATION = 0x8000
33 +}
34 +
35 +enum : UINT {
36 + XST_NULL,
37 + XST_INCOMPLETE,
38 + XST_CONNECTED,
39 + XST_INIT1,
40 + XST_INIT2,
41 + XST_REQSENT,
42 + XST_DATARCVD,
43 + XST_POKESENT,
44 + XST_POKEACKRCVD,
45 + XST_EXECSENT,
46 + XST_EXECACKRCVD,
47 + XST_ADVSENT,
48 + XST_UNADVSENT,
49 + XST_ADVACKRCVD,
50 + XST_UNADVACKRCVD,
51 + XST_ADVDATASENT,
52 + XST_ADVDATAACKRCVD // = 16
53 +}
54 +
55 +enum : UINT {
56 + XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
57 + XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS,
58 + XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK,
59 + XTYP_ADVSTART = 0x0030 | XCLASS_BOOL,
60 + XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION,
61 + XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS,
62 + XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK,
63 + XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
64 + XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION,
65 + XTYP_POKE = 0x0090 | XCLASS_FLAGS,
66 + XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
67 + XTYP_REQUEST = 0x00B0 | XCLASS_DATA,
68 + XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
69 + XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
70 + XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK,
71 + XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
72 + XTYP_MASK = 0x00F0,
73 + XTYP_SHIFT = 4
74 +}
75 +
76 +/+
77 +#define TIMEOUT_ASYNC 0xFFFFFFFF
78 +#define QID_SYNC 0xFFFFFFFF
79 ++/
80 +
81 +enum : UINT {
82 + ST_CONNECTED = 1,
83 + ST_ADVISE = 2,
84 + ST_ISLOCAL = 4,
85 + ST_BLOCKED = 8,
86 + ST_CLIENT = 16,
87 + ST_TERMINATED = 32,
88 + ST_INLIST = 64,
89 + ST_BLOCKNEXT = 128,
90 + ST_ISSELF = 256
91 +}
92 +
93 +/+
94 +#define CADV_LATEACK 0xFFFF
95 ++/
96 +
97 +enum : UINT {
98 + DMLERR_NO_ERROR = 0,
99 + DMLERR_FIRST = 0x4000,
100 + DMLERR_ADVACKTIMEOUT = DMLERR_FIRST,
101 + DMLERR_BUSY,
102 + DMLERR_DATAACKTIMEOUT,
103 + DMLERR_DLL_NOT_INITIALIZED,
104 + DMLERR_DLL_USAGE,
105 + DMLERR_EXECACKTIMEOUT,
106 + DMLERR_INVALIDPARAMETER,
107 + DMLERR_LOW_MEMORY,
108 + DMLERR_MEMORY_ERROR,
109 + DMLERR_NOTPROCESSED,
110 + DMLERR_NO_CONV_ESTABLISHED,
111 + DMLERR_POKEACKTIMEOUT,
112 + DMLERR_POSTMSG_FAILED,
113 + DMLERR_REENTRANCY,
114 + DMLERR_SERVER_DIED,
115 + DMLERR_SYS_ERROR,
116 + DMLERR_UNADVACKTIMEOUT,
117 + DMLERR_UNFOUND_QUEUE_ID, // = 0x4011
118 + DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID
119 +}
120 +
121 +/+
122 +#define DDE_FACK 0x8000
123 +#define DDE_FBUSY 0x4000
124 +#define DDE_FDEFERUPD 0x4000
125 +#define DDE_FACKREQ 0x8000
126 +#define DDE_FRELEASE 0x2000
127 +#define DDE_FREQUESTED 0x1000
128 +#define DDE_FAPPSTATUS 0x00ff
129 +#define DDE_FNOTPROCESSED 0
130 +#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS))
131 +#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD))
132 +#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED))
133 +#define DDE_FPOKRESERVED (~DDE_FRELEASE)
134 +#define MSGF_DDEMGR 0x8001
135 +#define CBR_BLOCK ((HDDEDATA)0xffffffff)
136 ++/
137 +
138 +const DWORD
139 + APPCLASS_STANDARD = 0,
140 + APPCLASS_MONITOR = 0x00000001,
141 + APPCLASS_MASK = 0x0000000F,
142 + APPCMD_CLIENTONLY = 0x00000010,
143 + APPCMD_FILTERINITS = 0x00000020,
144 + APPCMD_MASK = 0x00000FF0,
145 + CBF_FAIL_SELFCONNECTIONS = 0x00001000,
146 + CBF_FAIL_CONNECTIONS = 0x00002000,
147 + CBF_FAIL_ADVISES = 0x00004000,
148 + CBF_FAIL_EXECUTES = 0x00008000,
149 + CBF_FAIL_POKES = 0x00010000,
150 + CBF_FAIL_REQUESTS = 0x00020000,
151 + CBF_FAIL_ALLSVRXACTIONS = 0x0003f000,
152 + CBF_SKIP_CONNECT_CONFIRMS = 0x00040000,
153 + CBF_SKIP_REGISTRATIONS = 0x00080000,
154 + CBF_SKIP_UNREGISTRATIONS = 0x00100000,
155 + CBF_SKIP_DISCONNECTS = 0x00200000,
156 + CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000,
157 + MF_HSZ_INFO = 0x01000000,
158 + MF_SENDMSGS = 0x02000000,
159 + MF_POSTMSGS = 0x04000000,
160 + MF_CALLBACKS = 0x08000000,
161 + MF_ERRORS = 0x10000000,
162 + MF_LINKS = 0x20000000,
163 + MF_CONV = 0x40000000,
164 + MF_MASK = 0xFF000000;
165 +
166 +enum : UINT {
167 + EC_ENABLEALL = 0,
168 + EC_ENABLEONE = ST_BLOCKNEXT,
169 + EC_DISABLE = ST_BLOCKED,
170 + EC_QUERYWAITING = 2
171 +}
172 +
173 +enum : UINT {
174 + DNS_REGISTER = 1,
175 + DNS_UNREGISTER = 2,
176 + DNS_FILTERON = 4,
177 + DNS_FILTEROFF = 8
178 +}
179 +
180 +/+
181 +#define HDATA_APPOWNED 1
182 +#define MAX_MONITORS 4
183 ++/
184 +
185 +enum : int {
186 + MH_CREATE = 1,
187 + MH_KEEP = 2,
188 + MH_DELETE = 3,
189 + MH_CLEANUP = 4
190 +}
191 +
192 +alias HANDLE HCONVLIST, HCONV, HSZ, HDDEDATA;
193 +
194 +extern (Windows) alias HDDEDATA
195 + function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK;
196 +
197 +struct HSZPAIR {
198 + HSZ hszSvc;
199 + HSZ hszTopic;
200 +}
27 201 alias HSZPAIR* PHSZPAIR;
28 202
29 -struct tagCONVCONTEXT {
30 - UINT cb;
31 - UINT wFlags;
32 - UINT wCountryID;
33 - int iCodePage;
34 - DWORD dwLangID;
35 - DWORD dwSecurity;
36 - SECURITY_QUALITY_OF_SERVICE qos;
203 +struct CONVCONTEXT {
204 + UINT cb = CONVCONTEXT.sizeof;
205 + UINT wFlags;
206 + UINT wCountryID;
207 + int iCodePage;
208 + DWORD dwLangID;
209 + DWORD dwSecurity;
210 + SECURITY_QUALITY_OF_SERVICE qos;
37 211 }
38 -alias tagCONVCONTEXT CONVCONTEXT;
39 -
40 212 alias CONVCONTEXT* PCONVCONTEXT;
41 213
42 -struct tagCONVINFO {
43 - DWORD cb;
44 - DWORD_PTR hUser;
45 - HCONV hConvPartner;
46 - HSZ hszSvcPartner;
47 - HSZ hszServiceReq;
48 - HSZ hszTopic;
49 - HSZ hszItem;
50 - UINT wFmt;
51 - UINT wType;
52 - UINT wStatus;
53 - UINT wConvst;
54 - UINT wLastError;
55 - HCONVLIST hConvList;
56 - CONVCONTEXT ConvCtxt;
57 - HWND hwnd;
58 - HWND hwndPartner;
214 +struct CONVINFO {
215 + DWORD cb = CONVINFO.sizeof;
216 + DWORD hUser;
217 + HCONV hConvPartner;
218 + HSZ hszSvcPartner;
219 + HSZ hszServiceReq;
220 + HSZ hszTopic;
221 + HSZ hszItem;
222 + UINT wFmt;
223 + UINT wType;
224 + UINT wStatus;
225 + UINT wConvst;
226 + UINT wLastError;
227 + HCONVLIST hConvList;
228 + CONVCONTEXT ConvCtxt;
229 + HWND hwnd;
230 + HWND hwndPartner;
59 231 }
60 -alias tagCONVINFO CONVINFO;
61 -
62 232 alias CONVINFO* PCONVINFO;
63 233
64 -enum : uint { XST_NULL = 0 }
65 -enum : uint { XST_INCOMPLETE = 1 }
66 -enum : uint { XST_CONNECTED = 2 }
67 -enum : uint { XST_INIT1 = 3 }
68 -enum : uint { XST_INIT2 = 4 }
69 -enum : uint { XST_REQSENT = 5 }
70 -enum : uint { XST_DATARCVD = 6 }
71 -enum : uint { XST_POKESENT = 7 }
72 -enum : uint { XST_POKEACKRCVD = 8 }
73 -enum : uint { XST_EXECSENT = 9 }
74 -enum : uint { XST_EXECACKRCVD = 10 }
75 -enum : uint { XST_ADVSENT = 11 }
76 -enum : uint { XST_UNADVSENT = 12 }
77 -enum : uint { XST_ADVACKRCVD = 13 }
78 -enum : uint { XST_UNADVACKRCVD = 14 }
79 -enum : uint { XST_ADVDATASENT = 15 }
80 -enum : uint { XST_ADVDATAACKRCVD = 16 }
234 +struct DDEML_MSG_HOOK_DATA {
235 + UINT uiLo;
236 + UINT uiHi;
237 + DWORD cbData;
238 + DWORD[8] Data;
239 +}
240 +
241 +struct MONHSZSTRUCT {
242 + UINT cb = MONHSZSTRUCT.sizeof;
243 + int fsAction;
244 + DWORD dwTime;
245 + HSZ hsz;
246 + HANDLE hTask;
247 + TCHAR[1] _str;
248 +
249 + TCHAR* str() { return _str.ptr; }
250 +}
251 +alias MONHSZSTRUCT* PMONHSZSTRUCT;
81 252
82 -enum : uint { CADV_LATEACK = 0xFFFF }
253 +struct MONLINKSTRUCT {
254 + UINT cb = MONLINKSTRUCT.sizeof;
255 + DWORD dwTime;
256 + HANDLE hTask;
257 + BOOL fEstablished;
258 + BOOL fNoData;
259 + HSZ hszSvc;
260 + HSZ hszTopic;
261 + HSZ hszItem;
262 + UINT wFmt;
263 + BOOL fServer;
264 + HCONV hConvServer;
265 + HCONV hConvClient;
266 +}
267 +alias MONLINKSTRUCT* PMONLINKSTRUCT;
83 268
84 -enum : uint { ST_CONNECTED = 0x0001 }
85 -enum : uint { ST_ADVISE = 0x0002 }
86 -enum : uint { ST_ISLOCAL = 0x0004 }
87 -enum : uint { ST_BLOCKED = 0x0008 }
88 -enum : uint { ST_CLIENT = 0x0010 }
89 -enum : uint { ST_TERMINATED = 0x0020 }
90 -enum : uint { ST_INLIST = 0x0040 }
91 -enum : uint { ST_BLOCKNEXT = 0x0080 }
92 -enum : uint { ST_ISSELF = 0x0100 }
93 -
94 -enum : uint { DDE_FACK = 0x8000 }
95 -enum : uint { DDE_FBUSY = 0x4000 }
96 -enum : uint { DDE_FDEFERUPD = 0x4000 }
97 -enum : uint { DDE_FACKREQ = 0x8000 }
98 -enum : uint { DDE_FRELEASE = 0x2000 }
99 -enum : uint { DDE_FREQUESTED = 0x1000 }
100 -enum : uint { DDE_FAPPSTATUS = 0x00ff }
101 -enum : uint { DDE_FNOTPROCESSED = 0x0000 }
269 +struct MONCONVSTRUCT {
270 + UINT cb = MONCONVSTRUCT.sizeof;
271 + BOOL fConnect;
272 + DWORD dwTime;
273 + HANDLE hTask;
274 + HSZ hszSvc;
275 + HSZ hszTopic;
276 + HCONV hConvClient;
277 + HCONV hConvServer;
278 +}
279 +alias MONCONVSTRUCT* PMONCONVSTRUCT;
102 280
103 -const uint DDE_FACKRESERVED = ~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS);
104 -const uint DDE_FADVRESERVED = ~(DDE_FACKREQ | DDE_FDEFERUPD);
105 -const uint DDE_FDATRESERVED = ~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED);
106 -const uint DDE_FPOKRESERVED = ~(DDE_FRELEASE);
107 -
108 -enum : uint { MSGF_DDEMGR = 0x8001 }
109 -
110 -enum : uint { CP_WINANSI = 1004 }
111 -enum : uint { CP_WINUNICODE = 1200 }
112 -// #ifdef UNICODE
113 -alias CP_WINUNICODE CP_WINNEUTRAL;
114 -// #else // !UNICODE
115 -// #...
116 -// #endif // !UNICODE
117 -
118 -enum : uint { XTYPF_NOBLOCK = 0x0002 }
119 -enum : uint { XTYPF_NODATA = 0x0004 }
120 -enum : uint { XTYPF_ACKREQ = 0x0008 }
121 -
122 -enum : uint { XCLASS_MASK = 0xFC00 }
123 -enum : uint { XCLASS_BOOL = 0x1000 }
124 -enum : uint { XCLASS_DATA = 0x2000 }
125 -enum : uint { XCLASS_FLAGS = 0x4000 }
126 -enum : uint { XCLASS_NOTIFICATION = 0x8000 }
281 +struct MONCBSTRUCT {
282 + UINT cb = MONCBSTRUCT.sizeof;
283 + DWORD dwTime;
284 + HANDLE hTask;
285 + DWORD dwRet;
286 + UINT wType;
287 + UINT wFmt;
288 + HCONV hConv;
289 + HSZ hsz1;
290 + HSZ hsz2;
291 + HDDEDATA hData;
292 + ULONG_PTR dwData1;
293 + ULONG_PTR dwData2;
294 + CONVCONTEXT cc;
295 + DWORD cbData;
296 + DWORD[8] Data;
297 +}
298 +alias MONCBSTRUCT* PMONCBSTRUCT;
127 299
128 -const uint XTYP_ERROR = 0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK ;
129 -const uint XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS ;
130 -const uint XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK ;
131 -const uint XTYP_ADVSTART = 0x0030 | XCLASS_BOOL ;
132 -const uint XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION;
133 -const uint XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS ;
134 -const uint XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK;
135 -const uint XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK;
136 -const uint XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION ;
137 -const uint XTYP_POKE = 0x0090 | XCLASS_FLAGS ;
138 -const uint XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK;
139 -const uint XTYP_REQUEST = 0x00B0 | XCLASS_DATA ;
140 -const uint XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK;
141 -const uint XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK;
142 -const uint XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK;
143 -
144 -enum : uint { XTYP_MASK = 0x00F0 }
145 -enum : uint { XTYP_SHIFT = 4 }
146 -
147 -enum : uint { TIMEOUT_ASYNC = 0xFFFFFFFF }
148 -
149 -enum : uint { QID_SYNC = 0xFFFFFFFF }
150 -
151 -// #ifdef UNICODE
152 -const wchar[] SZDDESYS_TOPIC = "System";
153 -const wchar[] SZDDESYS_ITEM_TOPICS = "Topics";
154 -const wchar[] SZDDESYS_ITEM_SYSITEMS = "SysItems";
155 -const wchar[] SZDDESYS_ITEM_RTNMSG = "ReturnMessage";
156 -const wchar[] SZDDESYS_ITEM_STATUS = "Status";
157 -const wchar[] SZDDESYS_ITEM_FORMATS = "Formats";
158 -const wchar[] SZDDESYS_ITEM_HELP = "Help";
159 -const wchar[] SZDDE_ITEM_ITEMLIST = "TopicItemList";
160 -// #else
161 -// #...
162 -// #...
163 -// #...
164 -// #...
165 -// #...
166 -// #...
167 -// #...
168 -// #...
169 -// #endif
170 -
171 -// typedef HDDEDATA CALLBACK FNCALLBACK(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2);
172 -extern(Windows) alias HDDEDATA function(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2) PFNCALLBACK;
173 -
174 -const HDDEDATA CBR_BLOCK = cast(HDDEDATA)-1;
175 -
176 -extern(Windows) export UINT DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback,
177 - DWORD afCmd, DWORD ulRes);
178 -extern(Windows) export UINT DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback,
179 - DWORD afCmd, DWORD ulRes);
180 -// #ifdef UNICODE
181 -alias DdeInitializeW DdeInitialize;
182 -// #else
183 -// #...
184 -// #endif // !UNICODE
185 -
186 -enum : uint { CBF_FAIL_SELFCONNECTIONS = 0x00001000 }
187 -enum : uint { CBF_FAIL_CONNECTIONS = 0x00002000 }
188 -enum : uint { CBF_FAIL_ADVISES = 0x00004000 }
189 -enum : uint { CBF_FAIL_EXECUTES = 0x00008000 }
190 -enum : uint { CBF_FAIL_POKES = 0x00010000 }
191 -enum : uint { CBF_FAIL_REQUESTS = 0x00020000 }
192 -enum : uint { CBF_FAIL_ALLSVRXACTIONS = 0x0003f000 }
193 -
194 -enum : uint { CBF_SKIP_CONNECT_CONFIRMS = 0x00040000 }
195 -enum : uint { CBF_SKIP_REGISTRATIONS = 0x00080000 }
196 -enum : uint { CBF_SKIP_UNREGISTRATIONS = 0x00100000 }
197 -enum : uint { CBF_SKIP_DISCONNECTS = 0x00200000 }
198 -enum : uint { CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000 }
199 -
200 -enum : uint { APPCMD_CLIENTONLY = 0x00000010 }
201 -enum : uint { APPCMD_FILTERINITS = 0x00000020 }
202 -enum : uint { APPCMD_MASK = 0x00000FF0 }
203 -
204 -enum : uint { APPCLASS_STANDARD = 0x00000000 }
205 -enum : uint { APPCLASS_MASK = 0x0000000F }
300 +struct MONERRSTRUCT {
301 + UINT cb = MONERRSTRUCT.sizeof;
302 + UINT wLastError;
303 + DWORD dwTime;
304 + HANDLE hTask;
305 +}
306 +alias MONERRSTRUCT* PMONERRSTRUCT;
206 307
207 -extern(Windows) export BOOL DdeUninitialize( DWORD idInst);
208 -
209 -extern(Windows) export HCONVLIST DdeConnectList( DWORD idInst, HSZ hszService, HSZ hszTopic,
210 - HCONVLIST hConvList, PCONVCONTEXT pCC);
211 -extern(Windows) export HCONV DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev);
212 -extern(Windows) export BOOL DdeDisconnectList( HCONVLIST hConvList);
213 -
214 -extern(Windows) export HCONV DdeConnect( DWORD idInst, HSZ hszService, HSZ hszTopic,
215 - PCONVCONTEXT pCC);
216 -extern(Windows) export BOOL DdeDisconnect( HCONV hConv);
217 -extern(Windows) export HCONV DdeReconnect( HCONV hConv);
218 -extern(Windows) export UINT DdeQueryConvInfo( HCONV hConv, DWORD idTransaction, PCONVINFO pConvInfo);
219 -extern(Windows) export BOOL DdeSetUserHandle( HCONV hConv, DWORD id, DWORD_PTR hUser);
220 -extern(Windows) export BOOL DdeAbandonTransaction( DWORD idInst, HCONV hConv, DWORD idTransaction);
221 -
222 -extern(Windows) export BOOL DdePostAdvise( DWORD idInst, HSZ hszTopic, HSZ hszItem);
223 -extern(Windows) export BOOL DdeEnableCallback( DWORD idInst, HCONV hConv, UINT wCmd);
224 -extern(Windows) export BOOL DdeImpersonateClient( HCONV hConv);
225 -
226 -enum : uint { EC_ENABLEALL = 0 }
227 -alias ST_BLOCKNEXT EC_ENABLEONE;
228 -alias ST_BLOCKED EC_DISABLE;
229 -enum : uint { EC_QUERYWAITING = 2 }
230 -
231 -extern(Windows) export HDDEDATA DdeNameService( DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd);
232 -
233 -enum : uint { DNS_REGISTER = 0x0001 }
234 -enum : uint { DNS_UNREGISTER = 0x0002 }
235 -enum : uint { DNS_FILTERON = 0x0004 }
236 -enum : uint { DNS_FILTEROFF = 0x0008 }
237 -
238 -extern(Windows) export HDDEDATA DdeClientTransaction( LPBYTE pData, DWORD cbData,
239 - HCONV hConv, HSZ hszItem, UINT wFmt, UINT wType,
240 - DWORD dwTimeout, LPDWORD pdwResult);
241 -
242 -extern(Windows) export HDDEDATA DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb,
243 - DWORD cbOff, HSZ hszItem, UINT wFmt, UINT afCmd);
244 -extern(Windows) export HDDEDATA DdeAddData( HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff);
245 -extern(Windows) export DWORD DdeGetData( HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff);
246 -extern(Windows) export LPBYTE DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize);
247 -extern(Windows) export BOOL DdeUnaccessData( HDDEDATA hData);
248 -extern(Windows) export BOOL DdeFreeDataHandle( HDDEDATA hData);
249 -
250 -enum : uint { HDATA_APPOWNED = 0x0001 }
251 -
252 -extern(Windows) export UINT DdeGetLastError( DWORD idInst);
253 -
254 -enum : uint { DMLERR_NO_ERROR = 0 }
255 -
256 -enum : uint { DMLERR_FIRST = 0x4000 }
257 -
258 -enum : uint { DMLERR_ADVACKTIMEOUT = 0x4000 }
259 -enum : uint { DMLERR_BUSY = 0x4001 }
260 -enum : uint { DMLERR_DATAACKTIMEOUT = 0x4002 }
261 -enum : uint { DMLERR_DLL_NOT_INITIALIZED = 0x4003 }
262 -enum : uint { DMLERR_DLL_USAGE = 0x4004 }
263 -enum : uint { DMLERR_EXECACKTIMEOUT = 0x4005 }
264 -enum : uint { DMLERR_INVALIDPARAMETER = 0x4006 }
265 -enum : uint { DMLERR_LOW_MEMORY = 0x4007 }
266 -enum : uint { DMLERR_MEMORY_ERROR = 0x4008 }
267 -enum : uint { DMLERR_NOTPROCESSED = 0x4009 }
268 -enum : uint { DMLERR_NO_CONV_ESTABLISHED = 0x400a }
269 -enum : uint { DMLERR_POKEACKTIMEOUT = 0x400b }
270 -enum : uint { DMLERR_POSTMSG_FAILED = 0x400c }
271 -enum : uint { DMLERR_REENTRANCY = 0x400d }
272 -enum : uint { DMLERR_SERVER_DIED = 0x400e }
273 -enum : uint { DMLERR_SYS_ERROR = 0x400f }
274 -enum : uint { DMLERR_UNADVACKTIMEOUT = 0x4010 }
275 -enum : uint { DMLERR_UNFOUND_QUEUE_ID = 0x4011 }
276 -
277 -enum : uint { DMLERR_LAST = 0x4011 }
308 +struct MONMSGSTRUCT {
309 + UINT cb = MONMSGSTRUCT.sizeof;
310 + HWND hwndTo;
311 + DWORD dwTime;
312 + HANDLE hTask;
313 + UINT wMsg;
314 + WPARAM wParam;
315 + LPARAM lParam;
316 + DDEML_MSG_HOOK_DATA dmhd;
317 +}
318 +alias MONMSGSTRUCT* PMONMSGSTRUCT;
278 319
279 -extern(Windows) export HSZ DdeCreateStringHandleA( DWORD idInst, LPCSTR psz, int iCodePage);
280 -extern(Windows) export HSZ DdeCreateStringHandleW( DWORD idInst, LPCWSTR psz, int iCodePage);
281 -// #ifdef UNICODE
282 -alias DdeCreateStringHandleW DdeCreateStringHandle;
283 -// #else
284 -// #...
285 -// #endif // !UNICODE
286 -extern(Windows) export DWORD DdeQueryStringA( DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, int iCodePage);
287 -extern(Windows) export DWORD DdeQueryStringW( DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, int iCodePage);
288 -// #ifdef UNICODE
289 -alias DdeQueryStringW DdeQueryString;
290 -// #else
291 -// #...
292 -// #endif // !UNICODE
293 -extern(Windows) export BOOL DdeFreeStringHandle( DWORD idInst, HSZ hsz);
294 -extern(Windows) export BOOL DdeKeepStringHandle( DWORD idInst, HSZ hsz);
295 -extern(Windows) export int DdeCmpStringHandles( HSZ hsz1, HSZ hsz2);
296 -
297 -// #ifndef NODDEMLSPY
298 -
299 -struct tagDDEML_MSG_HOOK_DATA {
300 - UINT_PTR uiLo;
301 - UINT_PTR uiHi;
302 - DWORD cbData;
303 - DWORD Data[8];
320 +extern (Windows) {
321 + BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD);
322 + PBYTE DdeAccessData(HDDEDATA, PDWORD);
323 + HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD);
324 + HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT,
325 + DWORD, PDWORD);
326 + int DdeCmpStringHandles(HSZ, HSZ);
327 + HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT);
328 + HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT);
329 + HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT,
330 + UINT);
331 + HSZ DdeCreateStringHandleA(DWORD, LPSTR, int);
332 + HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int);
333 + BOOL DdeDisconnect(HCONV);
334 + BOOL DdeDisconnectList(HCONVLIST);
335 + BOOL DdeEnableCallback(DWORD, HCONV, UINT);
336 + BOOL DdeFreeDataHandle(HDDEDATA);
337 + BOOL DdeFreeStringHandle(DWORD, HSZ);
338 + DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD);
339 + UINT DdeGetLastError(DWORD);
340 + BOOL DdeImpersonateClient(HCONV);
341 + UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD);
342 + UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD);
343 + BOOL DdeKeepStringHandle(DWORD, HSZ);
344 + HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT);
345 + BOOL DdePostAdvise(DWORD, HSZ, HSZ);
346 + UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO);
347 + HCONV DdeQueryNextServer(HCONVLIST, HCONV);
348 + DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int);
349 + DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int);
350 + HCONV DdeReconnect(HCONV);
351 + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD);
352 + BOOL DdeUnaccessData(HDDEDATA);
353 + BOOL DdeUninitialize(DWORD);
304 354 }
305 -alias tagDDEML_MSG_HOOK_DATA DDEML_MSG_HOOK_DATA;
306 -alias tagDDEML_MSG_HOOK_DATA* PDDEML_MSG_HOOK_DATA;
307 355
308 -struct tagMONMSGSTRUCT {
309 - UINT cb;
310 - HWND hwndTo;
311 - DWORD dwTime;
312 - HANDLE hTask;
313 - UINT wMsg;
314 - WPARAM wParam;
315 - LPARAM lParam;
316 - DDEML_MSG_HOOK_DATA dmhd;
317 -}
318 -alias tagMONMSGSTRUCT MONMSGSTRUCT;
319 -alias tagMONMSGSTRUCT* PMONMSGSTRUCT;
356 +const TCHAR[]
357 + SZDDESYS_TOPIC = "System",
358 + SZDDESYS_ITEM_TOPICS = "Topics",
359 + SZDDESYS_ITEM_SYSITEMS = "SysItems",
360 + SZDDESYS_ITEM_RTNMSG = "ReturnMessage",
361 + SZDDESYS_ITEM_STATUS = "Status",
362 + SZDDESYS_ITEM_FORMATS = "Formats",
363 + SZDDESYS_ITEM_HELP = "Help",
364 + SZDDE_ITEM_ITEMLIST = "TopicItemList";
320 365
321 -struct tagMONCBSTRUCT {
322 - UINT cb;
323 - DWORD dwTime;
324 - HANDLE hTask;
325 - DWORD dwRet;
326 - UINT wType;
327 - UINT wFmt;
328 - HCONV hConv;
329 - HSZ hsz1;
330 - HSZ hsz2;
331 - HDDEDATA hData;
332 - ULONG_PTR dwData1;
333 - ULONG_PTR dwData2;
334 - CONVCONTEXT cc;
335 - DWORD cbData;
336 - DWORD Data[8];
337 -}
338 -alias tagMONCBSTRUCT MONCBSTRUCT;
339 -alias tagMONCBSTRUCT* PMONCBSTRUCT;
340 -
341 -struct tagMONHSZSTRUCTA {
342 - UINT cb;
343 - BOOL fsAction;
344 - DWORD dwTime;
345 - HSZ hsz;
346 - HANDLE hTask;
347 - CHAR str[1];
348 -}
349 -alias tagMONHSZSTRUCTA MONHSZSTRUCTA;
350 -alias tagMONHSZSTRUCTA* PMONHSZSTRUCTA;
351 -
352 -struct tagMONHSZSTRUCTW {
353 - UINT cb;
354 - BOOL fsAction;
355 - DWORD dwTime;
356 - HSZ hsz;
357 - HANDLE hTask;
358 - WCHAR str[1];
359 -}
360 -alias tagMONHSZSTRUCTW MONHSZSTRUCTW;
361 -alias tagMONHSZSTRUCTW* PMONHSZSTRUCTW;
362 -
363 -// #ifdef UNICODE
364 -alias MONHSZSTRUCTW MONHSZSTRUCT;
365 -alias PMONHSZSTRUCTW PMONHSZSTRUCT;
366 -// #else
367 -// ...
368 -// #endif // UNICODE
369 -
370 -enum : uint { MH_CREATE = 1 }
371 -enum : uint { MH_KEEP = 2 }
372 -enum : uint { MH_DELETE = 3 }
373 -enum : uint { MH_CLEANUP = 4 }
374 -
375 -struct tagMONERRSTRUCT {
376 - UINT cb;
377 - UINT wLastError;
378 - DWORD dwTime;
379 - HANDLE hTask;
380 -}
381 -alias tagMONERRSTRUCT MONERRSTRUCT;
382 -alias tagMONERRSTRUCT* PMONERRSTRUCT;
383 -
384 -struct tagMONLINKSTRUCT {
385 - UINT cb;
386 - DWORD dwTime;
387 - HANDLE hTask;
388 - BOOL fEstablished;
389 - BOOL fNoData;
390 - HSZ hszSvc;
391 - HSZ hszTopic;
392 - HSZ hszItem;
393 - UINT wFmt;
394 - BOOL fServer;
395 - HCONV hConvServer;
396 - HCONV hConvClient;
397 -}
398 -alias tagMONLINKSTRUCT MONLINKSTRUCT;
399 -alias tagMONLINKSTRUCT* PMONLINKSTRUCT;
400 -
401 -struct tagMONCONVSTRUCT {
402 - UINT cb;
403 - BOOL fConnect;
404 - DWORD dwTime;
405 - HANDLE hTask;
406 - HSZ hszSvc;
407 - HSZ hszTopic;
408 - HCONV hConvClient;
409 - HCONV hConvServer;
410 -}
411 -alias tagMONCONVSTRUCT MONCONVSTRUCT;
412 -alias tagMONCONVSTRUCT* PMONCONVSTRUCT;
413 -
414 -enum : uint { MAX_MONITORS = 4 }
415 -enum : uint { APPCLASS_MONITOR = 0x00000001 }
416 -const uint XTYP_MONITOR = 0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK;
417 -
418 -enum : uint { MF_HSZ_INFO = 0x01000000 }
419 -enum : uint { MF_SENDMSGS = 0x02000000 }
420 -enum : uint { MF_POSTMSGS = 0x04000000 }
421 -enum : uint { MF_CALLBACKS = 0x08000000 }
422 -enum : uint { MF_ERRORS = 0x10000000 }
423 -enum : uint { MF_LINKS = 0x20000000 }
424 -enum : uint { MF_CONV = 0x40000000 }
425 -
426 -enum : uint { MF_MASK = 0xFF000000 }
427 -// #endif /* NODDEMLSPY */
428 -
429 -// #ifdef __cplusplus
430 -// }
431 -// #endif /* __cplusplus */
432 -
433 -// #endif /* _INC_DDEMLH */
434 -
366 +version (Unicode) {
367 + alias DdeCreateStringHandleW DdeCreateStringHandle;
368 + alias DdeInitializeW DdeInitialize;
369 + alias DdeQueryStringW DdeQueryString;
370 +} else {
371 + alias DdeCreateStringHandleA DdeCreateStringHandle;
372 + alias DdeInitializeA DdeInitialize;
373 + alias DdeQueryStringA DdeQueryString;
374 +}