home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 February / PCWorld_2001-02_cd.bin / Software / Vyzkuste / visirc / vircdde.txt < prev    next >
Text File  |  1997-09-01  |  3KB  |  97 lines

  1. Visual IRC '96/'97's DDE interface (0.65 and above)
  2. ===================================================
  3.  
  4. IMPORTANT NOTE!! This has changed EXTENSIVELY in 0.65. Your old DDE stuff
  5. will not work.
  6.  
  7. ViRC '97 currently supports two types of DDE requests: IRC_ParseVars and
  8. IRC_Execute. IRC_ParseVars evaluates an expression, parsing the variables
  9. and functions out, and IRC_Execute causes ViRC '97 to execute an IRC
  10. command as if it were typed at the keyboard. Thus "front-end" programs can
  11. be written to control ViRC '97. This is, of course, a very powerful
  12. capability.
  13.  
  14. Usage examples
  15. --------------
  16.  
  17. The first lot of examples provided are written in Visual Basic, and, at
  18. the bottom of this file, you'll also find some routines to show how this
  19. can be done in Delphi. The technique should be easy to do in C++ too.
  20.  
  21. IRC_ParseVars
  22. -------------
  23.  
  24. Create a label on a VB form and call it txDDE. Then execute the following
  25. code:
  26.  
  27.   txDDE.LinkTopic = "VIRC96|DDE"
  28.   txDDE.LinkItem = "IRC_ParseVars"
  29.   txDDE.LinkMode = 1
  30.   txDDE.LinkExecute "$rand(100)"
  31.  
  32. The will parse the text $rand(100), returning a random number between 0 and
  33. 99, and setting the caption of txDDE to the returned random number.
  34.  
  35. You can return the value of any text, for example, you could use the
  36. following code:
  37.  
  38.   txDDE.LinkTopic = "VIRC96|DDE"
  39.   txDDE.LinkItem = "IRC_ParseVars"
  40.   txDDE.LinkMode = 1
  41.   txDDE.LinkExecute "My nickname is $N."
  42.  
  43. This would return the string "My nickname is <your nickname>".
  44.  
  45. IRC_Execute
  46. -----------
  47.  
  48. Causes ViRC '96 to execute an IRC command, as if it were entered at the
  49. keyboard. Example:
  50.  
  51.   txDDE.LinkTopic = "VIRC96|IRC_Execute"
  52.   txDDE.LinkMode = 2
  53.   txDDE.LinkExecute "Join #quake"
  54.  
  55. This will make ViRC '96 join the channel #quake. Any valid IRC command
  56. may be placed in the LinkExecute field.
  57.  
  58. Examples for Delphi 1.0/2.0/3.0
  59. ===============================
  60.  
  61. // This routine takes a string (which may contain ViRC '97 variables and
  62. // functions) and uses ViRC '97 to evaluate it using DDE.
  63. //
  64. // Example: ShowMessage(ViRC97_ParseString('I''m running ViRC ''97 version $ver.'));
  65.  
  66. function ViRC97_ParseString(x: string): string;
  67. var
  68.   ddeC: TDDEClientConv;
  69.   ddeI: TDDEClientItem;
  70. begin
  71.   ddeC := TDDEClientConv.Create(nil);
  72.   ddeI := TDDEClientItem.Create(nil);
  73.   ddeI.DDEConv := ddeC;
  74.   if (ddeC.SetLink('VIRC97', 'DDE')) then
  75.   begin
  76.     ddeI.DdeItem := 'IRC_ParseVars';
  77.     ddeC.ExecuteMacro(PChar(x), True);
  78.     Result := ddeI.Text;
  79.   end;
  80.   ddeC.Free;
  81.   ddeI.Free;
  82. end;
  83.  
  84. // This routine executes a single ViRC '97 command.
  85. //
  86. // Example: ViRC97_Execute('MessageBox ViRC ''97 says "Hello" by DDE!!');
  87.  
  88. procedure ViRC97_Execute(x: string);
  89. var
  90.   ddeC: TDDEClientConv;
  91. begin
  92.   ddeC := TDDEClientConv.Create(nil);
  93.   if (ddeC.SetLink('VIRC97', 'IRC_Execute')) then
  94.      ddeC.ExecuteMacro(PChar(x), True);
  95.   ddeC.Free;
  96. end;
  97.