home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / Runimage / Delphi50 / Source / Rtl / Win / DDEML.PAS < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  24KB  |  726 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Run-time Library                 }
  5. {       DDE Management Library interface unit           }
  6. {                                                       }
  7. {       Copyright (c) 1985-1999, Microsoft Corporation  }
  8. {                                                       }
  9. {       Translator: Inprise Corporation                 }
  10. {                                                       }
  11. {*******************************************************}
  12.  
  13. unit Ddeml;
  14.  
  15. {$WEAKPACKAGEUNIT}
  16.  
  17. {$HPPEMIT '#include <ddeml.h>'}
  18.  
  19. interface
  20.  
  21. uses Windows;
  22.  
  23. type
  24.   HConvList = Longint;
  25.   HConv = Longint;
  26.   HSz = Longint;
  27.   HDDEData = Longint;
  28.  
  29. type
  30.   { the following structure is for use with xtyp_WildConnect processing. }
  31.   PHSZPair = ^THSZPair;
  32.   {$EXTERNALSYM tagHSZPAIR}
  33.   tagHSZPAIR = record
  34.     hszSvc: HSZ;
  35.     hszTopic: HSZ;
  36.   end;
  37.   THSZPair = tagHSZPAIR;
  38.   {$EXTERNALSYM HSZPAIR}
  39.   HSZPAIR = tagHSZPAIR;
  40.  
  41.   { The following structure is used by DdeConnect() and DdeConnectList()
  42.     and by xtyp_Connect and xtyp_WildConnect callbacks. }
  43.  
  44.   PConvContext = ^TConvContext;
  45.   {$EXTERNALSYM tagCONVCONTEXT}
  46.   tagCONVCONTEXT = record
  47.     cb: UINT;            { set to sizeof(ConvCOnTEXT) }
  48.     wFlags: UINT;        { none currently defined. }
  49.     wCountryID: UINT;    { country code for topic/item strings used. }
  50.     iCodePage: Integer;  { codepage used for topic/item strings. }
  51.     dwLangID: DWORD;     { language ID for topic/item strings. }
  52.     dwSecurity: DWORD;   { Private security code. }
  53.     qos: TSecurityQualityOfService;  { used to support client impersonation }
  54.   end;
  55.   TConvContext = tagCONVCONTEXT;
  56.   {$EXTERNALSYM CONVCONTEXT}
  57.   CONVCONTEXT = tagCONVCONTEXT;
  58.  
  59. { The following structure is used by DdeQueryConvInfo(): }
  60.  
  61.   PConvInfo = ^TConvInfo;
  62.   {$EXTERNALSYM tagCONVINFO}
  63.   tagCONVINFO = record
  64.     cb: DWORD;            { sizeof(CONVINFO)  }
  65.     hUser: DWORD;         { user specified field  }
  66.     hConvPartner: HConv;    { hConv on other end or 0 if non-ddemgr partner  }
  67.     hszSvcPartner: HSz;     { app name of partner if obtainable  }
  68.     hszServiceReq: HSz;     { AppName requested for connection  }
  69.     hszTopic: HSz;          { Topic name for conversation  }
  70.     hszItem: HSz;           { transaction item name or NULL if quiescent  }
  71.     wFmt: UINT;             { transaction format or NULL if quiescent  }
  72.     wType: UINT;            { XTYP_ for current transaction  }
  73.     wStatus: UINT;          { ST_ constant for current conversation  }
  74.     wConvst: UINT;          { XST_ constant for current transaction  }
  75.     wLastError: UINT;       { last transaction error.  }
  76.     hConvList: HConvList;   { parent hConvList if this conversation is in a list }
  77.     ConvCtxt: TConvContext; { conversation context }
  78.     hwnd: HWND;             { window handle for this conversation }
  79.     hwndPartner: HWND;      { partner window handle for this conversation }
  80.   end;
  81.   TConvInfo = tagCONVINFO;
  82.   {$EXTERNALSYM CONVINFO}
  83.   CONVINFO = tagCONVINFO;
  84.  
  85. const
  86.   { conversation states (usState) }
  87.  
  88.   {$EXTERNALSYM XST_NULL}
  89.   XST_NULL = 0;                 { quiescent states }
  90.   {$EXTERNALSYM XST_INCOMPLETE}
  91.   XST_INCOMPLETE = 1;
  92.   {$EXTERNALSYM XST_CONNECTED}
  93.   XST_CONNECTED = 2;
  94.   {$EXTERNALSYM XST_INIT1}
  95.   XST_INIT1 = 3;                { mid-initiation states }
  96.   {$EXTERNALSYM XST_INIT2}
  97.   XST_INIT2 = 4;
  98.   {$EXTERNALSYM XST_REQSENT}
  99.   XST_REQSENT = 5;              { active conversation states }
  100.   {$EXTERNALSYM XST_DATARCVD}
  101.   XST_DATARCVD = 6;
  102.   {$EXTERNALSYM XST_POKESENT}
  103.   XST_POKESENT = 7;
  104.   {$EXTERNALSYM XST_POKEACKRCVD}
  105.   XST_POKEACKRCVD = 8;
  106.   {$EXTERNALSYM XST_EXECSENT}
  107.   XST_EXECSENT = 9;
  108.   {$EXTERNALSYM XST_EXECACKRCVD}
  109.   XST_EXECACKRCVD = 10;
  110.   {$EXTERNALSYM XST_ADVSENT}
  111.   XST_ADVSENT = 11;
  112.   {$EXTERNALSYM XST_UNADVSENT}
  113.   XST_UNADVSENT = 12;
  114.   {$EXTERNALSYM XST_ADVACKRCVD}
  115.   XST_ADVACKRCVD = 13;
  116.   {$EXTERNALSYM XST_UNADVACKRCVD}
  117.   XST_UNADVACKRCVD = 14;
  118.   {$EXTERNALSYM XST_ADVDATASENT}
  119.   XST_ADVDATASENT = 15;
  120.   {$EXTERNALSYM XST_ADVDATAACKRCVD}
  121.   XST_ADVDATAACKRCVD = 16;
  122.  
  123.   { used in LOWORD(dwData1) of XTYP_ADVREQ callbacks... }
  124.  
  125.   {$EXTERNALSYM CADV_LATEACK}
  126.   CADV_LATEACK = $FFFF;
  127.  
  128.   { conversation status bits (fsStatus) }
  129.  
  130.   {$EXTERNALSYM ST_CONNECTED}
  131.   ST_CONNECTED = $0001;
  132.   {$EXTERNALSYM ST_ADVISE}
  133.   ST_ADVISE = $0002;
  134.   {$EXTERNALSYM ST_ISLOCAL}
  135.   ST_ISLOCAL = $0004;
  136.   {$EXTERNALSYM ST_BLOCKED}
  137.   ST_BLOCKED = $0008;
  138.   {$EXTERNALSYM ST_CLIENT}
  139.   ST_CLIENT = $0010;
  140.   {$EXTERNALSYM ST_TERMINATED}
  141.   ST_TERMINATED = $0020;
  142.   {$EXTERNALSYM ST_INLIST}
  143.   ST_INLIST = $0040;
  144.   {$EXTERNALSYM ST_BLOCKNEXT}
  145.   ST_BLOCKNEXT = $0080;
  146.   {$EXTERNALSYM ST_ISSELF}
  147.   ST_ISSELF = $0100;
  148.  
  149.   { DDE constants for wStatus field }
  150.  
  151.   {$EXTERNALSYM DDE_FACK}
  152.   DDE_FACK = $8000;
  153.   {$EXTERNALSYM DDE_FBUSY}
  154.   DDE_FBUSY = $4000;
  155.   {$EXTERNALSYM DDE_FDEFERUPD}
  156.   DDE_FDEFERUPD = $4000;
  157.   {$EXTERNALSYM DDE_FACKREQ}
  158.   DDE_FACKREQ = $8000;
  159.   {$EXTERNALSYM DDE_FRELEASE}
  160.   DDE_FRELEASE = $2000;
  161.   {$EXTERNALSYM DDE_FREQUESTED}
  162.   DDE_FREQUESTED = $1000;
  163.   {$EXTERNALSYM DDE_FAPPSTATUS}
  164.   DDE_FAPPSTATUS = $00ff;
  165.   {$EXTERNALSYM DDE_FNOTPROCESSED}
  166.   DDE_FNOTPROCESSED = $0000;
  167.  
  168.   {$EXTERNALSYM DDE_FACKRESERVED}
  169.   DDE_FACKRESERVED = $3ff0;
  170.   {$EXTERNALSYM DDE_FADVRESERVED}
  171.   DDE_FADVRESERVED = $3fff;
  172.   {$EXTERNALSYM DDE_FDATRESERVED}
  173.   DDE_FDATRESERVED = $4fff;
  174.   {$EXTERNALSYM DDE_FPOKRESERVED}
  175.   DDE_FPOKRESERVED = $dfff;
  176.  
  177.   { message filter hook types }
  178.  
  179.   {$EXTERNALSYM MSGF_DDEMGR}
  180.   MSGF_DDEMGR = $8001;
  181.  
  182.   { default codepage for windows & old DDE convs. }
  183.  
  184.   {$EXTERNALSYM CP_WINANSI}
  185.   CP_WINANSI = 1004;
  186.   {$EXTERNALSYM CP_WINUNICODE}
  187.   CP_WINUNICODE = 1200;
  188.  
  189.   {$EXTERNALSYM CP_WINNEUTRAL}
  190.     {$IFDEF UNICODE}
  191.     CP_WINNEUTRAL = CP_WINUNICODE;
  192.     {$ELSE}
  193.     CP_WINNEUTRAL = CP_WINANSI;
  194.     {$ENDIF}
  195.   { transaction types }
  196.  
  197.   {$EXTERNALSYM XTYPF_NOBLOCK}
  198.   XTYPF_NOBLOCK = $0002; { CBR_BLOCK will not work }
  199.   {$EXTERNALSYM XTYPF_NODATA}
  200.   XTYPF_NODATA = $0004;  { DDE_FDEFERUPD }
  201.   {$EXTERNALSYM XTYPF_ACKREQ}
  202.   XTYPF_ACKREQ = $0008;  { DDE_FACKREQ }
  203.  
  204.   {$EXTERNALSYM XCLASS_MASK}
  205.   XCLASS_MASK = $FC00;
  206.   {$EXTERNALSYM XCLASS_BOOL}
  207.   XCLASS_BOOL = $1000;
  208.   {$EXTERNALSYM XCLASS_DATA}
  209.   XCLASS_DATA = $2000;
  210.   {$EXTERNALSYM XCLASS_FLAGS}
  211.   XCLASS_FLAGS = $4000;
  212.   {$EXTERNALSYM XCLASS_NOTIFICATION}
  213.   XCLASS_NOTIFICATION = $8000;
  214.  
  215.   {$EXTERNALSYM XTYP_ERROR}
  216.   XTYP_ERROR = $0000 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  217.   {$EXTERNALSYM XTYP_ADVDATA}
  218.   XTYP_ADVDATA = $0010 or XCLASS_FLAGS;
  219.   {$EXTERNALSYM XTYP_ADVREQ}
  220.   XTYP_ADVREQ = $0020 or XCLASS_DATA or XTYPF_NOBLOCK;
  221.   {$EXTERNALSYM XTYP_ADVSTART}
  222.   XTYP_ADVSTART = $0030 or XCLASS_BOOL;
  223.   {$EXTERNALSYM XTYP_ADVSTOP}
  224.   XTYP_ADVSTOP = $0040 or XCLASS_NOTIFICATION;
  225.   {$EXTERNALSYM XTYP_EXECUTE}
  226.   XTYP_EXECUTE = $0050 or XCLASS_FLAGS;
  227.   {$EXTERNALSYM XTYP_CONNECT}
  228.   XTYP_CONNECT = $0060 or XCLASS_BOOL or XTYPF_NOBLOCK;
  229.   {$EXTERNALSYM XTYP_CONNECT_CONFIRM}
  230.   XTYP_CONNECT_CONFIRM = $0070 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  231.   {$EXTERNALSYM XTYP_XACT_COMPLETE}
  232.   XTYP_XACT_COMPLETE = $0080 or XCLASS_NOTIFICATION;
  233.   {$EXTERNALSYM XTYP_POKE}
  234.   XTYP_POKE = $0090 or XCLASS_FLAGS;
  235.   {$EXTERNALSYM XTYP_REGISTER}
  236.   XTYP_REGISTER = $00A0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  237.   {$EXTERNALSYM XTYP_REQUEST}
  238.   XTYP_REQUEST = $00B0 or XCLASS_DATA;
  239.   {$EXTERNALSYM XTYP_DISCONNECT}
  240.   XTYP_DISCONNECT = $00C0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  241.   {$EXTERNALSYM XTYP_UNREGISTER}
  242.   XTYP_UNREGISTER = $00D0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  243.   {$EXTERNALSYM XTYP_WILDCONNECT}
  244.   XTYP_WILDCONNECT = $00E0 or XCLASS_DATA or XTYPF_NOBLOCK;
  245.  
  246.   {$EXTERNALSYM XTYP_MASK}
  247.   XTYP_MASK = $00F0;
  248.   {$EXTERNALSYM XTYP_SHIFT}
  249.   XTYP_SHIFT = 4;  { shift to turn xtyp_ into an index }
  250.  
  251.   { Timeout constants }
  252.  
  253.   {$EXTERNALSYM TIMEOUT_ASYNC}
  254.   TIMEOUT_ASYNC =           DWORD(-1);
  255.  
  256.   { Transaction ID constatnts }
  257.   {$EXTERNALSYM QID_SYNC}
  258.   QID_SYNC =                DWORD(-1);
  259.  
  260.   { public strings used in DDE }
  261.  
  262.   {$EXTERNALSYM SZDDESYS_TOPIC}
  263.   SZDDESYS_TOPIC = 'System';
  264.   {$EXTERNALSYM SZDDESYS_ITEM_TOPICS}
  265.   SZDDESYS_ITEM_TOPICS = 'Topics';
  266.   {$EXTERNALSYM SZDDESYS_ITEM_SYSITEMS}
  267.   SZDDESYS_ITEM_SYSITEMS = 'SysItems';
  268.   {$EXTERNALSYM SZDDESYS_ITEM_RTNMSG}
  269.   SZDDESYS_ITEM_RTNMSG = 'ReturnMessage';
  270.   {$EXTERNALSYM SZDDESYS_ITEM_STATUS}
  271.   SZDDESYS_ITEM_STATUS = 'Status';
  272.   {$EXTERNALSYM SZDDESYS_ITEM_FORMATS}
  273.   SZDDESYS_ITEM_FORMATS = 'Formats';
  274.   {$EXTERNALSYM SZDDESYS_ITEM_HELP}
  275.   SZDDESYS_ITEM_HELP = 'Help';
  276.   {$EXTERNALSYM SZDDE_ITEM_ITEMLIST}
  277.   SZDDE_ITEM_ITEMLIST = 'TopicItemList';
  278.  
  279. type
  280.   { API entry points }
  281.   {$EXTERNALSYM PFNCALLBACK}
  282.   PFNCALLBACK = function (CallType, Fmt: UINT; Conv: HConv; hsz1, hsz2: HSZ;
  283.     Data: HDDEData; Data1, Data2: DWORD): HDDEData stdcall;
  284.   TFNCallback = PFNCALLBACK;
  285.  
  286. const
  287.   {$EXTERNALSYM CBR_BLOCK}
  288.   CBR_BLOCK = $FFFFFFFF;
  289.  
  290. { DLL registration functions }
  291.  
  292. {$EXTERNALSYM DdeInitializeA}
  293. function DdeInitializeA(var Inst: Longint; Callback: TFNCallback;
  294.   Cmd, Res: Longint): Longint; stdcall;
  295. {$EXTERNALSYM DdeInitializeW}
  296. function DdeInitializeW(var Inst: Longint; Callback: TFNCallback;
  297.   Cmd, Res: Longint): Longint; stdcall;
  298. {$EXTERNALSYM DdeInitialize}
  299. function DdeInitialize(var Inst: Longint; Callback: TFNCallback;
  300.   Cmd, Res: Longint): Longint; stdcall;
  301.  
  302. const
  303.   { Callback filter flags for use with standard apps. }
  304.  
  305.   {$EXTERNALSYM CBF_FAIL_SELFCONNECTIONS}
  306.   CBF_FAIL_SELFCONNECTIONS = $00001000;
  307.   {$EXTERNALSYM CBF_FAIL_CONNECTIONS}
  308.   CBF_FAIL_CONNECTIONS = $00002000;
  309.   {$EXTERNALSYM CBF_FAIL_ADVISES}
  310.   CBF_FAIL_ADVISES = $00004000;
  311.   {$EXTERNALSYM CBF_FAIL_EXECUTES}
  312.   CBF_FAIL_EXECUTES = $00008000;
  313.   {$EXTERNALSYM CBF_FAIL_POKES}
  314.   CBF_FAIL_POKES = $00010000;
  315.   {$EXTERNALSYM CBF_FAIL_REQUESTS}
  316.   CBF_FAIL_REQUESTS = $00020000;
  317.   {$EXTERNALSYM CBF_FAIL_ALLSVRXACTIONS}
  318.   CBF_FAIL_ALLSVRXACTIONS = $0003f000;
  319.  
  320.   {$EXTERNALSYM CBF_SKIP_CONNECT_CONFIRMS}
  321.   CBF_SKIP_CONNECT_CONFIRMS = $00040000;
  322.   {$EXTERNALSYM CBF_SKIP_REGISTRATIONS}
  323.   CBF_SKIP_REGISTRATIONS = $00080000;
  324.   {$EXTERNALSYM CBF_SKIP_UNREGISTRATIONS}
  325.   CBF_SKIP_UNREGISTRATIONS = $00100000;
  326.   {$EXTERNALSYM CBF_SKIP_DISCONNECTS}
  327.   CBF_SKIP_DISCONNECTS = $00200000;
  328.   {$EXTERNALSYM CBF_SKIP_ALLNOTIFICATIONS}
  329.   CBF_SKIP_ALLNOTIFICATIONS = $003c0000;
  330.  
  331.   { Application command flags }
  332.  
  333.   {$EXTERNALSYM APPCMD_CLIENTONLY}
  334.   APPCMD_CLIENTONLY = $00000010;
  335.   {$EXTERNALSYM APPCMD_FILTERINITS}
  336.   APPCMD_FILTERINITS = $00000020;
  337.   {$EXTERNALSYM APPCMD_MASK}
  338.   APPCMD_MASK = $00000FF0;
  339.  
  340.   { Application classification flags }
  341.  
  342.   {$EXTERNALSYM APPCLASS_STANDARD}
  343.   APPCLASS_STANDARD = $00000000;
  344.   {$EXTERNALSYM APPCLASS_MASK}
  345.   APPCLASS_MASK = $0000000F;
  346.  
  347. {$EXTERNALSYM DdeUninitialize}
  348. function DdeUninitialize(Inst: DWORD): BOOL; stdcall;
  349.  
  350. { conversation enumeration functions }
  351.  
  352. {$EXTERNALSYM DdeConnectList}
  353. function DdeConnectList(Inst: DWORD; Service, Topic: HSZ;
  354.   ConvList: HConvList; CC: PConvContext): HConvList; stdcall;
  355. {$EXTERNALSYM DdeQueryNextServer}
  356. function DdeQueryNextServer(ConvList: HConvList; ConvPrev: HConv): HConv; stdcall;
  357. {$EXTERNALSYM DdeDisconnectList}
  358. function DdeDisconnectList(ConvList: HConvList): BOOL; stdcall;
  359.  
  360. { conversation control functions }
  361.  
  362. {$EXTERNALSYM DdeConnect}
  363. function DdeConnect(Inst: DWORD; Service, Topic: HSZ;
  364.   CC: PConvContext): HConv; stdcall;
  365. {$EXTERNALSYM DdeDisconnect}
  366. function DdeDisconnect(Conv: HConv): BOOL; stdcall;
  367. {$EXTERNALSYM DdeReconnect}
  368. function DdeReconnect(Conv: HConv): HConv; stdcall;
  369.  
  370. {$EXTERNALSYM DdeQueryConvInfo}
  371. function DdeQueryConvInfo(Conv: HConv; Transaction: DWORD;
  372.  ConvInfo: PConvInfo): UINT; stdcall;
  373. {$EXTERNALSYM DdeSetUserHandle}
  374. function DdeSetUserHandle(Conv: HConv; ID, User: DWORD): BOOL; stdcall;
  375.  
  376. {$EXTERNALSYM DdeAbandonTransaction}
  377. function DdeAbandonTransaction(Inst: DWORD; Conv: HConv;
  378.   Transaction: DWORD): BOOL; stdcall;
  379.  
  380. { app server interface functions }
  381.  
  382. {$EXTERNALSYM DdePostAdvise}
  383. function DdePostAdvise(Inst: DWORD; Topic, Item: HSZ): BOOL; stdcall;
  384. {$EXTERNALSYM DdeEnableCallback}
  385. function DdeEnableCallback(Inst: DWORD; Conv: HConv; Cmd: UINT): BOOL; stdcall;
  386.  
  387. const
  388.   {$EXTERNALSYM EC_ENABLEALL}
  389.   EC_ENABLEALL = 0;
  390.   {$EXTERNALSYM EC_ENABLEONE}
  391.   EC_ENABLEONE = ST_BLOCKNEXT;
  392.   {$EXTERNALSYM EC_DISABLE}
  393.   EC_DISABLE = ST_BLOCKED;
  394.   {$EXTERNALSYM EC_QUERYWAITING}
  395.   EC_QUERYWAITING = 2;
  396.  
  397. {$EXTERNALSYM DdeNameService}
  398. function DdeNameService(Inst: DWORD; hsz1, hsz2: HSZ; Cmd: UINT): HDDEData; stdcall;
  399.  
  400. const
  401.   {$EXTERNALSYM DNS_REGISTER}
  402.   DNS_REGISTER = $0001;
  403.   {$EXTERNALSYM DNS_UNREGISTER}
  404.   DNS_UNREGISTER = $0002;
  405.   {$EXTERNALSYM DNS_FILTERON}
  406.   DNS_FILTERON = $0004;
  407.   {$EXTERNALSYM DNS_FILTEROFF}
  408.   DNS_FILTEROFF = $0008;
  409.  
  410. { app client interface functions }
  411.  
  412. {$EXTERNALSYM DdeClientTransaction}
  413. function DdeClientTransaction(Data: Pointer; DataLen: DWORD;
  414.   Conv: HConv; Item: HSZ; Fmt, DataType: UINT; Timeout: DWORD;
  415.   Result: PDWORD): HDDEData; stdcall;
  416.  
  417. { data transfer functions }
  418.  
  419. {$EXTERNALSYM DdeCreateDataHandle}
  420. function DdeCreateDataHandle(Inst: DWORD; Src: Pointer;
  421.   cb, Off: DWORD; Item: HSZ; Fmt, Cmd: UINT): HDDEData; stdcall;
  422.  
  423. {$EXTERNALSYM DdeAddData}
  424. function DdeAddData(Data: HDDEData; Src: Pointer;
  425.   cb, Off: DWORD): HDDEData; stdcall;
  426. {$EXTERNALSYM DdeGetData}
  427. function DdeGetData(Data: HDDEData; Dst: Pointer;
  428.   Max, Off: DWORD): DWORD; stdcall;
  429. {$EXTERNALSYM DdeAccessData}
  430. function DdeAccessData(Data: HDDEData; DataSize: PDWORD): Pointer; stdcall;
  431. {$EXTERNALSYM DdeUnaccessData}
  432. function DdeUnaccessData(Data: HDDEData): BOOL; stdcall;
  433. {$EXTERNALSYM DdeFreeDataHandle}
  434. function DdeFreeDataHandle(Data: HDDEData): BOOL; stdcall;
  435.  
  436. const
  437.   {$EXTERNALSYM HDATA_APPOWNED}
  438.   HDATA_APPOWNED = $0001;
  439.  
  440. {$EXTERNALSYM DdeGetLastError}
  441. function DdeGetLastError(Inst: DWORD): UINT; stdcall;
  442.  
  443. const
  444.   { error codes }
  445.  
  446.   {$EXTERNALSYM DMLERR_NO_ERROR}
  447.   DMLERR_NO_ERROR = 0;       { must be 0 }
  448.  
  449.   {$EXTERNALSYM DMLERR_FIRST}
  450.   DMLERR_FIRST = $4000;
  451.  
  452.   {$EXTERNALSYM DMLERR_ADVACKTIMEOUT}
  453.   DMLERR_ADVACKTIMEOUT = $4000;
  454.   {$EXTERNALSYM DMLERR_BUSY}
  455.   DMLERR_BUSY = $4001;
  456.   {$EXTERNALSYM DMLERR_DATAACKTIMEOUT}
  457.   DMLERR_DATAACKTIMEOUT = $4002;
  458.   {$EXTERNALSYM DMLERR_DLL_NOT_INITIALIZED}
  459.   DMLERR_DLL_NOT_INITIALIZED = $4003;
  460.   {$EXTERNALSYM DMLERR_DLL_USAGE}
  461.   DMLERR_DLL_USAGE = $4004;
  462.   {$EXTERNALSYM DMLERR_EXECACKTIMEOUT}
  463.   DMLERR_EXECACKTIMEOUT = $4005;
  464.   {$EXTERNALSYM DMLERR_INVALIDPARAMETER}
  465.   DMLERR_INVALIDPARAMETER = $4006;
  466.   {$EXTERNALSYM DMLERR_LOW_MEMORY}
  467.   DMLERR_LOW_MEMORY = $4007;
  468.   {$EXTERNALSYM DMLERR_MEMORY_ERROR}
  469.   DMLERR_MEMORY_ERROR = $4008;
  470.   {$EXTERNALSYM DMLERR_NOTPROCESSED}
  471.   DMLERR_NOTPROCESSED = $4009;
  472.   {$EXTERNALSYM DMLERR_NO_CONV_ESTABLISHED}
  473.   DMLERR_NO_CONV_ESTABLISHED = $400a;
  474.   {$EXTERNALSYM DMLERR_POKEACKTIMEOUT}
  475.   DMLERR_POKEACKTIMEOUT = $400b;
  476.   {$EXTERNALSYM DMLERR_POSTMSG_FAILED}
  477.   DMLERR_POSTMSG_FAILED = $400c;
  478.   {$EXTERNALSYM DMLERR_REENTRANCY}
  479.   DMLERR_REENTRANCY = $400D;
  480.   {$EXTERNALSYM DMLERR_SERVER_DIED}
  481.   DMLERR_SERVER_DIED = $400E;
  482.   {$EXTERNALSYM DMLERR_SYS_ERROR}
  483.   DMLERR_SYS_ERROR = $400F;
  484.   {$EXTERNALSYM DMLERR_UNADVACKTIMEOUT}
  485.   DMLERR_UNADVACKTIMEOUT = $4010;
  486.   {$EXTERNALSYM DMLERR_UNFOUND_QUEUE_ID}
  487.   DMLERR_UNFOUND_QUEUE_ID = $4011;
  488.  
  489.   {$EXTERNALSYM DMLERR_LAST}
  490.   DMLERR_LAST = $4011;
  491.  
  492. {$EXTERNALSYM DdeCreateStringHandleA}
  493. function DdeCreateStringHandleA(Inst: DWORD; psz: PAnsiChar;
  494.   CodePage: Integer): HSZ; stdcall;
  495. {$EXTERNALSYM DdeCreateStringHandleW}
  496. function DdeCreateStringHandleW(Inst: DWORD; psz: PWideChar;
  497.   CodePage: Integer): HSZ; stdcall;
  498. {$EXTERNALSYM DdeCreateStringHandle}
  499. function DdeCreateStringHandle(Inst: DWORD; psz: PChar;
  500.   CodePage: Integer): HSZ; stdcall;
  501. {$EXTERNALSYM DdeQueryStringA}
  502. function DdeQueryStringA(Inst: DWORD; HSZ: HSZ; psz: PAnsiChar;
  503.   Max: DWORD; CodePage: Integer): DWORD; stdcall;
  504. {$EXTERNALSYM DdeQueryStringW}
  505. function DdeQueryStringW(Inst: DWORD; HSZ: HSZ; psz: PWideChar;
  506.   Max: DWORD; CodePage: Integer): DWORD; stdcall;
  507. {$EXTERNALSYM DdeQueryString}
  508. function DdeQueryString(Inst: DWORD; HSZ: HSZ; psz: PChar;
  509.   Max: DWORD; CodePage: Integer): DWORD; stdcall;
  510. {$EXTERNALSYM DdeFreeStringHandle}
  511. function DdeFreeStringHandle(Inst: DWORD; HSZ: HSZ): BOOL; stdcall;
  512. {$EXTERNALSYM DdeKeepStringHandle}
  513. function DdeKeepStringHandle(Inst: DWORD; HSZ: HSZ): BOOL; stdcall;
  514. {$EXTERNALSYM DdeCmpStringHandles}
  515. function DdeCmpStringHandles(hsz1, hsz2: HSZ): Integer; stdcall;
  516.  
  517. type
  518.   { DDEML public debugging header file info }
  519.  
  520.   {$EXTERNALSYM tagDDEML_MSG_HOOK_DATA}
  521.   tagDDEML_MSG_HOOK_DATA = packed record  { new for NT }
  522.     uiLo: UINT;      { unpacked lo and hi parts of lParam }
  523.     uiHi: UINT;
  524.     cbData: DWORD;   { amount of data in message, if any. May be > than 32 bytes. }
  525.     Data: array [0..7] of DWORD; { data peeking by DDESPY is limited to 32 bytes. }
  526.   end;
  527.   TDdemlMsgHookData = tagDDEML_MSG_HOOK_DATA;
  528.   {$EXTERNALSYM DDEML_MSG_HOOK_DATA}
  529.   DDEML_MSG_HOOK_DATA = tagDDEML_MSG_HOOK_DATA;
  530.  
  531.   {$EXTERNALSYM tagMONMSGSTRUCT}
  532.   tagMONMSGSTRUCT = packed record
  533.     cb: UINT;
  534.     hWndTo: HWND;
  535.     dwTime: DWORD;
  536.     hTask: THandle;
  537.     wMsg: UINT;
  538.     wParam: WPARAM;
  539.     lParam: LPARAM;
  540.     dmhd: TDdemlMsgHookData;
  541.   end;
  542.   TMonMsgStruct = tagMONMSGSTRUCT;
  543.   {$EXTERNALSYM MONMSGSTRUCT}
  544.   MONMSGSTRUCT = tagMONMSGSTRUCT;
  545.  
  546.   {$EXTERNALSYM tagMONCBSTRUCT}
  547.   tagMONCBSTRUCT = packed record
  548.     cb: UINT;
  549.     dwTime: DWORD;
  550.     hTask: THandle;
  551.     dwRet: DWORD;
  552.     wType: UINT;
  553.     wFmt: UINT;
  554.     hConv: HConv;
  555.     hsz1: HSZ;
  556.     hsz2: HSZ;
  557.     hData: HDDEData;
  558.     dwData1: DWORD;
  559.     dwData2: DWORD;
  560.     cc: TConvContext;  { new for NT for XTYP_CONNECT callbacks }
  561.     cbData: DWORD;     { new for NT for data peeking }
  562.     Data: array [0..7] of DWORD; { new for NT for data peeking }
  563.   end;
  564.   TMonCBStruct = tagMONCBSTRUCT;
  565.   {$EXTERNALSYM MONCBSTRUCT}
  566.   MONCBSTRUCT = tagMONCBSTRUCT;
  567.  
  568.   {$EXTERNALSYM tagMONHSZSTRUCTA}
  569.   tagMONHSZSTRUCTA = record
  570.     cb: UINT;
  571.     fsAction: BOOL;    { mh_ value }
  572.     dwTime: DWORD;
  573.     HSZ: HSZ;
  574.     hTask: THandle;
  575.     wReserved: UINT;
  576.     Str: array[0..0] of AnsiChar;
  577.   end;
  578.   {$EXTERNALSYM tagMONHSZSTRUCTW}
  579.   tagMONHSZSTRUCTW = record
  580.     cb: UINT;
  581.     fsAction: BOOL;    { mh_ value }
  582.     dwTime: DWORD;
  583.     HSZ: HSZ;
  584.     hTask: THandle;
  585.     wReserved: UINT;
  586.     Str: array[0..0] of WideChar;
  587.   end;
  588.   {$EXTERNALSYM tagMONHSZSTRUCT}
  589.   tagMONHSZSTRUCT = tagMONHSZSTRUCTA;
  590.   TMonHSZStructA = tagMONHSZSTRUCTA;
  591.   TMonHSZStructW = tagMONHSZSTRUCTW;
  592.   TMonHSZStruct = TMonHSZStructA;
  593.   {$EXTERNALSYM MONHSZSTRUCTA}
  594.   MONHSZSTRUCTA = tagMONHSZSTRUCTA;
  595.   {$EXTERNALSYM MONHSZSTRUCTW}
  596.   MONHSZSTRUCTW = tagMONHSZSTRUCTW;
  597.   {$EXTERNALSYM MONHSZSTRUCT}
  598.   MONHSZSTRUCT = MONHSZSTRUCTA;
  599.  
  600. const
  601.   {$EXTERNALSYM MH_CREATE}
  602.   MH_CREATE = 1;
  603.   {$EXTERNALSYM MH_KEEP}
  604.   MH_KEEP = 2;
  605.   {$EXTERNALSYM MH_DELETE}
  606.   MH_DELETE = 3;
  607.   {$EXTERNALSYM MH_CLEANUP}
  608.   MH_CLEANUP = 4;
  609.  
  610. type
  611.   PMonErrStruct = ^TMonErrStruct;
  612.   {$EXTERNALSYM tagMONERRSTRUCT}
  613.   tagMONERRSTRUCT = packed record
  614.     cb: UINT;
  615.     wLastError: UINT;
  616.     dwTime: DWORD;
  617.     hTask: THandle;
  618.   end;
  619.   TMonErrStruct = tagMONERRSTRUCT;
  620.   {$EXTERNALSYM MONERRSTRUCT}
  621.   MONERRSTRUCT = tagMONERRSTRUCT;
  622.  
  623.   PMonLinkStruct = ^TMonLinkStruct;
  624.   {$EXTERNALSYM tagMONLINKSTRUCT}
  625.   tagMONLINKSTRUCT = packed record
  626.     cb: UINT;
  627.     dwTime: DWORD;
  628.     hTask: THandle;
  629.     fEstablished: BOOL;
  630.     fNoData: BOOL;
  631.     hszSvc: HSz;
  632.     hszTopic: HSz;
  633.     hszItem: HSz;
  634.     wFmt: UINT;
  635.     fServer: BOOL;
  636.     hConvServer: HConv;
  637.     hConvClient: HConv;
  638.   end;
  639.   TMonLinkStruct = tagMONLINKSTRUCT;
  640.   {$EXTERNALSYM MONLINKSTRUCT}
  641.   MONLINKSTRUCT = tagMONLINKSTRUCT;
  642.  
  643.   PMonConvStruct = ^TMonConvStruct;
  644.   {$EXTERNALSYM tagMONCONVSTRUCT}
  645.   tagMONCONVSTRUCT = packed record
  646.     cb: UINT;
  647.     fConnect: BOOL;
  648.     dwTime: DWORD;
  649.     hTask: THandle;
  650.     hszSvc: HSz;
  651.     hszTopic: HSz;
  652.     hConvClient: HConv;
  653.     hConvServer: HConv;
  654.   end;
  655.   TMonConvStruct = tagMONCONVSTRUCT;
  656.   {$EXTERNALSYM MONCONVSTRUCT}
  657.   MONCONVSTRUCT = tagMONCONVSTRUCT;
  658.  
  659. const
  660.   {$EXTERNALSYM MAX_MONITORS}
  661.   MAX_MONITORS = 4;
  662.   {$EXTERNALSYM APPCLASS_MONITOR}
  663.   APPCLASS_MONITOR = 1;
  664.   {$EXTERNALSYM XTYP_MONITOR}
  665.   XTYP_MONITOR = $00F0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  666.  
  667. { Callback filter flags for use with MONITOR apps - 0 implies no monitor
  668.   callbacks. }
  669.  
  670. const
  671.   {$EXTERNALSYM MF_HSZ_INFO}
  672.   MF_HSZ_INFO = $01000000;
  673.   {$EXTERNALSYM MF_SENDMSGS}
  674.   MF_SENDMSGS = $02000000;
  675.   {$EXTERNALSYM MF_POSTMSGS}
  676.   MF_POSTMSGS = $04000000;
  677.   {$EXTERNALSYM MF_CALLBACKS}
  678.   MF_CALLBACKS = $08000000;
  679.   {$EXTERNALSYM MF_ERRORS}
  680.   MF_ERRORS = $10000000;
  681.   {$EXTERNALSYM MF_LINKS}
  682.   MF_LINKS = $20000000;
  683.   {$EXTERNALSYM MF_CONV}
  684.   MF_CONV = $40000000;
  685.  
  686.  
  687.   ddelib = 'user32.dll';
  688.  
  689. implementation
  690.  
  691. function DdeInitializeA;         external ddelib name 'DdeInitializeA';
  692. function DdeInitializeW;         external ddelib name 'DdeInitializeW';
  693. function DdeInitialize;         external ddelib name 'DdeInitializeA';
  694. function DdeUninitialize;          external ddelib name 'DdeUninitialize';
  695. function DdeConnectList;           external ddelib name 'DdeConnectList';
  696. function DdeQueryNextServer;       external ddelib name 'DdeQueryNextServer';
  697. function DdeDisconnectList;        external ddelib name 'DdeDisconnectList';
  698. function DdeConnect;               external ddelib name 'DdeConnect';
  699. function DdeDisconnect;            external ddelib name 'DdeDisconnect';
  700. function DdeReconnect;             external ddelib name 'DdeReconnect';
  701. function DdeQueryConvInfo;         external ddelib name 'DdeQueryConvInfo';
  702. function DdeSetUserHandle;         external ddelib name 'DdeSetUserHandle';
  703. function DdeAbandonTransaction;    external ddelib name 'DdeAbandonTransaction';
  704. function DdePostAdvise;            external ddelib name 'DdePostAdvise';
  705. function DdeEnableCallback;        external ddelib name 'DdeEnableCallback';
  706. function DdeNameService;           external ddelib name 'DdeNameService';
  707. function DdeClientTransaction;     external ddelib name 'DdeClientTransaction';
  708. function DdeCreateDataHandle;      external ddelib name 'DdeCreateDataHandle';
  709. function DdeAddData;               external ddelib name 'DdeAddData';
  710. function DdeGetData;               external ddelib name 'DdeGetData';
  711. function DdeAccessData;            external ddelib name 'DdeAccessData';
  712. function DdeUnaccessData;          external ddelib name 'DdeUnaccessData';
  713. function DdeFreeDataHandle;        external ddelib name 'DdeFreeDataHandle';
  714. function DdeGetLastError;          external ddelib name 'DdeGetLastError';
  715. function DdeCreateStringHandleA; external ddelib name 'DdeCreateStringHandleA';
  716. function DdeCreateStringHandleW; external ddelib name 'DdeCreateStringHandleW';
  717. function DdeCreateStringHandle; external ddelib name 'DdeCreateStringHandleA';
  718. function DdeQueryStringA;        external ddelib name 'DdeQueryStringA';
  719. function DdeQueryStringW;        external ddelib name 'DdeQueryStringW';
  720. function DdeQueryString;        external ddelib name 'DdeQueryStringA';
  721. function DdeFreeStringHandle;      external ddelib name 'DdeFreeStringHandle';
  722. function DdeKeepStringHandle;      external ddelib name 'DdeKeepStringHandle';
  723. function DdeCmpStringHandles;      external ddelib name 'DdeCmpStringHandles';
  724.  
  725. end.
  726.