home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 May / PCWorld_2007-05_cd.bin / system / samurize / samurize_1.64.3_2.exe / plugins / InputSDKExample.dpr < prev    next >
Text File  |  2005-02-09  |  8KB  |  205 lines

  1. library InputSDKExample;
  2.  
  3. { Important note about DLL memory management: ShareMem must be the
  4.   first unit in your library's USES clause AND your project's (select
  5.   Project-View Source) USES clause if your DLL exports any procedures or
  6.   functions that pass strings as parameters or function results. This
  7.   applies to all strings passed to and from your DLL--even those that
  8.   are nested in records and classes. ShareMem is the interface unit to
  9.   the BORLNDMM.DLL shared memory manager, which must be deployed along
  10.   with your DLL. To avoid using BORLNDMM.DLL, pass string information
  11.   using PChar or ShortString parameters. }
  12.  
  13. uses
  14.   SysUtils,
  15.   Classes,
  16.   Windows,
  17.   Commctrl;
  18.  
  19. {$R *.res}
  20.  
  21. var
  22.   SomeTextOutput : String;
  23.   Samurize       : HWND;
  24.  
  25. // dllstartup() is called every time Samurize creates a meter that uses this plugin.
  26. // The 'hwnd' parameter is the window handle of the instance of Samurize that called this function.
  27. // 'hwnd' will be 0 if called from the config editor.
  28. // The 'dlltype' parameter indicates the meter 'type' (1 for source plugins, 2 for visual plugins)
  29. // that is currently initialized.
  30. // This function should return a unique integer ID that Samurize remembers and uses for other functions
  31. // (this is so multiple instances of Samurize that use this do not conflict).
  32. //
  33. // Any memory allocation needed on a meter-by-meter basis should be done in this function.
  34. //
  35. // If your plugin is very simple and does not need to keep any global variables that may cause conflicts,
  36. // just return 0 (or omit this function).
  37. function dllStartup(hwnd : HWND; dlltype : Integer):Integer;stdcall;
  38. begin
  39.   //This example has an if statement to work out which parameters to initialise
  40.   //Type 1 is the source plugin section and that returns an integer and setups
  41.   //the SomeTextOutput (A global variable)
  42.   if dlltype = 1 then begin
  43.     Result := 234234234;
  44.     SomeTextOutput := 'InputTest';
  45.   end else if dlltype = 4 then begin
  46.     //Type 4 is the Input SDK type and this allocates the samurize HWND and
  47.     //also returns a number.  NB: the numbers returned should be unique this
  48.     //plugin will only run once happy with one instance of it.
  49.     Samurize := hwnd;
  50.     Result := 19;
  51.   end;
  52. end;
  53.  
  54. // dllshutdown() is called every time a meter is destroyed by Samurize.
  55. // The 'id' parameter is the uniqueID your plugin assigned to the meter (returned by dllstartup)
  56. // This function should always return 0.
  57. //
  58. // Any memory releasing needed on a meter-by-meter basis should be done in this function.
  59. //
  60. // If your plugin does not need to free any memory, this function may be omitted.
  61. function dllShutdown(id : Integer):Integer;stdcall;
  62. begin
  63.   Result := 0;
  64. end;
  65.  
  66. function Init():PChar;stdcall;
  67. begin
  68.     // ok here you will return the list of the functions, separated by 
  69.     // a | if there are more than one like
  70.     // that somefunc|someotherfunc|alastfunc
  71.   Result:= 'TestFunction';
  72. end;
  73.  
  74. //Samurize GetParam, returns a list of the parameters that each function needs
  75. Function GetParam(func: PChar):PChar;stdcall;
  76. begin
  77.     //here you should have an if statement or a case to determnie what was function asking for params
  78.     //the func param is the config editor asking for the parameter list of a funcion
  79.     //so return the tex separated by | and this time it must finish with a |
  80.     //ie : param1|param2|
  81.     //or must be empty like in this template when there are no parameters
  82.   Result := '';
  83. end;
  84.  
  85. // getinfo() should return information about your plugin depending on the passed integer value.
  86. // 0: Plugin name
  87. // 1: Author name
  88. // 2: Plugin version
  89. // 3: Creation date
  90. // 4: Last modified date
  91. // 5: Website
  92. // 6: Contact email address
  93. //
  94. // This information is displayed when the 'About' button is pressed in the config editor when your plugin
  95. // is selected.
  96. //
  97. // This function is optional.
  98. function GetInfo(infonum : Integer):PChar;stdcall;
  99. begin
  100.     //called by samurize to display something useful in the about dialog.
  101.     case infonum of
  102.         0: result := 'Input SDK Sample Version 1';
  103.         1: result := 'AdamC';
  104.         2: result := '1.0.0.0';
  105.         3: result := '09/02/05';
  106.         4: result := '09/02/05';
  107.         5: result := 'http://www.adamcoulthard.co.uk';
  108.         6: result := 'adamc@samurize.com';
  109.         else result := ''
  110.   end;
  111. end;
  112.  
  113. // DLLType: Tells Samurize what type of plugin this is.
  114. // because this dlltype() function is declared, Samurize will assume you are using the SDK v2.0;
  115. //     * All functions will be called with an additional first parameter, the meter's unique_id
  116. //
  117. // Omit the dlltype() function to use the old SDK (the uniqueID will be omitted)
  118. //
  119. // The value you should return is a summation of any or all of the following values:
  120. // 1: Source plugin
  121. // 2: Visual plugin
  122. // 4: Input plugin
  123. function dllType():Integer;stdcall;
  124. begin
  125.   result := 5;
  126.     // you can also have a source plugin and a visual plugin in the same dll,
  127.     // if so, return the sum of the plugin type numbers (that would be 3)
  128. end;
  129.  
  130. //Standard Source function, returns an text value back to samurize for display
  131. function TestFunction(id : Integer):PChar;stdcall;
  132. begin
  133.   Result := PChar(SomeTextOutput);
  134. end;
  135.  
  136. //ActionsProvided method
  137. function ActionsProvided():PChar;stdcall;
  138. begin
  139.   //This method should return a string which contains the list of actions that you
  140.   //support in your plugin.  If you dont return the list them samurize will not call
  141.   //your plugin. (This method is similar to the init and GetParam methods)
  142.   //This ActionsProvided returns a value of
  143.   //
  144.   //5001|5002|5010|5011|5020|
  145.   Result := PChar(IntToStr(5001) + '|' + IntToStr(5002) + '|' + IntToStr(5010) + '|' + IntToStr(5011) + '|' + IntToStr(5020) + '|');
  146. end;
  147. //action() is called when ever an action occurs for example left click.
  148. //Your plugin can cope with all the actions or a subset of actions.  However
  149. //your plugin must not assume that the user has assigned it to the correct
  150. //action, and should perform a check before processing the command.
  151.  
  152. //Parameters:
  153. //id - the unique ID assigned to the meter by the dllstartup() function
  154. //action - this is an integer representing the action that has occurred, samurize
  155. //         online help for the full list of actions
  156. //sourcepluginid - id of the plugin source associated with this meter, 0 if no meter is associated</li>
  157. //outputpluginid - id of the plugin output associated with this meter, 0 if no meter is associated</li>
  158. //X              - X location of the mouse click
  159. //Y              - Y Location of the mouse click
  160. //left           - Meter Location value - Left
  161. //top            - Meter Location value - Top
  162. //right          - Meter Location value - Right
  163. //bottom         - Meter Location value - Bottom
  164. //files - This is only used when a 5020 action occurs, it provides the plugin
  165. //        with a list of file names separated by a |
  166. function Action(id : Integer; Action : Integer; SourceUniqueID : Integer; OutputUniqueID : Integer; X : Integer; Y : Integer; left : Integer; top : Integer; right : Integer; bottom : Integer; Files : PChar) : Integer;stdcall;
  167. begin
  168.   //Left Mouse Click
  169.   if Action = 5001 then begin
  170.     SomeTextOutput := 'Left Mouse was clicked X is ' + IntToStr(X) + ' Y is ' + IntToStr(Y);
  171.   //Right Mouse Click
  172.   end else if Action = 5002 then begin
  173.     SomeTextOutput := 'Right Mouse was clicked X is ' + IntToStr(X) + ' Y is ' + IntToStr(Y);
  174.   //Mouse over Action
  175.   end else if Action = 5010 then begin
  176.     SomeTextOutput := 'Mouse over - MeterName is ' + IntToStr(SourceUniqueID);
  177.   //Mouse out Action
  178.   end else if Action = 5011 then begin
  179.     SomeTextOutput := 'Mouse out - MeterName is ' + IntToStr(SourceUniqueID);
  180.   //Drag and Drop Action
  181.   end else if Action = 5020 then begin
  182.     SomeTextOutput := files;
  183.   //No action catch just incase more actions are added and your plugin does get
  184.   //called by accident.
  185.   end else begin
  186.     SomeTextOutput := 'Action not known';
  187.   end;
  188.  
  189.   //Always return 0
  190.   Result := 0;
  191. end;
  192.  
  193. //Export the functions of the dll so that samurize can access them
  194. exports dllStartup name 'dllstartup';
  195. exports dllShutdown name 'dllshutdown';
  196. exports ActionsProvided name 'actionsprovided';
  197. exports Action name 'action';
  198. exports init name 'init';
  199. exports getparam name 'getparam';
  200. exports TestFunction name 'TestFunction';
  201. exports dlltype name 'dlltype';
  202.  
  203. begin
  204. end.
  205.