Mercurial > projects > ddbg_continued
diff win32/ddeml.d @ 1:4a9dcbd9e54f
-files of 0.13 beta
-fixes so that it now compiles with the current dmd version
author | marton@basel.hu |
---|---|
date | Tue, 05 Apr 2011 20:44:01 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/win32/ddeml.d Tue Apr 05 20:44:01 2011 +0200 @@ -0,0 +1,374 @@ +/***********************************************************************\ +* ddeml.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ddeml; +pragma(lib, "user32.lib"); + +private import win32.basetsd, win32.windef, win32.winnt; + +enum : int { + CP_WINANSI = 1004, + CP_WINUNICODE = 1200 +} + +enum : UINT { + XTYPF_NOBLOCK = 2, + XTYPF_NODATA = 4, + XTYPF_ACKREQ = 8 +} + +enum : UINT { + XCLASS_MASK = 0xFC00, + XCLASS_BOOL = 0x1000, + XCLASS_DATA = 0x2000, + XCLASS_FLAGS = 0x4000, + XCLASS_NOTIFICATION = 0x8000 +} + +enum : UINT { + XST_NULL, + XST_INCOMPLETE, + XST_CONNECTED, + XST_INIT1, + XST_INIT2, + XST_REQSENT, + XST_DATARCVD, + XST_POKESENT, + XST_POKEACKRCVD, + XST_EXECSENT, + XST_EXECACKRCVD, + XST_ADVSENT, + XST_UNADVSENT, + XST_ADVACKRCVD, + XST_UNADVACKRCVD, + XST_ADVDATASENT, + XST_ADVDATAACKRCVD // = 16 +} + +enum : UINT { + XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, + XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, + XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, + XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, + XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, + XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, + XTYP_POKE = 0x0090 | XCLASS_FLAGS, + XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_REQUEST = 0x00B0 | XCLASS_DATA, + XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_MASK = 0x00F0, + XTYP_SHIFT = 4 +} + +/+ +#define TIMEOUT_ASYNC 0xFFFFFFFF +#define QID_SYNC 0xFFFFFFFF ++/ + +enum : UINT { + ST_CONNECTED = 1, + ST_ADVISE = 2, + ST_ISLOCAL = 4, + ST_BLOCKED = 8, + ST_CLIENT = 16, + ST_TERMINATED = 32, + ST_INLIST = 64, + ST_BLOCKNEXT = 128, + ST_ISSELF = 256 +} + +/+ +#define CADV_LATEACK 0xFFFF ++/ + +enum : UINT { + DMLERR_NO_ERROR = 0, + DMLERR_FIRST = 0x4000, + DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, + DMLERR_BUSY, + DMLERR_DATAACKTIMEOUT, + DMLERR_DLL_NOT_INITIALIZED, + DMLERR_DLL_USAGE, + DMLERR_EXECACKTIMEOUT, + DMLERR_INVALIDPARAMETER, + DMLERR_LOW_MEMORY, + DMLERR_MEMORY_ERROR, + DMLERR_NOTPROCESSED, + DMLERR_NO_CONV_ESTABLISHED, + DMLERR_POKEACKTIMEOUT, + DMLERR_POSTMSG_FAILED, + DMLERR_REENTRANCY, + DMLERR_SERVER_DIED, + DMLERR_SYS_ERROR, + DMLERR_UNADVACKTIMEOUT, + DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 + DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID +} + +/+ +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00ff +#define DDE_FNOTPROCESSED 0 +#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) +#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) +#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) +#define DDE_FPOKRESERVED (~DDE_FRELEASE) +#define MSGF_DDEMGR 0x8001 +#define CBR_BLOCK ((HDDEDATA)0xffffffff) ++/ + +const DWORD + APPCLASS_STANDARD = 0, + APPCLASS_MONITOR = 0x00000001, + APPCLASS_MASK = 0x0000000F, + APPCMD_CLIENTONLY = 0x00000010, + APPCMD_FILTERINITS = 0x00000020, + APPCMD_MASK = 0x00000FF0, + CBF_FAIL_SELFCONNECTIONS = 0x00001000, + CBF_FAIL_CONNECTIONS = 0x00002000, + CBF_FAIL_ADVISES = 0x00004000, + CBF_FAIL_EXECUTES = 0x00008000, + CBF_FAIL_POKES = 0x00010000, + CBF_FAIL_REQUESTS = 0x00020000, + CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, + CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, + CBF_SKIP_REGISTRATIONS = 0x00080000, + CBF_SKIP_UNREGISTRATIONS = 0x00100000, + CBF_SKIP_DISCONNECTS = 0x00200000, + CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, + MF_HSZ_INFO = 0x01000000, + MF_SENDMSGS = 0x02000000, + MF_POSTMSGS = 0x04000000, + MF_CALLBACKS = 0x08000000, + MF_ERRORS = 0x10000000, + MF_LINKS = 0x20000000, + MF_CONV = 0x40000000, + MF_MASK = 0xFF000000; + +enum : UINT { + EC_ENABLEALL = 0, + EC_ENABLEONE = ST_BLOCKNEXT, + EC_DISABLE = ST_BLOCKED, + EC_QUERYWAITING = 2 +} + +enum : UINT { + DNS_REGISTER = 1, + DNS_UNREGISTER = 2, + DNS_FILTERON = 4, + DNS_FILTEROFF = 8 +} + +/+ +#define HDATA_APPOWNED 1 +#define MAX_MONITORS 4 ++/ + +enum : int { + MH_CREATE = 1, + MH_KEEP = 2, + MH_DELETE = 3, + MH_CLEANUP = 4 +} + +alias HANDLE HCONVLIST, HCONV, HSZ, HDDEDATA; + +extern (Windows) alias HDDEDATA + function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; + +struct HSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} +alias HSZPAIR* PHSZPAIR; + +struct CONVCONTEXT { + UINT cb = CONVCONTEXT.sizeof; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} +alias CONVCONTEXT* PCONVCONTEXT; + +struct CONVINFO { + DWORD cb = CONVINFO.sizeof; + DWORD hUser; + HCONV hConvPartner; + HSZ hszSvcPartner; + HSZ hszServiceReq; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + UINT wType; + UINT wStatus; + UINT wConvst; + UINT wLastError; + HCONVLIST hConvList; + CONVCONTEXT ConvCtxt; + HWND hwnd; + HWND hwndPartner; +} +alias CONVINFO* PCONVINFO; + +struct DDEML_MSG_HOOK_DATA { + UINT uiLo; + UINT uiHi; + DWORD cbData; + DWORD[8] Data; +} + +struct MONHSZSTRUCT { + UINT cb = MONHSZSTRUCT.sizeof; + int fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + TCHAR[1] _str; + + TCHAR* str() { return _str.ptr; } +} +alias MONHSZSTRUCT* PMONHSZSTRUCT; + +struct MONLINKSTRUCT { + UINT cb = MONLINKSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} +alias MONLINKSTRUCT* PMONLINKSTRUCT; + +struct MONCONVSTRUCT { + UINT cb = MONCONVSTRUCT.sizeof; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} +alias MONCONVSTRUCT* PMONCONVSTRUCT; + +struct MONCBSTRUCT { + UINT cb = MONCBSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + DWORD dwRet; + UINT wType; + UINT wFmt; + HCONV hConv; + HSZ hsz1; + HSZ hsz2; + HDDEDATA hData; + ULONG_PTR dwData1; + ULONG_PTR dwData2; + CONVCONTEXT cc; + DWORD cbData; + DWORD[8] Data; +} +alias MONCBSTRUCT* PMONCBSTRUCT; + +struct MONERRSTRUCT { + UINT cb = MONERRSTRUCT.sizeof; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} +alias MONERRSTRUCT* PMONERRSTRUCT; + +struct MONMSGSTRUCT { + UINT cb = MONMSGSTRUCT.sizeof; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} +alias MONMSGSTRUCT* PMONMSGSTRUCT; + +extern (Windows) { + BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); + PBYTE DdeAccessData(HDDEDATA, PDWORD); + HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); + HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, + DWORD, PDWORD); + int DdeCmpStringHandles(HSZ, HSZ); + HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); + HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); + HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, + UINT); + HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); + HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); + BOOL DdeDisconnect(HCONV); + BOOL DdeDisconnectList(HCONVLIST); + BOOL DdeEnableCallback(DWORD, HCONV, UINT); + BOOL DdeFreeDataHandle(HDDEDATA); + BOOL DdeFreeStringHandle(DWORD, HSZ); + DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); + UINT DdeGetLastError(DWORD); + BOOL DdeImpersonateClient(HCONV); + UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); + UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); + BOOL DdeKeepStringHandle(DWORD, HSZ); + HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); + BOOL DdePostAdvise(DWORD, HSZ, HSZ); + UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); + HCONV DdeQueryNextServer(HCONVLIST, HCONV); + DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); + DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); + HCONV DdeReconnect(HCONV); + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); + BOOL DdeUnaccessData(HDDEDATA); + BOOL DdeUninitialize(DWORD); +} + +const TCHAR[] + SZDDESYS_TOPIC = "System", + SZDDESYS_ITEM_TOPICS = "Topics", + SZDDESYS_ITEM_SYSITEMS = "SysItems", + SZDDESYS_ITEM_RTNMSG = "ReturnMessage", + SZDDESYS_ITEM_STATUS = "Status", + SZDDESYS_ITEM_FORMATS = "Formats", + SZDDESYS_ITEM_HELP = "Help", + SZDDE_ITEM_ITEMLIST = "TopicItemList"; + +version (Unicode) { + alias DdeCreateStringHandleW DdeCreateStringHandle; + alias DdeInitializeW DdeInitialize; + alias DdeQueryStringW DdeQueryString; +} else { + alias DdeCreateStringHandleA DdeCreateStringHandle; + alias DdeInitializeA DdeInitialize; + alias DdeQueryStringA DdeQueryString; +}