home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Corel / Ventura8 / Ventura / Scripts / GetPrivateProfileString.csc < prev    next >
Text File  |  1998-07-08  |  6KB  |  108 lines

  1. REM TEACHING SCRIPT - GetPrivateProfileString() API example [CorelSCRIPT 8]
  2. REM GetPrivateProfileString.csc  February 5, 1998
  3. REM ⌐ 1998 Corel Corporation. All rights reserved.
  4.  
  5. REM **********************************************************************
  6. REM  GENERAL INFORMATION 
  7. REM  This script demonstrates how to declare and call a function in a 
  8. REM  Dynamic Link Library (DLL). 
  9. REM 
  10. REM  To use an API, you must know the API name, and how it is declared.
  11. REM  You can find this information by using an API text viewer such as that 
  12. REM  provided with Visual Basic (Apilod32.exe)
  13. REM ***********************************************************************
  14.  
  15. REM ***********************************************************************
  16. REM  This example uses the function GetPrivateProfileString() from the 
  17. REM  windows library: Kernel32.dll. The GetPrivateProfileString() function 
  18. REM  retrieves a string from the specified section of an initialization 
  19. REM  file. As SCRIPT does not have a character data type, the string is 
  20. REM  stored in an integer array, which is then traversed byte by byte to 
  21. REM  obtain the information.
  22. REM
  23. REM    The example provided retrieves the name of the most recently opened 
  24. REM  Ventura file obtained from the [Recent File List] section of the
  25. REM  Ventura.ini file. 
  26. REM ***********************************************************************
  27.  
  28. ' Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  29. ' The above line shows the function as declared from the Visual Basic API text viewer. 
  30. ' This declaration has to be modified slightly in order to work with Corel SCRIPT.
  31. ' The SCRIPT declaration places the 'ALIAS' at the end of the declaration. 
  32.  
  33. ' BYVAL AppName AS STRING
  34.     ' The name of the section from which to retrieve information
  35.     ' To use this parameter in SCRIPT, declare it as a STRING and assign it the name of the section 
  36.     ' from which to retrieve information
  37.  
  38. ' BYVAL KeyName AS STRING
  39.     ' The name of the key whose associated string is to be retrieved
  40.     ' If this parameter is set to NULL, all key names in the specified section are copied to the buffer 
  41.     ' To obtain all key names using SCRIPT, declare this parameter as a LONG and assign it a value of 0
  42.     ' To obtain a specified string using SCRIPT, declare this parameter as a STRING and assign it the 
  43.     ' name of the key to obtain information from
  44.  
  45. ' BYVAL DefString AS STRING
  46.     ' The name of the default string; if lpKeyName cannot be found, this name is used 
  47.  
  48. ' BYREF lpReturnedString AS INTEGER
  49.     ' Pointer to the destination buffer that receives the retrieved string
  50.  
  51. ' BYVAL nSize AS LONG
  52.     ' The size of the buffer which recieves the retrieved string
  53.  
  54. ' BYVAL FileName AS STRING
  55.     ' The name of the initialization file. If the full path is not provided, Windows searches for the file 
  56.     ' in the Windows directory.
  57.  
  58. #addfol "..\..\Scripts"
  59. #include "VPConst.csi"
  60.  
  61. DECLARE FUNCTION GetPrivateProfileString Lib "kernel32"(\\
  62.     BYVAL AppName AS STRING,         \\
  63.     BYVAL KeyName AS STRING,         \\
  64.     BYVAL DefString AS STRING,        \\
  65.     BYREF lpReturnedString As INTEGER,    \\
  66.     BYVAL nSize AS LONG,            \\
  67.     BYVAL FileName AS STRING)        \\
  68. AS LONG ALIAS "GetPrivateProfileStringA" 
  69.  
  70. ' This section defines values used by the GetPrivateProfileString() function
  71. MAX_CHARS& = 256            ' Defines the size of the string to be retrieved
  72. DIM KeyName AS STRING        ' Name of the key whose associated string is to be retrieved
  73. DIM DefString AS STRING        ' Name of the default string
  74. DIM RetString AS STRING        ' The string that is created from the retrieved characters 
  75. DIM StrSize AS LONG            ' The size of the buffer which recieves the retrieved string
  76. DIM lRetValue AS LONG        ' Return value of the function: If the function succeeds, specifies the number of characters copied to the buffer
  77.                         '                        : If the function fails, returns 0
  78. DIM FileName AS STRING        ' Name of the initialization file
  79. DIM IntArray%(MAX_CHARS&/2)    ' Integer array used as a buffer for holding the retrieved string
  80. StrSize& = MAX_CHARS&        ' Initialize size of string to be retrieved
  81.  
  82. ' This section defines values used by the REGISTRYQUERY() function to obtain Ventura's root directory
  83. #DEFINE HKEY_LOCAL_MACHINE 2                ' Specifies the main registry value key to query 
  84. SubKey$ = VENTURA_REGQUERY_CONST    ' Specifies the sub registry value key to query 
  85. Value$ = "Destination"                    ' Specifies the registry value key to query
  86.  
  87. ' This section initializes variables to retrieve the name of the most recently opened Ventura file
  88. AppName$ = "Recent File List"    ' Initialize section name
  89. KeyName$ = "File1"            ' Initialize key name
  90. VenturaRoot$ = REGISTRYQUERY(HKEY_LOCAL_MACHINE,SubKey$,Value$)     ' Root directory where Ventura is installed
  91. FileName$ = VenturaRoot$ & "\Workspace\Ventura8\_default\ventura.ini"                ' Initialize initialization file; need to specify complete path 
  92.                         
  93. ' This section retrieves the name of the most recently opened Ventura file from the Ventura.ini file. 
  94. lRetValue& =  GetPrivateProfileString(AppName$, KeyName$, DefString$, IntArray%(1), StrSize&, FileName$)
  95. ' The integer array contains two characters for every element; we need to get each character separately
  96. Limit% = lRetValue&/2 + lRetValue& MOD 2    'IF lRetValue is odd, need to add one to Limit otherwise the last character is missed
  97. FOR i% = 1 TO Limit%
  98.     ' Get the character from the low byte
  99.     Char% = IntArray%(i%) AND DEC("00FF")    ' Isolate the low byte of the integer
  100.     RetString$ = RetString$ & CHR(Char%)    ' Convert integer to character
  101.     ' Get the character from the high byte
  102.     Char% = IntArray%(i%) >> 8            ' Shift right 8 bits to isolate the high byte of the integer
  103.     RetString$ = RetString$ & CHR(Char%)    ' Convert integer to character
  104. NEXT i%
  105.  
  106. MESSAGE RetString$        ' Output resulting string to screen
  107.  
  108.